");vwo\_$('head').append(\_vwo\_sel);return vwo\_$('head')\[0\] && vwo\_$('head')\[0\].lastChild;})("HEAD")}}, C\_1176295\_79\_1\_2\_1:{ fn:function(log,nonce=''){return (function(x) {var ctx=vwo\_$(x),el;
/\*vwo\_debug log("addElement","body"); vwo\_debug\*/;window.VWO.eB = false;;
el=vwo\_$("body");
el;
!el.find('\[vwo-op-1775839248681=""\], \[vwo-element-id="1775839248633"\]').length && el.vwoElement({"html":"

An icon of a close symbol

","position":"append"});window.VWO.eB = window.\_vwoCc && window.\_vwoCc.dBL ? false : true;;})("body")}}, C\_1176295\_79\_1\_2\_2:{ fn:function(log,nonce=''){return (function(x) {})("#vwo-custom-alert,body.vwo-custom-alert-active,body.vwo-custom-alert-active .navigation-v2,/\* NEW: move the subnav's layout slot down by the alert height \*/ body.vwo-custom-alert-active .sub-navigation,/\* NEW: move the sticky subnav bar below alert + nav \*/ body.vwo-custom-alert-active .sub-navigation nav,body.vwo-custom-alert-active .alert-cmp:not(#vwo-custom-alert),#vwo-custom-alert .richtext a, #vwo-custom-alert .alert-cmp\_\_richtext a,/\* hard-hide state \*/ html.vwo-custom-alert-closed #vwo-custom-alert,/\* visible native dismiss button is display-only \*/ #vwo-custom-alert .alert-cmp\_\_dismiss,/\* invisible click target on top of the X \*/ #vwo-custom-alert .vwo-custom-alert-close-hitarea")}}, GL\_1176295\_79\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){try{
window.VWO.eB = window.\_vwoCc && window.\_vwoCc.dBL ? false : true;
}catch(e){}}}, GL\_1176295\_79\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_68\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_68\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, ce69dea4730faf8\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, ce68\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, GL\_1176295\_17\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_17\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_65\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_65\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, js\_2146808382492dba3b44268fdacfd52c:{ fn:function() { return window.VWO.\_.pageId }}, GL\_1176295\_37\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, ce6983648fd44f6\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, ce6998d9a1c80e1\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, GL\_1176295\_15\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_18\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_71\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_71\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_37\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_14\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_14\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, ce6998d9a123ad0\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, GL\_1176295\_55\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_55\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, ce6982245d33d05\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 500);
 });
}
)()
 }}, ce6998d9a2dc5c1\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, ce6998d9178de17\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, GL\_1176295\_19\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_19\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, ce6998d9a363ee2\_4\_1:{ fn:function(executeTrigger, vwo\_$) {
 (// Example Code: This code will stop polling after 5 sec of dom ready (on calling executeTrigger() method)
function() {
 vwo\_$(document).ready(function () {
 // Waiting for 5 more seconds
 setTimeout(function () {
 // Call this method to stop the polling
 executeTrigger();
 }, 5000);
 });
}
)()
 }}, GL\_1176295\_15\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, C\_1176295\_21\_1\_2\_0:{ fn:function(){return (function(x) { try{

!function(){var t=new WeakSet;function e(e){if(!t.has(e)){t.add(e);var n=!1,o=new MutationObserver((function(t){t.forEach((function(t){if("attributes"===t.type&&"href"===t.attributeName){var r=new URL(e.href,window.location.origin);r.search&&!n&&(r.protocol="https:",r.pathname="/en-us/try-twilio/sendgrid-1",e.href=r.toString(),n=!0,o.disconnect())}}))}));o.observe(e,{attributes:!0,attributeFilter:\["href"\]}),setTimeout((function(){if(!n){var t=new URL(e.href,window.location.origin);t.protocol="https:",t.pathname="/en-us/try-twilio/sendgrid-1",e.href=t.toString(),n=!0,o.disconnect()}}),4e3)}}document.querySelectorAll("a\[href\*=try-twilio\]").forEach(e);var n=document.querySelector(".button-container");n&&new MutationObserver((function(t){t.forEach((function(t){t.addedNodes.forEach((function(t){1===t.nodeType&&t.matches&&t.matches("a\[href\*=try-twilio\]")&&e(t)}))}))})).observe(n,{childList:!0})}();
 return vwo\_$('head')\[0\] && vwo\_$('head')\[0\].lastChild; } catch(e) {VWO.\_.vAEH(e);} })("HEAD")}}},rules:\[{"tags":\[{"id":"metric","metricId":2133826,"data":{"campaigns":\[{"c":21,"g":2}\],"type":"m"}}\],"triggers":\["22282384"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.14"}\],"triggers":\["22258039","22861954"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.37"}\],"triggers":\["22404076","22404082"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.79"},{"priority":4,"id":"runCampaign","triggerIds":\["22258039","22404058"\],"data":"campaigns.55"},{"priority":4,"id":"runCampaign","triggerIds":\["22258039","22404058"\],"data":"campaigns.71"}\],"triggers":\["22258039","22404058"\]},{"tags":\[{"id":"metric","metricId":2144926,"data":{"campaigns":\[{"c":20,"g":5}\],"type":"m"}}\],"triggers":\["22282408"\]},{"tags":\[{"id":"metric","metricId":2133829,"data":{"campaigns":\[{"c":20,"g":6}\],"type":"m"}},{"metricId":2133829,"id":"metric","data":{"campaigns":\[{"c":21,"g":3}\],"type":"m"}}\],"triggers":\["22282387"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.73"}\],"triggers":\["23694104","24380510","23694113"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.15"}\],"triggers":\["22258039","22861960"\]},{"tags":\[{"id":"metric","metricId":0,"data":{"campaigns":\[{"c":37,"g":1}\],"type":"g"}}\],"triggers":\["22404085"\]},{"tags":\[{"id":"metric","metricId":0,"data":{"campaigns":\[{"c":49,"g":1}\],"type":"g"}}\],"triggers":\["22404118"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.49"}\],"triggers":\["22258039","22404115"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.16"}\],"triggers":\["22258039","22861966"\]},{"tags":\[{"id":"metric","metricId":2144920,"data":{"campaigns":\[{"c":21,"g":4}\],"type":"m"}}\],"triggers":\["22282390"\]},{"tags":\[{"id":"metric","metricId":2144929,"data":{"campaigns":\[{"c":69,"g":2}\],"type":"m"}},{"metricId":2144929,"id":"metric","data":{"campaigns":\[{"c":55,"g":2}\],"type":"m"}},{"metricId":2144929,"id":"metric","data":{"campaigns":\[{"c":71,"g":2}\],"type":"m"}}\],"triggers":\["22403941"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.68"}\],"triggers":\["23502696","24280439","23502705"\]},{"tags":\[{"id":"metric","metricId":0,"data":{"campaigns":\[{"c":65,"g":2}\],"type":"g"}}\],"triggers":\["23369343"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.21"}\],"triggers":\["22374862","22374868"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.20"}\],"triggers":\["22374853","22374859"\]},{"tags":\[{"id":"metric","metricId":2144923,"data":{"campaigns":\[{"c":20,"g":4}\],"type":"m"}}\],"triggers":\["22282405"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.18"}\],"triggers":\["22258039","22861978"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.65"}\],"triggers":\["22258039","23046616","23046619"\]},{"tags":\[{"id":"metric","metricId":2289942,"data":{"campaigns":\[{"c":73,"g":1}\],"type":"m"}},{"metricId":2289942,"id":"metric","data":{"campaigns":\[{"c":68,"g":1}\],"type":"m"}}\],"triggers":\["23501736"\]},{"tags":\[{"id":"metric","metricId":2133724,"data":{"campaigns":\[{"c":73,"g":2}\],"type":"m"}},{"metricId":2133724,"id":"metric","data":{"campaigns":\[{"c":68,"g":2}\],"type":"m"}},{"metricId":2133724,"id":"metric","data":{"campaigns":\[{"c":20,"g":1}\],"type":"m"}},{"metricId":2133724,"id":"metric","data":{"campaigns":\[{"c":21,"g":1}\],"type":"m"}}\],"triggers":\["22282381"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.17"}\],"triggers":\["22258039","22861972"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.69"}\],"triggers":\["22258039","23364864"\]},{"tags":\[{"id":"metric","metricId":2133583,"data":{"campaigns":\[{"c":14,"g":1}\],"type":"m"}},{"metricId":2133583,"id":"metric","data":{"campaigns":\[{"c":16,"g":1}\],"type":"m"}},{"metricId":2133583,"id":"metric","data":{"campaigns":\[{"c":17,"g":1}\],"type":"m"}},{"metricId":2133583,"id":"metric","data":{"campaigns":\[{"c":18,"g":1}\],"type":"m"}},{"metricId":2133583,"id":"metric","data":{"campaigns":\[{"c":19,"g":1}\],"type":"m"}},{"metricId":2133583,"id":"metric","data":{"campaigns":\[{"c":15,"g":1}\],"type":"m"}}\],"triggers":\["22277422"\]},{"tags":\[{"priority":4,"id":"runCampaign","data":"campaigns.19"}\],"triggers":\["22258039","22861936"\]},{"tags":\[{"id":"metric","metricId":2373278,"data":{"campaigns":\[{"c":79,"g":1}\],"type":"m"}}\],"triggers":\["24140030"\]},{"tags":\[{"id":"runTestCampaign"}\],"triggers":\["2"\]},{"tags":\[{"priority":3,"id":"revaluateHiding"}\],"triggers":\["11"\]},{"tags":\[{"id":"urlChange"}\],"triggers":\["75"\]},{"tags":\[{"id":"checkEnvironment"}\],"triggers":\["5"\]},{"tags":\[{"priority":3,"id":"prePostMutation"},{"priority":2,"id":"groupCampaigns"}\],"triggers":\["8"\]},{"tags":\[{"priority":2,"id":"visibilityService"}\],"triggers":\["9"\]}\],pages:{"ec":\[{"3172225":{"inc":\["o",\["url","urlReg","(?i).\*"\]\]}},{"3185047":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/try\\\-twilio\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185047":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/try\\\-twilio\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3387731":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us.\*"\],\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/de\\\-de.\*"\],\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/fr\\\-fr.\*"\],\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/es\\\-mx.\*"\],\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/pt\\\-br.\*"\],\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/ja\\\-jp.\*"\]\]}},{"3239299":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/products\\\\\/email\\\-api\\\\\/?(?:\[\\\?#\].\*)?$"\],\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/products\\\\\/email\\\-api\\\\\/pricing\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185059":{"inc":\["o",\["url","urlReg","(?i).\*https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us.\*"\]\],"exc":\["o",\["url","urlReg","(?i)^\\/(?!en-us\\/(customer-data-platform\|pricing\\/customer-data(\\/connections\|\\/customer-data-platform)?\|pricing\\/email-api\|pricing\\/marketing-campaigns\|products\\/(connections(\\/(functions\|reverse-etl\|warehouses))?\|email-api(\\/(deliverability-insights\|dynamic-email-templates\|email-address-validation-api\|email-testing-for-dynamic-templates\|smtp-service))?\|engage(\\/(audiences\|journeys))?\|marketing-campaigns(\\/(automation\|email-design\|email-list-management\|email-statistics\|email-templates\|email-testing\|signup-forms))?\|protocols\|unify(\\/profiles-sync)?)\|use-cases\\/(activate-customer-data\|boost-cross-sell-upsell\|customer-acquisition-activation\|customer-data-management-integration\|customer-insights\|enrich-customer-profiles\|optimize-ad-spend\|retain-customers-increase-ltv\|segmentation-audience-activation\|single-customer-view))\\/?$).\*"\]\]}},{"3185047":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/try\\\-twilio\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185053":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/try\\\-twilio\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185056":{"inc":\["o",\["url","urlReg","(?i)^https?.\*\\\:\\\\\/(w{3}\\\.)?\\\\\/signup\\\.sendgrid\\\.com.\*$"\]\]}},{"3185050":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/try\\\-twilio\\\\\/sendgrid\\\-2\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185047":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/try\\\-twilio\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185062":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/login\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185056":{"inc":\["o",\["url","urlReg","(?i)^https?.\*\\\:\\\\\/(w{3}\\\.)?\\\\\/signup\\\.sendgrid\\\.com.\*$"\]\]}},{"3185065":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/try\\\-twilio\\\\\/sendgrid\\\-1\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}}\]},pagesEval:{"ec":\[3172225,3387731,3239299,3185059\]},stags:{},domPath:{}}})();if(typeof window!=="undefined"&&window.\_vwoFlow==="link-survey"){window.VWO.\_.rCS()}
;if(typeof heatmapDevice!=="undefined"&&heatmapDevice&&VWO.\_.allSettings&&VWO.\_.allSettings.dataStore.plugins.UA){VWO.\_.allSettings.dataStore.plugins.UA.dt=heatmapDevice};var commonWrapper=function(argument){if(!argument){argument={valuesGetter:function(){return{}},valuesSetter:function(){},verifyData:function(){return{}}}}var getVisitorUuid=function(){if(window.\_vwo\_acc\_id>=1037725){return window.VWO&&window.VWO.get("visitor.id")}else{return window.VWO.\_&&window.VWO.\_.cookies&&window.VWO.\_.cookies.get("\_vwo\_uuid")}};var pollInterval=100;var timeout=6e4;return function(){var accountIntegrationSettings={};var \_interval=null;function waitForAnalyticsVariables(){try{accountIntegrationSettings=argument.valuesGetter();accountIntegrationSettings.visitorUuid=getVisitorUuid()}catch(error){accountIntegrationSettings=undefined}if(accountIntegrationSettings&&argument.verifyData(accountIntegrationSettings)){argument.valuesSetter(accountIntegrationSettings);return 1}return 0}var currentTime=0;\_interval=setInterval((function(){currentTime=currentTime\|\|performance.now();var result=waitForAnalyticsVariables();if(result\|\|performance.now()-currentTime>=timeout){clearInterval(\_interval)}}),pollInterval)}};
 commonWrapper({valuesGetter:function(){return{}},valuesSetter:function(data){var ga4\_device\_id="";if(typeof window.VWO.\_.cookies!=="undefined"){ga4\_device\_id=window.VWO.\_.cookies.get("\_ga")\|\|""}if(ga4\_device\_id){window.vwo\_ga4\_uuid=ga4\_device\_id.split(".").slice(-2).join(".")}},verifyData:function(data){if(typeof window.VWO.\_.cookies!=="undefined"){return window.VWO.\_.cookies.get("\_ga")\|\|""}else{return false}}})();
 var pushBasedCommonWrapper=function(argument){var firedCamp={};var defaultArgument={integrationName:"",getExperimentList:function(){return\[\]},accountSettings:function(){return{}},getCampaignSettings:function(){return{}},pushData:function(){return false}};argument=argument\|\|{};for(var key in defaultArgument){if(!argument\[key\]){argument\[key\]=defaultArgument\[key\]}}return function(){window.VWO=window.VWO\|\|\[\];var getVisitorUuid=function(){if(window.\_vwo\_acc\_id>=1037725){return window.VWO&&window.VWO.get("visitor.id")}else{return window.VWO.\_&&window.VWO.\_.cookies&&window.VWO.\_.cookies.get("\_vwo\_uuid")}};var sendDebugLogsOld=function(expId,variationId,errorType,user\_type,data){try{var errorPayload={f:argument\["integrationName"\]\|\|"",a:window.\_vwo\_acc\_id,url:window.location.href,exp:expId,v:variationId,vwo\_uuid:getVisitorUuid(),user\_type:user\_type};if(errorType=="initIntegrationCallback"){errorPayload\["log\_type"\]="initIntegrationCallback";errorPayload\["data"\]=JSON.stringify(data\|\|"")}else if(errorType=="timeout"){errorPayload\["timeout"\]=true}if(window.VWO.\_.customError){window.VWO.\_.customError({msg:"integration debug",url:window.location.href,lineno:"",colno:"",source:JSON.stringify(errorPayload)})}}catch(e){window.VWO.\_.customError&&window.VWO.\_.customError({msg:"integration debug failed",url:"",lineno:"",colno:"",source:""})}};var sendDebugLogs=function(expId,variationId,errorType,user\_type){var eventName="vwo\_debugLogs";var eventPayload={};try{eventPayload={intName:argument\["integrationName"\]\|\|"",varId:variationId,expId:expId,type:errorType,vwo\_uuid:getVisitorUuid(),user\_type:user\_type};if(window.VWO.\_.event){window.VWO.\_.event(eventName,eventPayload,{enableLogs:1})}}catch(e){eventPayload={msg:"integration event log failed",url:window.location.href};window.VWO.\_.event&&window.VWO.\_.event(eventName,eventPayload)}};var triggerConnector=function(cData){var expId=cData.expId,variationId=cData.variationId,visitorUuid=cData.visitorUuid,connectS=cData.connectS,repeated=cData.repeated;var experimentList=argument.getExperimentList();var cId=connectS.cId;var singleCall=connectS.singleCall\|\|0;var debug=connectS.debug\|\|0;var integrationName=argument\["integrationName"\]\|\|"vwo";firedCamp\[expId\]=firedCamp\[expId\]\|\|{};if(singleCall&&(repeated==="vS"\|\|repeated==="vSS")\|\|firedCamp\[expId\]\[cId\]){return}if(debug){sendDebugLogs(expId,variationId,"intCallTriggered",repeated);sendDebugLogsOld(expId,variationId,"initIntegrationCallback",repeated)}if(experimentList.indexOf(+expId)!==-1){firedCamp\[expId\]\[cId\]=variationId;var pollInterval=100;var currentTime=0;var timeout=6e4;var user\_type=\_vwo\_exp\[expId\].exec?"vwo-retry":"vwo-new";var interval=setInterval((function(){window.expList=window.expList\|\|{};window.expList\[integrationName\]=window.expList\[integrationName\]\|\|{};window.expList\[integrationName\]\[cId\]=window.expList\[integrationName\]\[cId\]\|\|\[\];if(window.expList\[integrationName\]\[cId\].indexOf(expId)!==-1){clearInterval(interval);return}currentTime=currentTime\|\|performance.now();var toClearInterval=argument.pushData(expId,variationId,visitorUuid,connectS);if(debug&&toClearInterval){sendDebugLogsOld(expId,variationId,"",user\_type);sendDebugLogs(expId,variationId,"intDataPushed",user\_type)}var isTimeout=performance.now()-currentTime>=timeout;if(isTimeout&&debug){sendDebugLogsOld(expId,variationId,"timeout",user\_type);sendDebugLogs(expId,variationId,"intTimeout",user\_type)}if(toClearInterval\|\|isTimeout){clearInterval(interval)}if(toClearInterval){window.expList\[integrationName\]\[cId\].push(expId)}}),pollInterval\|\|100)}};var callbackFn=function(data){if(!data)return;var expId=data\[1\],variationId=data\[2\],repeated=data\[0\];var visitorUuid=getVisitorUuid();var accountSettings=argument.accountSettings();var allCampaignSettings=argument.getCampaignSettings();var connectors=allCampaignSettings\["connectors"\];if(typeof connectors==="undefined"\|\|connectors===null){connectors=\[accountSettings\]}var pushSettings=allCampaignSettings\["push"\]\|\|{};var campaignConnectors=pushSettings\[expId\]\|\|\[0\];var connectCampSettings=campaignConnectors.map(id=>({...connectors\[id\],cId:id}));if(expId&&variationId&&\["VISUAL\_AB","VISUAL","SPLIT\_URL"\].indexOf(\_vwo\_exp\[expId\].type)>-1){connectCampSettings.forEach(connectS=>{var cData={expId:expId,variationId:variationId,visitorUuid:visitorUuid,connectS:connectS,repeated:repeated};triggerConnector(cData)})}};window.VWO.push(\["onVariationApplied",callbackFn\]);window.VWO.push(\["onVariationShownSent",callbackFn\])}};
 (function(){var VWOOmniTemp={};window.VWOOmni=window.VWOOmni\|\|{};for(var key in VWOOmniTemp)Object.prototype.hasOwnProperty.call(VWOOmniTemp,key)&&(window.VWOOmni\[key\]=VWOOmniTemp\[key\]);pushBasedCommonWrapper({integrationName:"segment",getExperimentList:function(){return \[17,21,15,16,37,18,19,55,20,14,49,65,68,69,71,73,79\]},accountSettings:function(){return {"isSegment":true}},getCampaignSettings:function(){return {"push":{"44":\[172003\],"46":\[172003\],"47":\[172003\],"48":\[172003\],"63":\[172003\],"64":\[172003\],"65":\[172003\],"66":\[172003\],"67":\[172003\],"68":\[172003\],"69":\[172003\],"42":\[172003\],"49":\[172003\],"1":\[172003\],"71":\[172003\],"72":\[172003\],"73":\[172003\],"76":\[172003\],"77":\[172003\],"78":\[172003\],"79":\[172003\],"81":\[172003\],"35":\[172003\],"84":\[172003\],"86":\[172003\],"87":\[172003\],"40":\[172003\],"41":\[172003\],"34":\[172003\],"39":\[172003\],"51":\[172003\],"52":\[172003\],"53":\[172003\],"4":\[172003\],"55":\[172003\],"56":\[172003\],"7":\[172003\],"58":\[172003\],"9":\[172003\],"60":\[172003\],"11":\[172003\],"75":\[172003\],"12":\[172003\],"13":\[172003\],"14":\[172003\],"15":\[172003\],"16":\[172003\],"17":\[172003\],"18":\[172003\],"19":\[172003\],"20":\[172003\],"21":\[172003\],"10":\[172003\],"8":\[172003\],"27":\[172003\],"28":\[172003\],"29":\[172003\],"30":\[172003\],"31":\[172003\],"57":\[172003\],"2":\[172003\],"6":\[172003\],"36":\[172003\],"83":\[172003\],"5":\[172003\],"37":\[172003\],"38":\[172003\]},"connectors":{"172003":{"sendTrackCall":true,"serverSideSettings":{"webhookSecret":"","webhookUrl":""},"serverSide":false,"enableSendingInsightsData":false,"sendIdentifyCall":true}}}},pushData:function(expId,variationId,visitorUuid,config){var accountIntegrationSettings=config;var integrationContext={name:"vwo",version:"1.0.0"};var uuid=visitorUuid;var campaign=window.\_vwo\_exp&&window.\_vwo\_exp\[expId\];if(window.analytics&&campaign&&campaign.comb\_n&&campaign.comb\_n\[variationId\]){window.analytics.identify({vwoUserId:uuid});if(campaign.isAbtastyPushFormat){var paramsSegment={"Test Name":campaign.name,TestID:expId,"Variation Name":campaign.comb\_n\[variationId\],VariationID:variationId};window.analytics.track("AB Tasty",paramsSegment)}else{if(accountIntegrationSettings\["sendTrackCall"\]){var variationName=campaign.comb\_n\[variationId\];var experimentName=campaign.name;var props={experimentId:expId,experimentName:experimentName,variationId:variationId,variationName:variationName,vwoUserId:uuid};window.analytics.track("Experiment Viewed",props,{context:{integration:integrationContext}})}if(accountIntegrationSettings\["sendIdentifyCall"\]){var key="VWO-Test-ID-"+expId;var traits={};traits\[key\]=campaign.comb\_n\[variationId\];window.analytics.identify(traits)}if(accountIntegrationSettings\["trackRevenueConversionGoal"\]){window.analytics.addSourceMiddleware((function({payload:payload,next:next}){if(payload.obj.type==="track"&&payload.obj.event==="Order Completed"){const total=payload.obj.properties.total\|\|payload.obj.properties.revenue\|\|0;window.\_vis\_opt\_queue=window.\_vis\_opt\_queue\|\|\[\];window.\_vis\_opt\_queue.push((function(){window.\_vis\_opt\_revenue\_conversion(\`${total}\`)}))}next()}))}}return true}return false}})();commonWrapper({valuesGetter:function(){return window.VWO.\_.cookies.get("ajs\_user\_id")\|\|window.VWO.\_.cookies.get("ajs\_anonymous\_id")},valuesSetter:function(data){window.vwo\_segment\_uuid=data},verifyData:function(data){return data!==undefined}})();
 commonWrapper({valuesGetter:function(){return {}},valuesSetter:function(data){var ga4\_device\_id="";if(typeof window.VWO.\_.cookies!=="undefined"){ga4\_device\_id=window.VWO.\_.cookies.get("\_ga")\|\|""}if(ga4\_device\_id){window.vwo\_ga4\_uuid=ga4\_device\_id.split(".").slice(-2).join(".")}},verifyData:function(data){if(typeof window.VWO.\_.cookies!=="undefined"){return window.VWO.\_.cookies.get("\_ga")\|\|""}else{return false}}})();
 pushBasedCommonWrapper({integrationName:"GA4",getExperimentList:function(){return \[37,49,55,65,68,69,71,73,79\]},getCampaignSettings:function(){return {"push":{"72":\[171649\],"73":\[171649\],"76":\[171649\],"77":\[171649\],"78":\[171649\],"79":\[171649\],"81":\[171649\],"83":\[171649\],"36":\[171649\],"86":\[171649\],"87":\[171649\],"40":\[171649\],"41":\[171649\],"44":\[171649\],"39":\[171649\],"51":\[171649\],"46":\[171649\],"47":\[171649\],"53":\[171649\],"55":\[171649\],"56":\[171649\],"64":\[171649\],"65":\[171649\],"66":\[171649\],"75":\[171649\],"68":\[171649\],"69":\[171649\],"42":\[171649\],"49":\[171649\],"84":\[171649\],"67":\[171649\],"60":\[171649\],"31":\[171649\],"63":\[171649\],"48":\[171649\],"34":\[171649\],"85":\[171649\],"38":\[171649\],"35":\[171649\],"37":\[171649\],"71":\[171649\]},"connectors":{"171649":{"manualSetup":false,"dataVariable":""}}}},accountSettings:function(){var accountIntegrationSettings={"isSegment":true};if(accountIntegrationSettings\["debugType"\]=="ga4"&&accountIntegrationSettings\["debug"\]){accountIntegrationSettings\["debug"\]=1}else{accountIntegrationSettings\["debug"\]=0}return accountIntegrationSettings},pushData:function(expId,variationId,visitorUuid,config){var ga4Setup=config\["setupVia"\]\|\|"gtag";if(!window.gtag\|\|ga4Setup!="gtag"){return false}const campaign=window.\_vwo\_exp&&window.\_vwo\_exp\[expId\];if(campaign.isAbtastyPushFormat&&config\["measurementId"\]){var measurementId=config\["measurementId"\];window.gtag("config",measurementId);window.gtag("event","abtasty",{exp\_variant\_string:\`ABT-${expId}-${variationId}\`,abtasty\_campaign:\`\[${expId}\] ${campaign.name}\`,abtasty\_variation:\`\[${variationId}\] ${campaign.comb\_n\[variationId\]}\`,send\_to:measurementId});window.gtag("event","experience\_impression",{exp\_variant\_string:"VWO-"+expId+"-"+variationId,send\_to:measurementId});return true}else{var vwoMeasurementId=config\["measurementId"\];var eventParams={vwo\_campaign\_name:campaign.name+":"+expId,vwo\_variation\_name:campaign.comb\_n\[variationId\]+":"+variationId};var experienceImpressionParams={exp\_variant\_string:"VWO-"+expId+"-"+variationId};if(typeof vwoMeasurementId!=="undefined"&&vwoMeasurementId!==null&&vwoMeasurementId!==""){window.gtag("config",vwoMeasurementId);eventParams\["send\_to"\]=vwoMeasurementId;experienceImpressionParams\["send\_to"\]=vwoMeasurementId}window.gtag("event","VWO",eventParams);window.gtag("event","experience\_impression",experienceImpressionParams);return true}}})();pushBasedCommonWrapper({integrationName:"GA4-GTM",getExperimentList:function(){return \[37,49,55,65,68,69,71,73,79\]},getCampaignSettings:function(){return {"push":{"72":\[171649\],"73":\[171649\],"76":\[171649\],"77":\[171649\],"78":\[171649\],"79":\[171649\],"81":\[171649\],"83":\[171649\],"36":\[171649\],"86":\[171649\],"87":\[171649\],"40":\[171649\],"41":\[171649\],"44":\[171649\],"39":\[171649\],"51":\[171649\],"46":\[171649\],"47":\[171649\],"53":\[171649\],"55":\[171649\],"56":\[171649\],"64":\[171649\],"65":\[171649\],"66":\[171649\],"75":\[171649\],"68":\[171649\],"69":\[171649\],"42":\[171649\],"49":\[171649\],"84":\[171649\],"67":\[171649\],"60":\[171649\],"31":\[171649\],"63":\[171649\],"48":\[171649\],"34":\[171649\],"85":\[171649\],"38":\[171649\],"35":\[171649\],"37":\[171649\],"71":\[171649\]},"connectors":{"171649":{"manualSetup":false,"dataVariable":""}}}},accountSettings:function(){var accountIntegrationSettings={"isSegment":true};if(accountIntegrationSettings\["debugType"\]=="gtm"&&accountIntegrationSettings\["debug"\]){accountIntegrationSettings\["debug"\]=1}else{accountIntegrationSettings\["debug"\]=0}return accountIntegrationSettings},pushData:function(expId,variationId,visitorUuid,config){var ga4Setup=config\["setupVia"\]\|\|"gtm";var dataVariable=config\["dataVariable"\]\|\|"dataLayer";if(typeof window\[dataVariable\]!=="undefined"&&ga4Setup=="gtm"){window\[dataVariable\].push({event:"vwo-data-push-ga4",vwo\_exp\_variant\_string:"VWO-"+expId+"-"+variationId});return true}return false}})();
 ;})();(function(){window.VWO=window.VWO\|\|\[\];var pollInterval=100;var \_vis\_data={};var intervalObj={};var analyticsTimerObj={};var experimentListObj={};window.VWO.push(\["onVariationApplied",function(data){if(!data){return}var expId=data\[1\],variationId=data\[2\];if(expId&&variationId&&\["VISUAL\_AB","VISUAL","SPLIT\_URL"\].indexOf(window.\_vwo\_exp\[expId\].type)>-1){}}\])})();;
;var vD=VWO.data\|\|{};VWO.data={content:{"fns":{"list":{"args":{"1":{"6966cae27d6b5":"1769458237","697bb12903f8b":"1777365029","6973a3d917a16":"1769476682","697bb2282cb22":"1777365029","697d31e221d50":"1777365029","698ba33ee7056":"1777365029","6977e9d75c953":"1769713465","6966cae27be95":"1769721193","69680a0e75d21":"1769721193","6978e81f520f7":"1769713785"}},"vn":1}}},as:"r1.visualwebsiteoptimizer.com",dacdnUrl:"https://dev.visualwebsiteoptimizer.com",accountJSInfo:{"pc":{"a":0,"t":0},"mrp":20,"ts":1777366228,"noSS":false,"tpc":{},"rp":30}};for(var k in vD){VWO.data\[k\]=vD\[k\]};var gcpfb=function(a,loadFunc,status,err,success){function vwoErr() {\_vwo\_err({message:"Google\_Cdn failing for " + a + ". Trying Fallback..",code:"cloudcdnerr",status:status});} if(a.indexOf("/cdn/")!==-1){loadFunc(a.replace("cdn/",""),err,success); vwoErr(); return true;} else if(a.indexOf("/dcdn/")!==-1&&a.indexOf("evad.js") !== -1){loadFunc(a.replace("dcdn/",""),err,success); vwoErr(); return true;}};window.VWO=window.VWO \|\| \[\];window.VWO.\_= window.VWO.\_ \|\| {};window.VWO.\_.gcpfb=gcpfb;;window.\_vwoCc = window.\_vwoCc \|\| {}; if (typeof window.\_vwoCc.dAM === 'undefined') { window.\_vwoCc.dAM = 1; };var d={cookie:document.cookie,URL:document.URL,referrer:document.referrer};var w={VWO:{\_:{}},location:{href:window.location.href,search:window.location.search},\_vwoCc:window.\_vwoCc};;window.\_vwo\_cdn="https://dev.visualwebsiteoptimizer.com/cdn/";window.\_vwo\_apm\_debug\_cdn="https://dev.visualwebsiteoptimizer.com/cdn/";window.VWO.\_.useCdn=true;window.vwo\_eT="br";window.\_VWO=window.\_VWO\|\|{};window.\_VWO.fSeg={};window.\_VWO.dcdnUrl="/dcdn/settings.js";;window.VWO.sTs=1777365030;window.\_VWO.\_vis\_nc\_lib=window.\_vwo\_cdn+"edrv/nc-367e6623b8f828e1b7169e212977ec69.br.js";var loadWorker=function(url){\_vwo\_code.load(url, { dSC: true, onloadCb: function(xhr,a){window.\_vwo\_wt\_l=true;if(xhr.status===200 \|\|xhr.status===304){var code="var window="+JSON.stringify(w)+",document="+JSON.stringify(d)+";window.document=document;"+xhr.responseText;var blob=new Blob(\[code\|\|"throw new Error('code not found!');"\],{type:"application/javascript"}),url=URL.createObjectURL(blob); var CoreWorker = window.VWO.WorkerRef \|\| window.Worker; window.mainThread={webWorker:new CoreWorker(url)};window.vwoChannelFW=new MessageChannel();window.vwoChannelToW=new MessageChannel();window.mainThread.webWorker.postMessage({vwoChannelToW:vwoChannelToW.port1,vwoChannelFW:vwoChannelFW.port2},\[vwoChannelToW.port1, vwoChannelFW.port2\]);if(!window.\_vwo\_mt\_f)return window.\_vwo\_wt\_f=true;\_vwo\_code.addScript({text:window.\_vwo\_mt\_f});delete window.\_vwo\_mt\_f}else{if(gcpfb(a,loadWorker,xhr.status)){return;}\_vwo\_code.finish("&e=loading\_failure:"+a)}}, onerrorCb: function(a){if(gcpfb(a,loadWorker)){return;}window.\_vwo\_wt\_l=true;\_vwo\_code.finish("&e=loading\_failure:"+a);}})};loadWorker("https://dev.visualwebsiteoptimizer.com/cdn/edrv/worker-57f1b8d94a5f9167e9bcdcf861046428.br.js");;var \_vis\_opt\_file;var \_vis\_opt\_lib;var check\_vn=function f(){try{var\[r,n,t\]=window.jQuery.fn.jquery.split(".").map(Number);return 2===r\|\|1===r&&(4-1&&!check\_vn()){\_vis\_opt\_file=vaGqFile}}window.\_vwo\_library\_timer=setTimeout((function(){vwoCode.removeLoaderAndOverlay&&vwoCode.removeLoaderAndOverlay();vwoCode.finish()}),vwoCode.library\_tolerance&&typeof vwoCode.library\_tolerance()!=="undefined"?vwoCode.library\_tolerance():2500),\_vis\_opt\_lib=typeof \_vis\_opt\_lib=="undefined"?window.\_vwo\_cdn+\_vis\_opt\_file:\_vis\_opt\_lib;if(window.location.search.includes("trackingOff=true")){return}var loadLib=function(url){\_vwo\_code.load(url, { dSC: true, onloadCb:function(xhr,a){window.\_vwo\_mt\_l=true;if(xhr.status===200 \|\| xhr.status===304){if(!window.\_vwo\_wt\_f)return window.\_vwo\_mt\_f=xhr.responseText;\_vwo\_code.addScript({text:xhr.responseText});delete window.\_vwo\_wt\_f;}else{if(gcpfb(a,loadLib,xhr.status)){return;}\_vwo\_code.finish("&e=loading\_failure:"+a);}}, onerrorCb: function(a){if(gcpfb(a,loadLib)){return;}window.\_vwo\_mt\_l=true;\_vwo\_code.finish("&e=loading\_failure:"+a);}})};loadLib(\_vis\_opt\_lib);VWO.load\_co=function(u,opts){return window.\_vwo\_code.load(u,opts);};;;;}}catch(e){\_vwo\_code.finish();\_vwo\_code.removeLoaderAndOverlay&&\_vwo\_code.removeLoaderAndOverlay();\_vwo\_err(e);window.VWO.caE=1}})();

Zendesk logo

ServiceNow logo

Realtor logo

QVC logo

Marks and Spencer logo

MDLive logo

## How Twilio SendGrid Email API works

The Twilio SendGrid Email API enables businesses to create, send, and manage emails at scale through RESTful APIs or SMTP relay.

SendGrid manages delivery with built-in cloud connections and authentication to maximize inbox placement. With features like dynamic templates, real-time validation, deliverability insights, and advanced analytics, you gain the control and visibility to manage outcomes at scale.

[Start for free](https://signup.sendgrid.com/?_gl=1*1hjhz9h*_gcl_au*MTE0Nzk0NDcwOS4xNzMyMjA1MTcw*_ga*NjUxNDcwNTMwLjE2ODgxNDM3MDY.*_ga_8W5LR442LD*MTczNzk5NzI3OS4zNS4xLjE3Mzc5OTcyNzkuMC4wLjA.) [Explore docs](https://www.twilio.com/docs/sendgrid/api-reference)

## Ready to handle your critical email workloads

Send at scale with the developer-first email platform

Alerts and notificationsMarketing and promotionsVerifications and identity

### Alerts and notifications

Reach the inbox with Twilio SendGrid's industry-leading deliverability rates. Maximize your email campaign’s success with dedicated IPs, custom domains, and expert support.

* * *

Shopify uses Twilio’s Email API to help their 1.7 million merchants send important alerts about payments and shipping as well as marketing emails.

99.5%

average delivery rate

91.3%

inbox placement rate

1.7M

Shopify merchants

[Read Shopify’s story\\
\\
\\
\\
\\
An icon of a right arrow](https://customers.twilio.com/en-us/shopify-2)

### Marketing and promotions

Automate your email marketing efforts to save time and drive better results. Create high-impact email automations with simple triggers and a centralized view of your campaigns.

* * *

Nextdoor's email volume skyrocketed 50% faster than its membership base, demanding a scalable email platform capable of handling rapid growth while maintaining a 99% delivery rate.

99%

delivery rate

95%

reduction in latency

<1

engineer managing email

[Read Nextdoor’s story\\
\\
\\
\\
\\
An icon of a right arrow](https://customers.twilio.com/en-us/nextdoor-2)

### Verifications and identity

Use Twilio’s real-time and bulk Email Address Validation to improve the quality of your subscriber list. You can identify and remove invalid and non-deliverable addresses before you send emails to clean your list and reduce bounce rate.

* * *

0.00-1

validity scores

350

validations per second

[Learn about Email Address Validation\\
\\
\\
\\
\\
An icon of a right arrow](https://sendgrid.com/en-us/solutions/email-api/email-address-validation-api?utm_referrer=https%3A%2F%2Fwww.twilio.com%2Fen-us%2Fproducts%2Femail-api)

## Email API features

Your emails belong in the inbox—make sure they get there with our Email API.

**Industry-leading 99% deliverability rate**

The Twilio SendGrid Email API leverages advanced infrastructure, authentication standards, and reputation management to land more emails where they belong—in the inbox.

[Learn more about our deliverability\\
\\
\\
\\
\\
\\
\\
\\
An icon of a outbound link arrow](https://www.twilio.com/docs/sendgrid/ui/sending-email/deliverability)

- [Comprehensive email management](https://www.twilio.com/en-us/resource-center/setting-up-your-email-infrastructure-with-twilio-sendgrid)

Manage your email communications with features designed to improve performance, security, and user experience.

- [Dynamic Email Templates](https://www.twilio.com/en-us/products/email-api/dynamic-email-templates)

Create and customize beautiful, responsive emails with ease using our dynamic email templates.

- [Email Validation API](https://www.twilio.com/en-us/products/email-api/email-address-validation-api)

Reduce bounce rates and improve sender reputation by validating email addresses in real time.

- [Deliverability insights](https://www.twilio.com/docs/sendgrid/ui/analytics-and-reporting/deliverability-insights)

Monitor and improve email deliverability from a single dashboard that shows detailed performance across mailbox providers over time.

- [Free trial of SMTP](https://sendgrid.com/en-us/pricing)

Start with a free trial to send email with our SMTP relay, SMTP API, or Web API. Send 100 emails per day for 60 days then upgrade to a paid plan.

- [Authentication protocols](https://www.twilio.com/docs/sendgrid/ui/account-and-settings/how-to-set-up-domain-authentication)

Protect your email communications with comprehensive security features, including SPF, DKIM, DMARC, and TLS encryption.

- [Professional services](https://www.twilio.com/en-us/professional-services)

Our team of email experts help set your email up for success, troubleshoot issues, and coach your program to higher deliverability and open rates.

- [Email testing](https://www.twilio.com/en-us/products/marketing-campaigns/email-testing)

Avoid spam filters, validate links, and render flawlessly across browsers and devices with our integrated email testing.

- [Email infrastructure](https://www.twilio.com/en-us/global-infrastructure)

Avoid outages with intelligent delivery optimization, fully redundant hybrid infrastructure, global inbound edge locations, and formal failover policies.

## Integrate in minutes, start sending sooner

Integrate and deliver in minutes with our RESTful APIs and SMTP, libraries to support your programming language, and interactive documentation.

- [Quickstart documentation](https://www.twilio.com/docs/sendgrid/for-developers/sending-email/api-getting-started)

- [Code Exchange quick deploy](https://www.twilio.com/code-exchange)

- [API reference](https://www.twilio.com/docs/sendgrid/api-reference)

- [Interactive documentation](https://docs.sendgrid.com/?_gl=1*19v9ivl*_gcl_au*MTg5MzE4NzI1NC4xNzIxNjcxNTE1*_ga*MTc2Nzc5ODMzMC4xNzEyMDEwNTYy*_ga_RRP8K4M4F3*MTcyMjg4MTQwMy4yNS4xLjE3MjI4ODE5MTUuMC4wLjA.)

- [Blog articles](https://www.twilio.com/en-us/blog)

[Start for free](https://signup.sendgrid.com/)

Python logoCurl logoJavaScript logoRuby logoGo logoPHP logoJava logoC# logo

```python
# using SendGrid's Python Library
# https://github.com/sendgrid/sendgrid-python
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

message = Mail(
    from_email='from_email@example.com',
    to_emails='to@example.com',
    subject='Sending with Twilio SendGrid is Fun',
    html_content='<strong>and easy to do anywhere, even with Python</strong>')
try:
    sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
    response = sg.send(message)
    print(response.status_code)
    print(response.body)
    print(response.headers)
except Exception as e:
    print(e.message)
```

```curl
curl --request POST \
	--url https://api.sendgrid.com/v3/mail/send \
	--header "Authorization: Bearer $SENDGRID_API_KEY" \
	--header 'Content-Type: application/json' \
	--data '{"personalizations": [{"to": [{"email": "test@example.com"}]}],"from": {"email": "test@example.com"},"subject": "Sending with SendGrid is Fun","content": [{"type": "text/plain", "value": "and easy to do anywhere, even with cURL"}]}'
```

```js
// using Twilio SendGrid's v3 Node.js Library
// https://github.com/sendgrid/sendgrid-nodejs
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
  to: 'test@example.com',
  from: 'test@example.com',
  subject: 'Sending with Twilio SendGrid is Fun',
  text: 'and easy to do anywhere, even with Node.js',
  html: '<strong>and easy to do anywhere, even with Node.js</strong>',
};
sgMail.send(msg);
```

```ruby
# using SendGrid's Ruby Library
# https://github.com/sendgrid/sendgrid-ruby
require 'sendgrid-ruby'
include SendGrid

from = Email.new(email: 'test@example.com')
to = Email.new(email: 'test@example.com')
subject = 'Sending with SendGrid is Fun'
content = Content.new(type: 'text/plain', value: 'and easy to do anywhere, even with Ruby')
mail = Mail.new(from, subject, to, content)

sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
response = sg.client.mail._('send').post(request_body: mail.to_json)
puts response.status_code
puts response.body
puts response.headers
```

```go
// using SendGrid's Go Library
// https://github.com/sendgrid/sendgrid-go
package main

import (
	"fmt"
	"log"
	"os"

"github.com/sendgrid/sendgrid-go"
	"github.com/sendgrid/sendgrid-go/helpers/mail"
)

func main() {
	from := mail.NewEmail("Example User", "test@example.com")
	subject := "Sending with SendGrid is Fun"
	to := mail.NewEmail("Example User", "test@example.com")
	plainTextContent := "and easy to do anywhere, even with Go"
	htmlContent := "<strong>and easy to do anywhere, even with Go</strong>"
	message := mail.NewSingleEmail(from, subject, to, plainTextContent, htmlContent)
	client := sendgrid.NewSendClient(os.Getenv("SENDGRID_API_KEY"))
	response, err := client.Send(message)
	if err != nil {
		log.Println(err)
	} else {
		fmt.Println(response.StatusCode)
		fmt.Println(response.Body)
		fmt.Println(response.Headers)
	}
}
```

```php
<?php
require 'vendor/autoload.php'; // If you're using Composer (recommended)
// Comment out the above line if not using Composer
// require("/sendgrid-php.php");
// If not using Composer, uncomment the above line and
// download sendgrid-php.zip from the latest release here,
// replacing  with the path to the sendgrid-php.php file,
// which is included in the download:
// https://github.com/sendgrid/sendgrid-php/releases

$email = new \SendGrid\Mail\Mail();
$email->setFrom("test@example.com", "Example User");
$email->setSubject("Sending with SendGrid is Fun");
$email->addTo("test@example.com", "Example User");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent(
    "text/html", "<strong>and easy to do anywhere, even with PHP</strong>"
);
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
    $response = $sendgrid->send($email);
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $e) {
    echo 'Caught exception: '. $e->getMessage() ."\n";
}
```

```java
// using SendGrid's Java Library
// https://github.com/sendgrid/sendgrid-java
import com.sendgrid.*;
import java.io.IOException;

public class Example {
  public static void main(String[] args) throws IOException {
    Email from = new Email("test@example.com");
    String subject = "Sending with SendGrid is Fun";
    Email to = new Email("test@example.com");
    Content content = new Content("text/plain", "and easy to do anywhere, even with Java");
    Mail mail = new Mail(from, subject, to, content);

SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
    Request request = new Request();
    try {
      request.setMethod(Method.POST);
      request.setEndpoint("mail/send");
      request.setBody(mail.build());
      Response response = sg.api(request);
      System.out.println(response.getStatusCode());
      System.out.println(response.getBody());
      System.out.println(response.getHeaders());
    } catch (IOException ex) {
      throw ex;
    }
  }
}
```

```csharp
// using SendGrid's C# Library
// https://github.com/sendgrid/sendgrid-csharp
using SendGrid;
using SendGrid.Helpers.Mail;
using System;
using System.Threading.Tasks;

namespace Example
{
    internal class Example
    {
        private static void Main()
        {
            Execute().Wait();
        }

static async Task Execute()
        {
            var apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY");
            var client = new SendGridClient(apiKey);
            var from = new EmailAddress("test@example.com", "Example User");
            var subject = "Sending with SendGrid is Fun";
            var to = new EmailAddress("test@example.com", "Example User");
            var plainTextContent = "and easy to do anywhere, even with C#";
            var htmlContent = "<strong>and easy to do anywhere, even with C#</strong>";
            var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
            var response = await client.SendEmailAsync(msg);
        }
    }
}
```

### **Need help building? No problem.**

Build your one-of-a-kind email program with help from our partners. [View partners](https://sendgrid.com/en-us/partners?utm_referrer=https%3A%2F%2Fwww.twilio.com%2Fen-us%2Fproducts%2Femail-api)

## Email Deliverability Guide

Learn how to get your emails to the inbox with the latest industry trends, email news, and best practices.

[Read content\\
\\
\\
\\
\\
\\
\\
\\
An icon of a outbound link arrow](https://www.twilio.com/en-us/resource-center/email-deliverability-guide)

## 10M+ developers can’t be wrong about Twilio

190B+

emails sent every month

99%

deliverability rate

99.99%

uptime SLA

1.9

second median delivery speed

[More reasons to use Twilio](https://www.twilio.com/en-us/why-twilio)

## The best things in life are free, including a trial of our Email API.

Sign up for a free trial to experience Twilio SendGrid's reliable, scalable email delivery.

[Start for free](https://signup.sendgrid.com/) [View pricing](https://www.twilio.com/en-us/products/email-api/pricing)

## FAQ

### What is the Twilio SendGrid Email API?

An icon of a plus symbolAn icon of a minus symbol

The Twilio Email API is a powerful tool that enables you to send, receive, and manage emails programmatically. It provides features like dynamic templates, real-time analytics, and robust security to ensure your emails reach the inbox and engage your audience effectively.

Our MTA delivers emails at an unrivaled scale and manages peaks to ensure top performance at any sending volume. We send with benchmark limits of 15K transactions per second and median delivery speeds of 1.9 seconds.

### How does Twilio SendGrid work?

An icon of a plus symbolAn icon of a minus symbol

Twilio SendGrid is a leader in email deliverability that serves both marketers and developers.

We are a cloud-based SMTP provider that acts as an email delivery engine, so you can send email without the cost and complexity of maintaining your own email servers. Twilio SendGrid manages the technical details of email delivery, like infrastructure scaling, ISP outreach, reputation monitoring, and real-time analytics.

We also offer [Marketing Campaigns](https://www.twilio.com/en-us/products/marketing-campaigns), our flagship email marketing solution. Use it to raise the bar across all of the email you send—from promotional newsletters to time-based automated drip series. Marketing Campaigns features targeted segmentation and contact list management tools, visual drag-and-drop design, powerful HTML capabilities, integrated Email Testing and Signup Forms, and actionable analytics—all from the brand loved by marketers and developers alike.

### How does the free 60-day trial work?

An icon of a plus symbolAn icon of a minus symbol

You’ll be able to send 100 emails per day once you create and verify your free Email API plan. Once you create and verify your free Marketing Campaigns plan, you’ll be able to send 6,000 emails per month and store up to 2,000 contacts.

If you need to send more email or store more contacts, you can easily upgrade to one of our paid plans in the UI!

### Can I send transactional and marketing emails with the Twilio SendGrid Email API?

An icon of a plus symbolAn icon of a minus symbol

Yes, the Twilio Email API supports both transactional and marketing emails. You can use dynamic templates to customize your emails and target different segments of your audience with personalized content.

### How do you measure the number of emails I send?

An icon of a plus symbolAn icon of a minus symbol

Every time you send one email to one recipient, it's deducted as one email credit from your plan. This occurs whether the email is ultimately deferred or sent to spam by the inbox provider.

It's important to keep in mind that emails sent using an Email API package are counted separately from emails that you send using a Marketing Campaigns package.

### How can I monitor the performance of my email campaigns?

An icon of a plus symbolAn icon of a minus symbol

Twilio offers advanced analytics and reporting tools that provide detailed metrics on open rates, click-through rates, bounce rates, and more. You can access these insights through our user-friendly dashboards to optimize your email campaigns.

### What kind of support is available for Twilio SendGrid Email users?

An icon of a plus symbolAn icon of a minus symbol

Twilio offers 24/7 support to help you troubleshoot issues and optimize your email campaigns. Our support team is available to assist you with any questions or problems you may encounter.

### Can you help me get started? Do you offer deliverability consulting?

An icon of a plus symbolAn icon of a minus symbol

Yes! Our Onboarding Specialists can walk you through the entire process to ensure that your account is set up for success. You can also work with our Delivery Consultants to evaluate your entire email program and get a detailed assessment to help you identify areas for optimization, such as configuring your IPs correctly or diagnosing email deliverability issues.

### How does Twilio SendGrid handle email deliverability?

An icon of a plus symbolAn icon of a minus symbol

Twilio SendGrid leverages a globally distributed, cloud-based architecture and advanced deliverability tools to ensure your emails reach the inbox. Features like ISP monitoring, sender authentication, and dedicated IP addresses help maintain optimal deliverability rates.

We also provide intelligent handling, industry-leading delivery expertise, and reputation management features like automatic retries, queue optimization, and threat detection.

And our partnership with the four largest email ISPs provides direct peering with Google, Yahoo, Apple, Microsoft.

### Is the Twilio Email API the same as the SendGrid Email API?

An icon of a plus symbolAn icon of a minus symbol

Yes, SendGrid was acquired by Twilio and the SendGrid Email API is now referred to as the Twilio Email API. You get the same infrastructure, excellent deliverability, easy integration, and developer tools to support your email program. Plus, you can access all the communication channels and customer data that’s available on the Twilio platform.

### How do I partner with Twilio SendGrid?

An icon of a plus symbolAn icon of a minus symbol

We have a number of ways we can work together:

Reseller partners: Perfect for cloud, ecommerce, and CMS platform companies that want to provide more value to their customers.

Marketplace partners: List your service on the SendGrid Marketplace as a recommended solution.

ISV partners: Offer your users the ability to send email, invisibly powered by Twilio SendGrid.
