Free live webinar

Same team, more pipeline: AI-powered marketing for Dynamics 365 · Wed 11 Nov · 1:00pm ET · with Microsoft MVP Mark SmithSame team, more pipeline · 11 Nov

Save my seat

SMS provider options

Your texts can go out two ways. By default the app sends them from US phone numbers on a Twilio account it runs for you. Or you can connect your own provider account, so texts go out through numbers and sender names you already hold — which is also how you text from outside the US. You can use both at once. Twilio is the provider you can connect today.

What the app's own numbers cover

Both options live side by side under Settings → Integrations → SMS: the Twilio (managed by us) card is the account the app provides, and the cards below it are your own provider accounts.

The numbers the app provides are US numbers only, local or toll-free. You buy them under Settings → Integrations → SMS → Manage → Numbers, and the app guides you through the registration and verification each type needs — see Email and SMS setup.

It doesn't sell Canadian, UK, Australian or other non-US numbers, and it no longer offers international registrations. If you bought an international number before this changed, it stays in your Numbers list and any international registration you hold stays visible, read-only, on the Registrations tab. To text from another country, or to keep numbers you already own, connect your own account.

Connecting your own Twilio account

You'll need a Twilio account of your own, with a Messaging Service whose sender pool holds the numbers or sender names you want to send from. Only admins can connect a provider, and you can connect one Twilio account. Twilio bills that account directly, and its sending limits and country permissions apply.

  1. Go to Settings → Integrations → SMS.
  2. On the Twilio (your own account) card, select Connect.
  3. Enter your Account SID (it starts with AC) and Auth token — both are on the home page of the Twilio Console, under Account Info.
  4. Enter your Messaging Service SID (it starts with MG), from Messaging → Services in the Twilio Console. This is required: its sender pool is what picks which of your numbers each message goes out from, so add the numbers you want to send from to that service before connecting. You can also add a Label to recognise the account by.
  5. Select Connect. The app checks the credentials with Twilio before saving anything. If Twilio can't be reached you'll be told nothing was saved — that doesn't mean the credentials are wrong, so try again shortly. A Messaging Service SID that isn't on that account is refused outright. Once everything is accepted the card shows Connected.

Your credentials are stored encrypted and never leave the service that sends your texts; the app never shows them again.

Your sending numbers

You don't list your numbers here. The card shows your Messaging Service's sender pool — the numbers and sender names it will send from — read straight from your Twilio account each time you open the page. Nothing is copied into the app, so the list can't drift out of date with your console.

To change what you can send from, add or remove senders in the Twilio Console under Messaging → Services → your service → Sender Pool. The change shows here within a minute.

Two things the card will tell you:

  • "This Messaging Service has no senders, so it cannot send." Add your numbers to the service in your console.
  • "Couldn't read the sender pool." A problem reaching Twilio, not a problem with your account — sending is unaffected, because Twilio still picks the number.

Connections made before this changed

If you connected your account earlier and registered individual senders, that keeps working exactly as it did — your senders are listed on the card, checked against your account, and flagged if one is no longer there. Nothing migrates on its own. Reconnect the account when you want the provider to pick the number instead.

Sending from your own account

A text that names one of your registered senders goes out through the account that sender belongs to.

When you ask the assistant to send a text you can say which sender to use — for example, "send this to the Spring Sale segment from +14155552671." The assistant still shows you the draft before anything goes out.

When you don't name a sender

Journeys, broadcasts and most assistant sends don't name one. The app then:

  1. uses one of the app's own numbers, if one can reach every recipient — so if you've always sent from an app number, nothing changes;
  2. otherwise hands the send to your provider, whose Messaging Service picks a number per recipient from its pool.

Step 2 is what makes a mixed audience work. A segment with US, UK and other contacts can't be served by any single number — a US number doesn't deliver abroad — so your provider chooses an appropriate one for each message instead of everyone getting the same one.

Connecting your own account doesn't quietly move your existing sending onto it: the app's own numbers are still preferred whenever they can do the job.

When a send is refused

