");vwo\_$('head').append(\_vwo\_sel);return vwo\_$('head')\[0\] && vwo\_$('head')\[0\].lastChild;})("HEAD")}}, GL\_1176295\_19\_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\_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);
 });
}
)()
 }}, 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")}}, GL\_1176295\_73\_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\_17\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_18\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_18\_post:{ 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);
 });
}
)()
 }}, js\_2146808382492dba3b44268fdacfd52c:{ fn:function() { return window.VWO.\_.pageId }}, GL\_1176295\_14\_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\_15\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, GL\_1176295\_15\_post:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, 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);
 });
}
)()
 }}, 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\_65\_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 = ""){}}, 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);
 });
}
)()
 }}, GL\_1176295\_37\_pre:{ fn:function(VWO\_CURRENT\_CAMPAIGN, VWO\_CURRENT\_VARIATION,nonce = ""){}}, 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);
 });
}
)()
 }}},rules:\[{"tags":\[{"data":{"type":"m","campaigns":\[{"c":21,"g":3}\]},"id":"metric","metricId":2133829},{"data":{"type":"m","campaigns":\[{"c":20,"g":6}\]},"id":"metric","metricId":2133829}\],"triggers":\["22282387"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":21,"g":4}\]},"id":"metric","metricId":2144920}\],"triggers":\["22282390"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.69","priority":4}\],"triggers":\["22258039","23364864"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.15","priority":4}\],"triggers":\["22258039","22861960"\]},{"tags":\[{"data":{"type":"g","campaigns":\[{"c":37,"g":1}\]},"id":"metric","metricId":0}\],"triggers":\["22404085"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":20,"g":5}\]},"id":"metric","metricId":2144926}\],"triggers":\["22282408"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.14","priority":4}\],"triggers":\["22258039","22861954"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.16","priority":4}\],"triggers":\["22258039","22861966"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":73,"g":1}\]},"id":"metric","metricId":2289942},{"data":{"type":"m","campaigns":\[{"c":68,"g":1}\]},"id":"metric","metricId":2289942}\],"triggers":\["23501736"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":73,"g":2}\]},"id":"metric","metricId":2133724},{"data":{"type":"m","campaigns":\[{"c":21,"g":1}\]},"id":"metric","metricId":2133724},{"data":{"type":"m","campaigns":\[{"c":68,"g":2}\]},"id":"metric","metricId":2133724},{"data":{"type":"m","campaigns":\[{"c":20,"g":1}\]},"id":"metric","metricId":2133724}\],"triggers":\["22282381"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.65","priority":4}\],"triggers":\["22258039","23046616","23046619"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":79,"g":1}\]},"id":"metric","metricId":2373278}\],"triggers":\["24140030"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":55,"g":2}\]},"id":"metric","metricId":2144929},{"data":{"type":"m","campaigns":\[{"c":69,"g":2}\]},"id":"metric","metricId":2144929},{"data":{"type":"m","campaigns":\[{"c":71,"g":2}\]},"id":"metric","metricId":2144929}\],"triggers":\["22403941"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.37","priority":4}\],"triggers":\["22404076","22404082"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.20","priority":4}\],"triggers":\["22374853","22374859"\]},{"tags":\[{"data":{"type":"g","campaigns":\[{"c":49,"g":1}\]},"id":"metric","metricId":0}\],"triggers":\["22404118"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":20,"g":4}\]},"id":"metric","metricId":2144923}\],"triggers":\["22282405"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.19","priority":4}\],"triggers":\["22258039","22861936"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.18","priority":4}\],"triggers":\["22258039","22861978"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.17","priority":4}\],"triggers":\["22258039","22861972"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.55","priority":4},{"triggerIds":\["22258039","22404058"\],"id":"runCampaign","data":"campaigns.71","priority":4},{"triggerIds":\["22258039","22404058"\],"id":"runCampaign","data":"campaigns.79","priority":4}\],"triggers":\["22258039","22404058"\]},{"tags":\[{"data":{"type":"g","campaigns":\[{"c":65,"g":2}\]},"id":"metric","metricId":0}\],"triggers":\["23369343"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.73","priority":4}\],"triggers":\["23694104","24380510","23694113"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.21","priority":4}\],"triggers":\["22374862","22374868"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.68","priority":4}\],"triggers":\["23502696","24280439","23502705"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":14,"g":1}\]},"id":"metric","metricId":2133583},{"data":{"type":"m","campaigns":\[{"c":15,"g":1}\]},"id":"metric","metricId":2133583},{"data":{"type":"m","campaigns":\[{"c":16,"g":1}\]},"id":"metric","metricId":2133583},{"data":{"type":"m","campaigns":\[{"c":17,"g":1}\]},"id":"metric","metricId":2133583},{"data":{"type":"m","campaigns":\[{"c":18,"g":1}\]},"id":"metric","metricId":2133583},{"data":{"type":"m","campaigns":\[{"c":19,"g":1}\]},"id":"metric","metricId":2133583}\],"triggers":\["22277422"\]},{"tags":\[{"id":"runCampaign","data":"campaigns.49","priority":4}\],"triggers":\["22258039","22404115"\]},{"tags":\[{"data":{"type":"m","campaigns":\[{"c":21,"g":2}\]},"id":"metric","metricId":2133826}\],"triggers":\["22282384"\]},{"tags":\[{"id":"prePostMutation","priority":3},{"priority":2,"id":"groupCampaigns"}\],"triggers":\["8"\]},{"tags":\[{"id":"visibilityService","priority":2}\],"triggers":\["9"\]},{"tags":\[{"id":"runTestCampaign"}\],"triggers":\["2"\]},{"tags":\[{"id":"revaluateHiding","priority":3}\],"triggers":\["11"\]},{"tags":\[{"id":"urlChange"}\],"triggers":\["75"\]},{"tags":\[{"id":"checkEnvironment"}\],"triggers":\["5"\]}\],pages:{"ec":\[{"3172225":{"inc":\["o",\["url","urlReg","(?i).\*"\]\]}},{"3185047":{"inc":\["o",\["url","urlReg","(?i)^https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us\\\\\/try\\\-twilio\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"3185059":{"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))\\/?$).\*"\]\],"inc":\["o",\["url","urlReg","(?i).\*https?\\\:\\\\\/\\\\\/(w{3}\\\.)?twilio\\\.com\\\\\/en\\\-us.\*"\]\]}},{"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\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"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\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"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\\\\\/?(?:\[\\\?#\].\*)?$"\]\]}},{"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.\*"\]\]}}\]},pagesEval:{"ec":\[3172225,3185059,3387731\]},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\]);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 {"connectors":{"171649":{"manualSetup":false,"dataVariable":""}},"push":{"85":\[171649\],"44":\[171649\],"42":\[171649\],"49":\[171649\],"47":\[171649\],"48":\[171649\],"63":\[171649\],"64":\[171649\],"65":\[171649\],"66":\[171649\],"67":\[171649\],"75":\[171649\],"69":\[171649\],"71":\[171649\],"72":\[171649\],"73":\[171649\],"76":\[171649\],"77":\[171649\],"78":\[171649\],"79":\[171649\],"81":\[171649\],"83":\[171649\],"84":\[171649\],"86":\[171649\],"87":\[171649\],"34":\[171649\],"39":\[171649\],"51":\[171649\],"53":\[171649\],"55":\[171649\],"56":\[171649\],"68":\[171649\],"35":\[171649\],"36":\[171649\],"37":\[171649\],"38":\[171649\],"40":\[171649\],"41":\[171649\],"31":\[171649\],"60":\[171649\],"46":\[171649\]}}},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 {"connectors":{"171649":{"manualSetup":false,"dataVariable":""}},"push":{"85":\[171649\],"44":\[171649\],"42":\[171649\],"49":\[171649\],"47":\[171649\],"48":\[171649\],"63":\[171649\],"64":\[171649\],"65":\[171649\],"66":\[171649\],"67":\[171649\],"75":\[171649\],"69":\[171649\],"71":\[171649\],"72":\[171649\],"73":\[171649\],"76":\[171649\],"77":\[171649\],"78":\[171649\],"79":\[171649\],"81":\[171649\],"83":\[171649\],"84":\[171649\],"86":\[171649\],"87":\[171649\],"34":\[171649\],"39":\[171649\],"51":\[171649\],"53":\[171649\],"55":\[171649\],"56":\[171649\],"68":\[171649\],"35":\[171649\],"36":\[171649\],"37":\[171649\],"38":\[171649\],"40":\[171649\],"41":\[171649\],"31":\[171649\],"60":\[171649\],"46":\[171649\]}}},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}})();
 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 {"connectors":{"172003":{"enableSendingInsightsData":false,"serverSide":false,"sendTrackCall":true,"sendIdentifyCall":true,"serverSideSettings":{"webhookSecret":"","webhookUrl":""}}},"push":{"2":\[172003\],"4":\[172003\],"5":\[172003\],"6":\[172003\],"7":\[172003\],"8":\[172003\],"9":\[172003\],"10":\[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\],"34":\[172003\],"39":\[172003\],"51":\[172003\],"52":\[172003\],"53":\[172003\],"55":\[172003\],"56":\[172003\],"57":\[172003\],"58":\[172003\],"60":\[172003\],"44":\[172003\],"42":\[172003\],"46":\[172003\],"47":\[172003\],"48":\[172003\],"27":\[172003\],"28":\[172003\],"29":\[172003\],"30":\[172003\],"31":\[172003\],"65":\[172003\],"66":\[172003\],"67":\[172003\],"68":\[172003\],"69":\[172003\],"71":\[172003\],"72":\[172003\],"73":\[172003\],"76":\[172003\],"77":\[172003\],"78":\[172003\],"79":\[172003\],"81":\[172003\],"83":\[172003\],"84":\[172003\],"86":\[172003\],"87":\[172003\],"64":\[172003\],"35":\[172003\],"36":\[172003\],"37":\[172003\],"38":\[172003\],"40":\[172003\],"41":\[172003\],"63":\[172003\],"49":\[172003\],"1":\[172003\]}}},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}})();
 ;})();(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":{"698ba33ee7056":"1777365125","697bb2282cb22":"1777365125","697bb12903f8b":"1777365125","697d31e221d50":"1777365125","6973a3d917a16":"1769523715","6978e81f520f7":"1769713518","6977e9d75c953":"1769713793","6966cae27be95":"1769720698","69680a0e75d21":"1769720698"}},"vn":1}}},as:"r1.visualwebsiteoptimizer.com",dacdnUrl:"https://dev.visualwebsiteoptimizer.com",accountJSInfo:{"noSS":false,"mrp":20,"ts":1777366229,"pc":{"t":0,"a":0},"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=1777365125;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}})();

**Alerts and notifications**

# Mass texting

Build a mass texting service to make bulk text messaging easier. Twilio’s reliable Programmable Messaging API can scale to handle your largest messaging use cases, globally.

[Start for free](https://www.twilio.com/try-twilio)

## What is mass texting?

Bulk SMS or MMS, mass notifications, mass texting—it’s all a way of saying you’re sending a lot of messages to your audience at once. The occasion might be a promotional message for Black Friday, an alert about a regional weather event, or a school cancellation notice to parents.

## How to send bulk text messages using Twilio

Twilio APIs are easy to integrate with your current tech stack, including your [Customer Data Platform](https://www.twilio.com/en-us/customer-data-platform) (CDP) and CRM. Build and deploy your mass texting use cases quickly and at scale.

**Step 1**

**Set up your Twilio account**

[Sign up for a free Twilio account](https://twilio.com/try-twilio), then select from our inventory of business phone numbers with SMS capabilities to engage your audience or customers.

**Step 2**

**Create and configure a messaging service**

Utilize the default messaging service that’s automatically generated for your account, or create your own through the Twilio Console or using the REST API.

**Step 3**

**Develop your mass texting solution**

Build a bulk texting application in your choice of language including Python, Golang, PHP, Java, Ruby, C# / .NET, and Node.js, or use Twilio Notify to send messages at scale.

**Step 4**

**Test your application**

Test your queuing and sending capabilities are working correctly to ensure accurate and timely delivery of your bulk messages.

**Step 5**

**Deploy with confidence**

Now your solution is ready to roll. Launch your bulk texting communications and watch your messaging program thrive.

**Step 6**

**Leverage data**

Measure and optimize delivery with Twilio’s out-of-the-box reporting from [Messaging Insights](https://www.twilio.com/docs/messaging/features/messaging-insights) or customize reporting with data from CSV downloads, webhooks, and [Event Streams](https://www.twilio.com/en-us/event-streams).

## Products and key features for bulk texting

The Twilio Customer Engagement platform has text messaging solutions for maximum deliverability at scale—we send and receive 167B+ messages per year.

- Chat bubble with globe

[Messaging](https://www.twilio.com/en-us/messaging/programmable-messaging-api)

Send bulk text messages across channels with options like scheduling, shortened hyperlinks, two-way conversations, custom opt-out, and data for analytics.

- Twilio Conversations logo

[Short code phone numbers](https://www.twilio.com/en-us/messaging/channels/sms/short-codes)

5-6 digit recognizable numbers that can send 100+ messages per second, with automatic picture transcoding, message assembly, and more.

- User group network

[Traffic Optimization Engine](https://www.twilio.com/en-us/blog/products/launches/prioritized-messaging-with-traffic-optimization-engine)

Real-time routing algorithms, extensive global network of carrier connections, and capacity management for efficient delivery and measurable customer engagement.

- Call forwarding

[Toll-free phone numbers](https://www.twilio.com/en-us/phone-numbers/toll-free)

10-digit phone numbers that provide your business with a universal brand identity and similar messaging throughput and deliverability as short codes.

- User with a heart symbol

[Trust Hub](https://www.twilio.com/en-us/trust-hub)

Navigate the regulatory landscape, maintain high deliverability, and access our network of trusted senders to establish trust with their own end users.

## Bulk texting compliance and best practices

-
Opt-ins

Secure explicit opt-ins for subscribers along with detailed information about what kinds of messages they will get from you—and don’t use their contact information for any other kinds of messages without additional consent.

-
Opt-outs

Provide easy opt-out options that take recipients off your list so you can avoid sending unwanted messages to people who don’t want to get them.

-
Personalization

Personalize your mass text messages to individual customers or audience segments so they get the most relevant information to their needs or interests.

- [Validate recipient numbers](https://www.twilio.com/en-us/user-authentication-identity/lookup)

Use Twilio Lookup API to confirm that a phone number is legitimate and in the correct format. Then verify that the right person is in possession of the number with Twilio Reassigned Number.

- [Sender number type](https://www.twilio.com/en-us/phone-numbers)

Send bulk text messages from a fully verified number that is registered for your use case. Short codes or toll-free numbers are ideal for mass text messages because they can handle high-volumes of SMS and MMS message delivery.

## Get started with Twilio Messaging

Sign up for a Twilio account to start sending text messages at scale. Use our quickstart guides and up-to-date docs to get set up using your preferred programming language.

Python logoC# logoPHP logoRuby logoJava logoJavaScript logoCurl logo

```python
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ["TWILIO_ACCOUNT_SID"]
auth_token = os.environ["TWILIO_AUTH_TOKEN"]
client = Client(account_sid, auth_token)

message = client.messages.create(
    body="Join Earth's mightiest heroes. Like Kevin Bacon.",
    from_="+15017122661",
    to="+15558675310",
)

print(message.body)
```

```csharp
// Install the C# / .NET helper library from twilio.com/docs/csharp/install

using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using System.Threading.Tasks;

class Program {
    public static async Task Main(string[] args) {
        // Find your Account SID and Auth Token at twilio.com/console
        // and set the environment variables. See http://twil.io/secure
        string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

TwilioClient.Init(accountSid, authToken);

var message = await MessageResource.CreateAsync(
            body: "Join Earth's mightiest heroes. Like Kevin Bacon.",
            from: new Twilio.Types.PhoneNumber("+15017122661"),
            to: new Twilio.Types.PhoneNumber("+15558675310"));

Console.WriteLine(message.Body);
    }
}
```

```php
<?php
require __DIR__ . '/vendor/autoload.php';
use Twilio\Rest\Client;

// Your Account SID and Auth Token from twilio.com/console
// To set up environmental variables, see http://twil.io/secure
$account_sid = getenv('TWILIO_ACCOUNT_SID');
$auth_token = getenv('TWILIO_AUTH_TOKEN');
// In production, these should be environment variables. E.g.:
// $auth_token = $_ENV["TWILIO_AUTH_TOKEN"]

// A Twilio number you own with SMS capabilities
$twilio_number = "+15017122661";

$client = new Client($account_sid, $auth_token);
$client->messages->create(
    // Where to send a text message (your cell phone?)
    '+15558675310',
    array(
        'from' => $twilio_number,
        'body' => 'I sent this message in under 10 minutes!'
    )
);
```

```ruby
# Download the twilio-ruby library from twilio.com/docs/libraries/ruby
require 'twilio-ruby'

# To set up environmental variables, see http://twil.io/secure
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyy'
client = Twilio::REST::Client.new(account_sid, auth_token)

from = '+15551234567' # Your Twilio number
to = '+15555555555' # Your mobile phone number

client.messages.create(
from: from,
to: to,
body: "Hey friend!"
)
```

```java
// Install the Java helper library from twilio.com/docs/java/install

import com.twilio.type.PhoneNumber;
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;

public class Example {
    // Find your Account SID and Auth Token at twilio.com/console
    // and set the environment variables. See http://twil.io/secure
    public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
    public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");

public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Message message = Message.creator(
                                         new com.twilio.type.PhoneNumber("+14159352345"),
                                         new com.twilio.type.PhoneNumber("+14158141829"),
                                         "Where's Wallace?")
                                  .create();

System.out.println(message.getBody());
    }
}
```

```js
// Download the helper library from https://www.twilio.com/docs/node/install
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";

// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = twilio(accountSid, authToken);

async function createMessage() {
  const message = await client.messages.create({
    body: "This is the ship that made the Kessel Run in fourteen parsecs?",
    from: "+15017122661",
    to: "+15558675310",
  });

console.log(message.body);
}

createMessage();
```

```curl
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/Messages.json" \
--data-urlencode "From=+15557122661" \
--data-urlencode "Body=Hi there" \
--data-urlencode "To=+15558675310" \
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
```

#### [Programmable Messaging Quickstart](https://www.twilio.com/docs/messaging/quickstart)

Get a step-by-step guide for setting up your Twilio account, and sending and receiving your first messages.

#### [Sending bulk SMS with Twilio and Node.js](https://www.twilio.com/docs/messaging/tutorials/how-to-send-sms-messages/node)

Learn how to scale from a small use case to a mass texting use case as your subscriber list grows.

#### [Understanding rate limits and message queues](https://help.twilio.com/articles/115002943027-Understanding-Twilio-Rate-Limits-and-Message-Queues)

Learn about the wireless carrier network limits for message delivery and how Twilio handles your messages requests to navigate limitations.

[Start for free](https://www.twilio.com/try-twilio) [View docs\\
\\
\\
\\
\\
\\
\\
\\
An icon of a outbound link arrow](https://www.twilio.com/docs/messaging)

### Prefer not to code? No problem.

You can use Twilio messaging for your bulk texting solution even if you don’t have coding experience to build it yourself. Our trusted partners can help you bring your texting solution to life.

[View partners](https://www.twilio.com/en-us/partners)

## Resources for building mass texting solutions

[2024 guide to scaling your SMS messaging solution\\
\\
Read up on everything you’ll need to consider for your mass texting use case to set yourself up for success.\\
\\
An icon of a right arrow](https://www.twilio.com/en-us/resource-center/sms-messaging-solutions-guide) [Send SMS notifications from Google Sheets\\
\\
Learn how to create a custom menu in Google Sheets to send SMS notifications to your contacts.\\
\\
An icon of a right arrow](https://www.twilio.com/en-us/blog/send-sms-google-sheets-twilio) [The ROI of Twilio Messaging\\
\\
Twilio’s reliable communications APIs delivered a 3% increase in message delivery versus other providers and 132% ROI for customers(1).\\
\\
An icon of a right arrow](https://pages.twilio.com/forrester-tei-messaging)

## THG delivers millions of messages per month without delivery complications

THG built a messaging solution on top of Twilio that reliably delivers three million SMS per month and can handle spikes in volume as high as 6X during Black Friday and flash sales.

User star review

3M

SMS per month

House with heart symbol

195

territories and expanding

Bar graph with arrow showing an increase

194%

growth in revenue (2019-2022)

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

## Klaviyo reliably sends SMS marketing messages at immense scale

Klaviyo relies on Twilio’s Programmable Messaging API to dependably deliver the high volume of text messages it handles for over 65,000 customers through its SMS platform every month.

Call forwarding

65,000

customers

99.9%

average delivery rates

[Read Klayvio's story\\
\\
\\
\\
\\
An icon of a right arrow](https://customers.twilio.com/en-us/klaviyo)

## A text service that helps businesses connect with seven million customers

Text Request trusts Twilio to send 5 million text messages a month on behalf of businesses to confirm customer appointments, answer leads, promote sales, and collect payments.

Chat bubble with line graph

5M

monthly messages

Mobile data

150%

response rate increase

Browser speed icon

25X

average ROI for customers

[Read Text Request’s story\\
\\
\\
\\
\\
An icon of a right arrow](https://customers.twilio.com/en-us/text-request?_ga=2.95860828.1354003289.1711980555-1261633788.1676671734&_gac=1.14247621.1711554835.CjwKCAjwh4-wBhB3EiwAeJsppNqbmpULxFC-DwzdNe7MTxuL42UPYg7REYxvsAsvs1UdLw738g0ZsBoClKwQAvD_BwE&_gl=1*1xkgu39*_ga*MTI2MTYzMzc4OC4xNjc2NjcxNzM0*_ga_RRP8K4M4F3*MTcxMjM0MzI1Ny4xODIuMS4xNzEyMzUyNTAxLjAuMC4w)

## Why choose Twilio’s mass texting service

Twilio is loved by 10+ million developers and is ready to handle your biggest workloads.

### Built for messaging volume spikes

An icon of a plus symbolAn icon of a minus symbol

In 2023, over 830 million messages were sent and received by Twilio on Cyber Monday and we sent over 4 billion messages during Cyber Week—with zero down time in core messaging services.

### Global reach

An icon of a plus symbolAn icon of a minus symbol

Twilio reaches over 180 countries to connect you with customers around the world. The Super Network has over 4,800 global carrier connections and monitors routes for latency and outages to optimize delivery rates.

### Pay-as-you-go pricing

An icon of a plus symbolAn icon of a minus symbol

No-shenanigans pricing means you only pay for what you use. You can scale up or down as needed, and you’ll unlock pricing discounts as your usage increases.

### Fully verified ecosystem

An icon of a plus symbolAn icon of a minus symbol

We’re here to help you meet carrier requirements for sending text message traffic. From our vetted phone number inventory of more than 200 number types to our simplified registration process, you can join the trusted messaging ecosystem and keep your communications compliant.

## See what else you can do with alerts and notifications

[Alerts and notifications ](https://www.twilio.com/en-us/use-cases/alerts-and-notifications)

###### Alerts and notifications

Drive engagement with alerts and notifications on the channels your customers prefer.

[Learn more](https://www.twilio.com/en-us/use-cases/alerts-and-notifications)

[Appointment reminders](https://www.twilio.com/en-us/use-cases/appointment-reminders)

###### Appointment reminders

Keep customers on track and reduce missed visits with convenient appointment reminders.

[Learn more](https://www.twilio.com/en-us/use-cases/appointment-reminders)

[Lead alerts](https://www.twilio.com/en-us/use-cases/lead-alerts)

###### Lead alerts

Instantly alert your team to new leads so you can follow up faster and close more deals.

[Learn more](https://www.twilio.com/en-us/use-cases/lead-alerts)

[See all use cases](https://www.twilio.com/en-us/solutions#use-cases)

## Bulk texting FAQs

### Who should use bulk texting?

An icon of a plus symbolAn icon of a minus symbol

Businesses can use mass texting for use cases like: sending security notifications, emergency alerts, reminders, feedback requests, or special marketing offers to a large audience at once.

Mass texting simplifies the work of sending individual messages to separate recipients.

Bulk messages can be targeted and personalized to the audience. We recommend segmenting your recipients and sending tailored messages to increase the effectiveness of campaigns such as for marketing and promotions.

### How much does bulk texting cost?

An icon of a plus symbolAn icon of a minus symbol

At Twilio, the cost of a mass texting solution depends on how many messages you send. We use pay-as-you-go pricing with volume discounts available. So the more you send, the more you save.

- Monthly messaging costs start at:
- $0.0083 for your first 150,000 messages
- $0.0081 for your next 150,000 messages
- $0.0079 for your next 200,000 messages
- $0.0077 for your next 250,000 messages
- $0.0075 for your next 250,000 messages
- $0.0073 for anything above 1 million messages

View [Twilio’s SMS pricing](https://www.twilio.com/en-us/sms/pricing/us) for full cost details. There may be additional carrier fees for some markets, countries, and carriers.

### What’s the difference between group texting and mass texting?

An icon of a plus symbolAn icon of a minus symbol

Group texting refers to an individual sending a message to a group of selected recipients. Some smartphone models now allow users to send a single message to up to 30 recipients, while others max out at 10.

Mass texting, on the other hand, refers to messages sent with a text messaging API or SMS service that delivers texts to a list of recipients. The list can include as many people as a group message or up to millions of recipients.

### Can I send mass text messages to existing customers?

An icon of a plus symbolAn icon of a minus symbol

You can send mass text messages to existing customers if they have opted in to receive those specific kinds of text messages from you.

If you do not have explicit consent from existing customers, you’ll need to get it before you can send them any text messages. You can ask for their permission through an email, over the phone, or at a point of sale with options for the types of messages they can choose to receive from you.

Once you have a customer’s opt-in, you can add them to your mass texting list and start communicating with them via text.

### Is mass texting legal?

An icon of a plus symbolAn icon of a minus symbol

In general, mass texting is legal when you have explicit opt-in consent from recipients, you send messages from a verified number, you respect opt-out requests and you adhere to legal and regulatory requirements.

Due to the rise in spam messages and smishing scams in the past decade, there is additional scrutiny for mass texting and you need to take extra care to stay in compliance.

Review our [Guide to US SMS Compliance](https://www.twilio.com/en-us/resource-center/sms-guide-compliance) for more information and be sure to convene with your legal counsel for understanding and complying with any industry or regional regulations.

### Can I send a bulk text message from my phone?

An icon of a plus symbolAn icon of a minus symbol

A mass text is sent with an SMS API or an SMS service. Through your phone, you can send group messages to 10-30 recipients.

Learn more about [Twilio’s SMS API](https://www.twilio.com/en-us/messaging/channels/sms) for sending mass texts.

### Can I choose what number to send my text from?

An icon of a plus symbolAn icon of a minus symbol

You can choose the number you’ll send your text messages from. The most common number types for mass texting are: short codes, toll-free numbers, and A2P 10DLC long codes, and alphanumeric numbers.

Twilio has a massive inventory of [phone numbers](https://www.twilio.com/en-us/phone-numbers) to choose from for your mass texting use cases.

### Can I send mass texts to anyone?

An icon of a plus symbolAn icon of a minus symbol

You can only send mass text messages to customers who have given opt-in permission. And more specifically, you can only send them the types of messages they’ve opted in to receive (such as shipping notifications). If you want to send recipients a marketing message, you need to get explicit opt-in for those types of messages as well.

If you don’t respect recipients’ opt-in preferences, you could be flagged as a non-compliant sender and carriers may not pass through your messaging traffic.

1\. [Forrester Consulting’s Total Economic ImpactTM (TEI) of Twilio Messaging report](https://pages.twilio.com/forrester-tei-messaging?_gl=1*2o63jm*_ga*MTI2MTYzMzc4OC4xNjc2NjcxNzM0*_ga_RRP8K4M4F3*MTcxMjM0MzI1Ny4xODIuMS4xNzEyMzUwNTkyLjAuMC4w&_ga=2.58004458.1354003289.1711980555-1261633788.1676671734&_gac=1.217326180.1711554835.CjwKCAjwh4-wBhB3EiwAeJsppNqbmpULxFC-DwzdNe7MTxuL42UPYg7REYxvsAsvs1UdLw738g0ZsBoClKwQAvD_BwE)