If none of your registered senders can reach the recipients, the send is refused with the reason instead of being handed to your provider to fail later. The draft is marked skipped and the reason appears on it. The usual causes:

  • One of the app's own numbers to a recipient outside the US and Canada. The app's numbers are for US and Canadian recipients; connect your own provider account to send anywhere else. (Your own numbers aren't limited this way — your provider decides where they can reach.)
  • An alphanumeric sender ID to a US or Canadian recipient. Carriers there don't accept them. Use one of your numbers instead.
  • One send mixing US/Canada and international recipients, when no single sender reaches both and you have no provider connection to hand it to. Connect your own account, or send them as separate drafts.

A refused send is not retried: nothing changes until you register a sender that covers those recipients.

Delivery status and replies

Delivery status works on its own. Each text carries the address Twilio reports back to, so delivered and failed texts appear with nothing for you to set up.

A draft marked sent means it was handed to your provider — not that it arrived. When the provider then rejects or fails to deliver it, the reason now appears on the draft in your provider's own words, with its error code. Look there first when a text doesn't turn up.

Replies need one step from you. Twilio only passes incoming messages to the app if it's told where to send them, and that setting lives inside your own Twilio account, which the app deliberately doesn't change for you. Until you set it, replies don't reach the app, and that includes STOP — so opt-outs aren't recorded.

First, copy the Incoming message webhook URL from your connection's card under Settings → Integrations → SMS. Then, in the Twilio Console:

If you connected with a Messaging Service (every connection made today):

  1. Go to Messaging → Services and open the Messaging Service you connected.
  2. Open Integration. Under Incoming Messages, choose Send a webhook.
  3. Paste the URL as the Request URL, set the method to HTTP POST, and save.

That one setting covers every number in the service's sender pool. If Incoming Messages is set to Defer to sender's webhook instead, each number's own webhook is used, and the URL has to go on each of them as below.

If your connection has registered senders and no Messaging Service (older connections):

  1. Go to Phone Numbers → Manage → Active numbers and open each of your senders.
  2. Under Messaging Configuration, set A message comes in to Webhook.
  3. Paste the URL, set the method to HTTP POST, and save.

The URL stays the same when you update your credentials. If you disconnect and connect again you get a new one, so paste that into Twilio too.

Opt-outs

When someone replies STOP, the app marks them Do-Not-Contact for SMS and leaves them out of future sends. That depends on the step above: until it's done, a STOP reply never reaches the app, and the app only learns of an opt-out when Twilio refuses a later text to that person.

The app recognises an opt-out two ways. If the reply carries Twilio's opt-out flag, it follows Twilio — Twilio sets the flag when your Messaging Service has Advanced Opt-Out on, so if you send through one, turn it on. Otherwise it reads the message itself: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END or QUIT opts the person out, and START, YES or UNSTOP opts them back in. The keyword must be the whole message (capitalisation and surrounding spaces don't matter), so "please don't stop texting me" is an ordinary reply.

Compliance stays in your provider's console

The registrations your texts need — brand and campaign registration, toll-free verification, sender ID registration, and whatever your destination countries require — are done in your provider's own console, not in the app. The app has no registration screens for your own account: if it's the only way you send, the managed account's Registrations tab just points you back to your own provider card. Registrations for the app's own US numbers still live on that tab.

Updating or disconnecting

Updating credentials. If your Twilio auth token changes — you rotated it, or Twilio revoked it — select Update credentials on the card and enter the full set again: Account SID, auth token, and the Messaging Service SID if you use one (leaving it blank removes it). The app checks them with Twilio before saving, and your senders stay. A connection stays tied to the Twilio account it was made with, because its senders belong to that account, so credentials for a different account are refused. To switch accounts, disconnect, connect the new one and register its senders.

Disconnecting. Select Disconnect and confirm. This deletes the stored credentials and removes every sender registered under the connection; nothing changes in your Twilio account. A text that names one of those senders is then treated like any text that doesn't name a registered sender.

What's coming later

Twilio is the only provider you can connect today. Sakari, Sinch and Infobip are planned as further options on the same screen, but are not available yet.