Setup guide

Set up ConnectSMS, from install to your first text.

A step-by-step guide for Salesforce admins: what to prepare in Twilio, how to install and connect ConnectSMS, how to give your team access, and how to test everything before you go live.

Before you start

ConnectSMS sends and receives text messages through your own Twilio account. Setting it up means preparing that Twilio account, installing ConnectSMS in Salesforce, connecting the two, and deciding who can text from which number. ConnectSMS Setup has a checklist that tracks each step and tells you what is still missing, so you always know where you are.

What you need

  • Salesforce: System Administrator access to the org, and a Lightning Experience org with a My Domain.
  • Twilio: an upgraded (paid) Twilio account, or the right to create one, as an Owner or Admin of that account. Twilio bills that account directly for messages, numbers and registrations.
  • For texting US numbers: your company's legal name, EIN (tax ID), website with a privacy policy and terms, and a description of how customers agree to receive texts. Twilio's carrier registration needs them.
  • A mobile phone you can use to receive the test messages and reply.
  • Time: about two hours of work in total, plus Twilio's review time for US registration, which can take days to weeks.
Start with Part 1 today, even if you install later. US carrier registration (A2P 10DLC or toll-free verification) is reviewed by Twilio and the carriers, and it is usually the slowest step. You can do Parts 2 to 4 while you wait. Your 14-day free trial starts when you install, so getting registration under way first leaves more of the trial for texting.
  1. Part 1 Prepare Twilio Account, phone number, Messaging Service and US registration. 30 min + Twilio review
  2. Part 2 Install ConnectSMS Install the package and open ConnectSMS Setup. 10 minutes
  3. Part 3 Connect and configure Twilio connection, numbers, webhook, rules and background jobs. 30–45 minutes
  4. Part 4 Give your team access Permission sets, number access and record pages. 15 minutes
  5. Part 5 Turn on sending and test Send a test, reply, try STOP and START, then roll out. 15 minutes

Part 1

Prepare your Twilio account

Everything in this part happens in the Twilio Console. When you finish, you have an account ConnectSMS can use, a phone number in a Messaging Service, and a registration under way for US texting.

A Twilio account Owner or AdminAbout 30 minutes, plus Twilio's review timetwilio.com

Twilio is moving customers to a new Console at 1console.twilio.com, and many accounts still use the legacy Console at console.twilio.com. The menus differ, so each step shows both paths. Choose yours to hide the other.

Step 1.1: Use an upgraded Twilio account, ideally a subaccount for this org

Where: New ConsoleSettingsAccount settingsSubaccount management Legacy ConsoleAdminAccount managementSubaccounts

  1. Sign up or sign in at twilio.com. If the account is still a trial, upgrade it: in the new Console, click the Trial banner or Upgrade your account; in the legacy Console, click Upgrade at the top of the screen. New trial accounts can only send Twilio's pre-written sample messages to verified numbers, so ConnectSMS can't use them.
  2. Get a Primary Compliance Profile approved in Trust Hub (new Console: Products & Services › Trust Hub › Profiles; legacy Console: Account › Trust Hub › Customer Profiles). Twilio says approval usually takes up to two days. Without it, texts to unverified numbers fail with error 21608 and the account is capped at 20,000 messages a day.
  3. Recommended: create a subaccount just for this Salesforce org, for example "ConnectSMS production", and separate ones for sandboxes. Click Create new subaccount (new Console) or Create subaccount (legacy Console), give it a name and save. A subaccount keeps this org's numbers, logs and usage apart, and Twilio contains compliance problems to the subaccount where they happen.
Do the rest of Part 1 inside the account ConnectSMS will use. If you created a subaccount, switch to it first, buy or move the numbers there, and later give ConnectSMS that subaccount's Account SID and Auth Token. A parent account's credentials can't manage a subaccount's Messaging Services. Moving numbers between accounts later is possible only through Twilio's API.

Step 1.2: Find the Account SID and Auth Token

Where: New ConsoleWorkbenchOverviewAPI credentials Legacy ConsoleDashboardAccount Info

ConnectSMS signs in to Twilio with two values. You paste them into ConnectSMS in step 3.1.

  • Account SID: starts with AC followed by 32 letters and numbers. It identifies the account.
  • Auth Token: a secret, like a password. It is hidden until you click show (legacy Console) or the eye icon (new Console, in the Workbench panel at the bottom of any page).

Both are also on the credentials page: Settings › Account settings › API keys & auth tokens in the new Console, or Admin › Account management › API keys & tokens in the legacy Console.

Treat the Auth Token like a password: copy it straight into ConnectSMS and don't send it by email or chat. ConnectSMS uses the Account SID and Auth Token only. API keys and Twilio's test credentials don't work with it.

Step 1.3: Get a phone number that can send SMS

Where: New ConsoleProducts & ServicesNumbers and sendersSet up a new phone number Legacy ConsolePhone NumbersManageBuy a number

You can use a number you already have in this account, or buy one. In the legacy Console, keep SMS ticked under Capabilities, and MMS too if you want to send pictures. Search, then click Buy. In the new Console, fill in Basic information, select a number, then Purchase.

Which kind of number decides what registration it needs:

NumberTexting US recipients needsNotes
US local number (10DLC) A2P 10DLC registration: a Brand and a Campaign (step 1.5) A number your customers recognize as local.
US or Canadian toll-free number Toll-free verification (step 1.5); also needed for Canada Put at most one toll-free number in each Messaging Service. Twilio warns that more can get it blocked.
Canadian local number No 10DLC registration Canadian carriers filter business texts strictly.
Numbers in other countries Depends on the country Many countries need a regulatory bundle before Twilio sells you a number.
  • ConnectSMS sends from full phone numbers. Short codes and alphanumeric sender IDs are skipped when it syncs your numbers.
  • Picture messages (MMS) go only to US, Canadian and Australian numbers, from MMS-capable numbers. You can check a number's capabilities in the Active numbers list (legacy Console) or the My Inventory tab (new Console).

Step 1.4: Put the number in a Messaging Service

Where: New ConsoleProducts & ServicesMessagingServices Legacy ConsoleMessagingServices

A Messaging Service is a group of numbers that share settings in Twilio, including where incoming texts go and the US campaign they are registered to. ConnectSMS sends only from numbers that belong to a Messaging Service, and each number can belong to exactly one.

You can do this step here in Twilio, or later from ConnectSMS (step 3.2). In Twilio:

  1. Click Create Messaging Service (new Console: Create a Messaging Service).
  2. Give it a friendly name, such as "Support messaging", choose the use case that fits, and create it.
  3. In Sender Pool (new Console: Senders), click Add Senders, keep Phone Number as the sender type, and choose your number.
  4. Leave the Integration settings as they are. ConnectSMS sets them for you in step 3.5.
Registering for US 10DLC? A campaign links to exactly one Messaging Service, so put all the local numbers you'll register in the same service. Numbers added to the service after the campaign is approved are registered automatically. Moving a registered number to another service takes it out of its campaign, and re-registering can take days.

Step 1.5: Register for US texting: A2P 10DLC or toll-free verification

Where: New ConsoleProducts & ServicesTrust HubRegistrations Legacy ConsoleMessagingRegulatory ComplianceOnboarding

US carriers block business texts from unregistered numbers. A local number that isn't in an approved A2P 10DLC campaign fails with Twilio error 30034, and an unverified toll-free number fails with 30032 (in the US and Canada). Only Twilio and the carriers can approve a registration.

ConnectSMS doesn't check registration status. A number can show Ready in ConnectSMS while carriers still block it. Confirm the registration in Twilio before you go live.

A2P 10DLC, for US local numbers

  1. Brand: in the new Console, open the A2P Brands tab and click Create A2P Brand. In the legacy Console, use the Register Brand tab. Choose the type:
    • Standard or Low-Volume Standard for businesses with a tax ID (EIN). Low-Volume Standard suits fewer than 6,000 message segments a day.
    • Sole Proprietor for individuals without an EIN. It allows one campaign and one phone number.
  2. Campaign: open A2P Campaigns › Create A2P Campaign (legacy Console: Campaign Registration), choose your brand, and pick the Messaging Service from step 1.4. Describe what you send, how people agree to receive it, and give two to five sample messages. Your privacy policy must say that mobile numbers aren't shared, and include message frequency and "Message and data rates may apply".
  3. Wait for approval. Brands are usually checked within minutes, but a manual review can take seven business days or more. For campaigns, Twilio currently quotes 10 to 15 days (other Twilio pages say several days to three weeks). After approval, the numbers themselves can take several days to register; texts fail with error 30035 meanwhile.
  4. Check it: in the legacy Console, the Messaging Service's A2P & Compliance tab should show the campaign as Verified. In the new Console, check Trust Hub › Registrations.

Toll-free verification, for toll-free numbers

New Console: Numbers and senders › Phone Numbers › your number › Finish setting up your number. Legacy Console: Phone Numbers › Manage › Active numbers › your number › Regulatory Information › Verify this toll free number. You'll need the legal business name, EIN, a website with separate privacy policy and terms links, how people opt in, sample messages and your expected volume. Twilio says to allow about three to five business days.

Twilio charges one-time and monthly fees for registrations, and they change over time. Check Twilio's current A2P 10DLC fees before you submit. Who you text and how they agreed is a decision for your compliance owner; ConnectSMS enforces opt-outs but can't make that decision for you.

Step 1.6: Protect the account (recommended)

Where: New ConsoleProducts & ServicesMessagingSettings Legacy ConsoleMessagingSettings

  • Geo Permissions: these control which countries the account can text. ConnectSMS itself doesn't limit countries, so this is the setting that does. New accounts allow only their home country. Review the list and allow only the countries you actually text. A blocked country shows in ConnectSMS as "Your Twilio account is not allowed to send to this country" (error 21408). Subaccounts inherit the parent's settings unless an Owner or Admin changes that.
  • SMS Pumping Protection (under General): select Enabled. It blocks texts to numbers Twilio suspects of fraud, for a short time, with error 30450. Twilio doesn't charge for it for US and Canadian traffic.
  • Usage triggers (optional, in Twilio billing): get an email when spending passes an amount you choose.
  • Only Owners and Admins can see the Auth Token and change these settings. Keep that list short.

Part 2

Install ConnectSMS and open Setup

Install the package, give yourself the ConnectSMS Admin permission set, and open the ConnectSMS Setup checklist.

A Salesforce System AdministratorAbout 10 minutes

Step 2.1: Install the package from AgentExchange

  1. Open the ConnectSMS listing on AgentExchange (the Start your 14-day free trial button on this site) and choose to install it in your production org or a sandbox. The install includes a 14-day free trial of every feature, and no credit card is required.
  2. When Salesforce asks who to install it for, choose Install for Admins Only. You give everyone else access with ConnectSMS permission sets in step 4.1, which is more precise than profiles.
  3. If Salesforce asks you to approve third-party access, approve it. ConnectSMS calls Twilio at api.twilio.com and messaging.twilio.com, and the package already includes the Remote Site Settings for them, so you don't create any yourself.
Installing doesn't send anything or schedule anything. Sending stays off until you turn it on at the end of this guide, and ConnectSMS stores no settings until you save them.

Step 2.2: Give yourself the ConnectSMS Admin permission set

Where:Salesforce SetupUsersPermission SetsConnectSMS AdminManage Assignments

  1. In Setup, type Permission Sets in Quick Find and open Permission Sets.
  2. Click ConnectSMS Admin, then Manage Assignments › Add Assignment.
  3. Select yourself and finish the assignment.
Setup › Permission Sets lists the five ConnectSMS permission sets. Open ConnectSMS Admin to assign it. Screenshot from Salesforce Setup in a ConnectSMS demo org.

ConnectSMS Admin opens ConnectSMS Setup and lets you view every business number. It doesn't let you text from records by itself: like everyone else, you'll need Send access to a number (step 4.2). Without the permission set, ConnectSMS Setup shows "You don't have access to ConnectSMS Setup".

Step 2.3: Open ConnectSMS Setup and find the checklist

Where:SalesforceApp LauncherConnectSMSConnectSMS Setup

Open the App Launcher, search for ConnectSMS, open the app and click the ConnectSMS Setup tab. Use a desktop browser: on a phone, ConnectSMS Setup is read-only.

Search the App Launcher for ConnectSMS. The ConnectSMS Setup item opens the setup workspace directly. Screenshot from a ConnectSMS demo org.

The Overview page has a Setup progress card with eight steps. Each shows Completed, To do, Needs attention, Problem or Optional, with a button that takes you to the right section. Choose Check again after you change something outside ConnectSMS, such as a Salesforce Site.

ConnectSMS SetupConfigure Twilio, business numbers, user access, messaging rules and system health.
Check again

Finish setup to turn on sending Sending is off

No messages are handed to Twilio until you turn on sending. Incoming messages are still received.

Twilio: connected to WorkBridge Solutions (AC…1a2b), account status: active.

Turn on sending
Setup progressWork through the checklist to connect your Twilio account, choose which people can use which business numbers, and turn on sending.
3 of 7 required steps complete (43%)
  1. 1. Connect TwilioConnectSMS is connected to your Twilio account.
    Completed Review connection
  2. 2. Business numbers2 business number(s) ready to send.
    Completed Manage numbers
  3. 3. Replies and delivery updatesSet up the webhook so replies and delivery updates reach Salesforce.
    To do Set up webhook
  4. 4. Who can use which numberNobody can send yet.
    To do Give access
  5. 5. ConnectSMS permission setsAssign the ConnectSMS User permission set to people who send messages.
    Optional Assign permission sets
  6. 6. Records you can textPeople can text from these records: Contact, Lead, Account, Case.
    Completed Manage objects
  7. 7. Background jobsTurn on the background jobs.
    To do Turn on jobs
  8. 8. Turn on sendingFinish the steps above, then turn on sending.
    To do
The Setup progress checklist part-way through setup. Sending stays off until every required step is done.

Recreated from the ConnectSMS interface with sample data.

Checklist stepWhat it checksThis guide
1. Connect TwilioAn Account SID and Auth Token are savedStep 3.1
2. Business numbersAt least one active number in a Messaging ServiceStep 3.2
3. Replies and delivery updatesThe webhook is set up on an active Salesforce SiteSteps 3.3 to 3.6
4. Who can use which numberAt least one person has Send access to a numberStep 4.2
5. ConnectSMS permission setsEveryone with number access has a ConnectSMS permission setStep 4.1
6. Records you can textAt least one object is set up for texting (done from the start)Step 3.7
7. Background jobsThe four scheduled jobs are runningStep 3.9
8. Turn on sendingEverything above is readyStep 5.2

Part 3

Connect Twilio and configure ConnectSMS

Work through ConnectSMS Setup section by section: connect Twilio, bring in your numbers, set up the webhook for replies, choose your rules and turn on the background jobs.

You, with ConnectSMS Admin30 to 45 minutes

Step 3.1: Connect your Twilio account

Where:ConnectSMS SetupTwilio connection

  1. Paste the Account SID and Auth Token from step 1.2.
  2. Check Default country calling code. ConnectSMS adds it to phone numbers saved without a country code: +1 for the US and Canada, +44 for the UK, and so on.
  3. Click Save and verify. ConnectSMS asks Twilio to confirm the details before it saves anything. You should see "Connection saved. Twilio accepted the Account SID and Auth Token." and the Twilio account name.
Twilio connection with sample values typed in, before Save and verify. After saving, the Auth Token is never shown again. Screenshot from a ConnectSMS demo org.

If it doesn't save, nothing changes, and ConnectSMS tells you why:

  • "Twilio did not accept the Account SID and Auth Token." Copy both again. If you use a subaccount, use the subaccount's own values, not the parent account's.
  • "Twilio could not find an account with this Account SID." The Account SID is wrong or belongs to another account.
  • 'Twilio reports that this account is …' The account is suspended or closed. Fix it in the Twilio Console; nothing can be sent until the account is active.

To replace the token later, for example after rotating it in Twilio, click Change next to the saved token, paste the new one and click Save and verify. See rotating the Auth Token.

Step 3.2: Bring in your business numbers

Where:ConnectSMS SetupBusiness numbersSync from Twilio

Click Sync from Twilio. ConnectSMS imports the phone numbers in your Twilio account with their capabilities and Messaging Service. New numbers start Active. Sync never deletes a number: if Twilio stops returning one, it's marked Not found in Twilio.

Business numbersThe Twilio phone numbers people send from. Each number belongs to exactly one Messaging Service.
Sync from Twilio
Sync finished

3 numbers added, 0 numbers updated, 1 numbers need attention.

NumberMessaging ServiceStatusMMSAutomation
+1 (415) 555-0199Support line Support messaging Ready Not available
+1 (415) 555-0142Sales line Support messaging Ready Not available
+1 (415) 555-0176+1 (415) 555-0176 Not in a Messaging Service Not in a Messaging Service — Not available
Business numbers after a sync. The third number isn't in a Messaging Service yet, so ConnectSMS can't send from it.

Recreated from the ConnectSMS interface with sample data.

StatusWhat it meansWhat to do
ReadyThe number can send.Nothing.
Not in a Messaging Service ConnectSMS can't send from it. Add it to a service: here with Add to a service, or in Twilio, then sync again.
Needs attentionTwilio reports that the number can't send SMS.Check the number's capabilities in Twilio.
Not found in TwilioThe number was released or moved to another account.Check the Twilio account; deactivate the number here if it's gone.

Manage Messaging Services from ConnectSMS

The Messaging Services card on this page lets you do step 1.4 without leaving Salesforce:

  • Create Messaging Service creates an empty service in Twilio. It isn't linked to any A2P campaign; do that in Twilio.
  • Add to a service puts a number in a service. The number then uses the service's settings, including its webhook.
  • Remove from service takes it out. For a registered US local number, that also takes it out of its A2P campaign, and carriers block it until it is registered again.

To buy numbers or delete a Messaging Service, use the Twilio Console, then click Sync from Twilio again.

Name each number

Open a number's menu and choose Edit number settings. The Friendly name, such as "Support line", is what people see in the From selector, so make it clear. The same dialog has the Active checkbox and Available to automation, which lets Flow, API and agent requests send from the number (step 4.5). Leave that off unless the number is meant for automated messages.

Step 3.3: Create a Salesforce Site to receive replies

Where:Salesforce SetupQuick Find: SitesSitesNew

Replies, STOP requests and delivery updates come from Twilio as web requests. Twilio can't sign in to Salesforce, so it calls a public address on a Salesforce Site in your org. ConnectSMS checks Twilio's signature on every call and rejects anything that isn't from your Twilio account. A basic Salesforce Site is enough; an Experience Cloud site also works.

  1. In Setup, type Sites in Quick Find and open Sites.
  2. If Salesforce asks you to register a Salesforce Sites domain, do that first, then click New.
  3. Enter a Site Label, such as "ConnectSMS Webhooks", keep Active selected and save.
  4. If the site isn't active yet, click Activate.
Use this site only for ConnectSMS, and don't give its guest user any other access. The only permission it needs is the one in the next step.

Step 3.4: Give the site's guest user the webhook permission

Where:ConnectSMS SetupInbound webhook1. Choose the Salesforce Site

  1. In ConnectSMS Setup, open Inbound webhook and choose Check again so the new site appears.
  2. Under 1. Choose the Salesforce Site, pick your site.
  3. Click Assign guest permission and confirm with Assign permission. ConnectSMS gives the site's guest user the ConnectSMS Webhook Guest permission set and nothing else. It only lets Twilio reach the ConnectSMS webhook; it gives no access to your records.

You'll then see "The site's guest user has the ConnectSMS webhook permission." Some ConnectSMS messages call this permission set "ConnectSMS WebHook User"; it's the same one. To assign it by hand instead, go to Setup › Sites › your site › Public Access Settings › View Users, open the guest user and add ConnectSMS Webhook Guest under Permission Set Assignments.

Step 3.5: Point your Messaging Services at ConnectSMS

Where:ConnectSMS SetupInbound webhook2. Point your Messaging Services

  1. Under 2. Point your Messaging Services, tick every service that holds numbers you'll use with ConnectSMS.
  2. Click Configure webhook on selected services.
  3. Read the confirmation, then click Configure webhook.
Inbound webhookReceive incoming messages, opt-outs and delivery updates by calling a public Salesforce Site.
Check again
Salesforce SiteConfigured 2Messaging Services0 of 2 point to ConnectSMS Signature checkEnforce (recommended)
1. Choose the Salesforce Site
Salesforce SiteConnectSMS Webhooks

The site's guest user has the ConnectSMS webhook permission.

Webhook URL for this sitehttps://yoursitedomain.my.salesforce-sites.com/services/apexrest/csms/twilio/webhook
2. Point your Messaging Services

Services to configure

Support messaging Sales messaging Configure webhook on selected services
Inbound webhook with the site chosen and two Messaging Services selected, just before Configure webhook on selected services.

Recreated from the ConnectSMS interface with sample data.

For each service you selected, ConnectSMS changes these settings in Twilio:

  • Incoming messages go to the ConnectSMS webhook on your site, by POST.
  • Delivery status updates go to the same address.
  • The service's settings apply to all its numbers, instead of each number's own webhook.

The address looks like https://yoursitedomain.my.salesforce-sites.com/services/apexrest/csms/twilio/webhook. To check it in Twilio, open the service's Integration settings and look at incoming messages and the delivery status callback:

New ConsoleProducts & ServicesMessagingServicesyour serviceIntegration Legacy ConsoleMessagingServicesyour serviceIntegration

This replaces any webhook already set on those services. If another system, such as a Twilio Studio flow or another app, used them, it stops receiving those messages. Use a separate Messaging Service for ConnectSMS if you need both.
Don't paste the webhook address into Twilio yourself. ConnectSMS checks each request's signature against the address it saved when you chose Configure webhook. Until you've used that button, ConnectSMS rejects Twilio's requests, so replies never arrive.

Right after this step the checklist may say the webhook "needs a look", with "ConnectSMS has not received any reply or delivery update from Twilio in the last 7 days". That's expected: it clears after your first test in Part 5.

Step 3.6: Keep the signature check on Enforce

Where:ConnectSMS SetupInbound webhook3. Signature check

The signature check proves each request came from your Twilio account. Leave it on Enforce (recommended), which is the default. ConnectSMS won't let you turn on sending with any other setting.

  • Monitor (troubleshooting only) accepts requests that fail the check and records them. Use it only briefly while you fix a problem.
  • Off (development orgs only) lets anyone who knows the address post fake messages. Never use it with real customer data.

Step 3.7: Choose the records people can text

Where:ConnectSMS SetupRecipients

Contacts, Leads, Accounts and Cases work out of the box. ConnectSMS tries their phone fields in order and uses the first valid number: Mobile Phone, then Phone for Contacts and Leads; the Contact's numbers for Cases; Phone for Accounts, with Person Mobile Phone first when Person Accounts are on.

To text from other objects, such as Work Orders or your own custom objects, click Add object, enter the object's API name, choose Find phone fields and put the fields in order. Fields can be on the record or on one record it looks up to. Texting from any object explains the options.

RecipientsChoose which records people can text from, and which phone fields ConnectSMS uses.
+ Add object
Objects people can text from ConnectSMS tries the phone fields in the order listed and uses the first valid number. Built-in settings for Contact, Lead, Account and Case apply until you customize them.
ObjectPhone fields (in order)Built-in settingsStatus
Service VisitService_Visit__c
  1. Site_Contact_Mobile__c
  2. Customer__r.MobilePhone
Active
Work OrderWorkOrder
  1. Contact.MobilePhone
  2. Contact.Phone
Active
ContactContact
  1. MobilePhone
  2. Phone
Built-in Active
LeadLead
  1. MobilePhone
  2. Phone
Built-in Active
CaseCase
  1. Contact.MobilePhone
  2. Contact.Phone
Built-in Active
AccountAccount
  1. Phone
Built-in Active

Showing 1–6 of 6 objects

Recipients with the four built-in objects plus two added ones.

Recreated from the ConnectSMS interface with sample data.

Step 3.8: Set your messaging policies

Where:ConnectSMS SetupPolicies

Each card on Messaging policies has a sensible default. Review them, then click Save changes.

PolicyDefaultWhat to decide
Opt-outs A STOP to any business number blocks all of them Whether a STOP reaches all your numbers or only the one that received it. Let your compliance owner choose.
Quiet hours Off; 9 PM to 8 AM when turned on Whether to hold outreach and automated texts overnight. One-to-one messages aren't delayed. Always set the Business time zone, which quiet hours and outreach schedules use.
Daily safeguard 0 (no limit) A daily maximum that catches mistakes such as runaway automation. Set it comfortably above your normal volume.
Picture and file messages (MMS) Off Turn on Allow attachments through temporary public links to send pictures. Twilio fetches each file from a public link that ConnectSMS deletes after the hours you set (1 to 168, default 24).
Automation default sender None The number Flow, API and agent requests use when they don't name one. Without it, those requests fail with "No sender was given and no default is configured".
Advanced 50 messages per dispatcher run Leave it unless the error log shows Salesforce limit errors.
Messaging policies with their defaults: a STOP blocks all your numbers, and quiet hours are off. Set the Business time zone either way. Screenshot from a ConnectSMS demo org.

Step 3.9: Turn on the background jobs

Where:ConnectSMS SetupOperationsBackground jobsTurn on background jobs

A scheduled job runs every 15 minutes. It sends scheduled messages and outreach, checks messages whose outcome is unknown, and deletes expired attachment links. Messages people send right away don't wait for it.

  1. Open Operations and the Background jobs tab.
  2. Click Turn on background jobs. The first run starts within 15 minutes.
Before: the jobs are Off and Turn on background jobs is on the right. Screenshot from a ConnectSMS demo org.
Background jobsMessagesErrorsAudit logTest message

A scheduled job runs every 15 minutes. It sends scheduled messages and outreach, checks messages whose outcome is unknown or stuck, and deletes expired attachment links. Without it, scheduled messages and outreach are not sent. The job runs as the admin who turns it on.

Background jobs are running. Running

Last run: Today, 2:15 PM

Turn off background jobs
Job nameScheduleStatusNext runRuns as
ConnectSMS Dispatcher :00Scheduled Apex Every hour at :00 Scheduled Today, 3:00 PM Alex Kim
ConnectSMS Dispatcher :15Scheduled Apex Every hour at :15 Scheduled Today, 3:15 PM Alex Kim
ConnectSMS Dispatcher :30Scheduled Apex Every hour at :30 Scheduled Today, 2:30 PM Alex Kim
ConnectSMS Dispatcher :45Scheduled Apex Every hour at :45 Scheduled Today, 2:45 PM Alex Kim
After: four scheduled jobs, one for each quarter of the hour, running as the admin who turned them on.

Recreated from the ConnectSMS interface with sample data.

The jobs run as the admin who turns them on. Use an admin account that will stay active. If that person leaves, turn the jobs off and on again from another admin account. In Setup › Scheduled Jobs they appear as ConnectSMS Dispatcher :00, :15, :30 and :45. Manage them from ConnectSMS rather than deleting them there.

Part 4

Give your team access

People need two things to text: a ConnectSMS permission set, which says what they can do, and access to a business number, which says which numbers they can use.

You, with ConnectSMS AdminAbout 15 minutes, plus a few minutes per team

Tip: give access only to yourself at first. Finish the test in Part 5, then come back and give your team access. The checklist needs just one person with Send access.

Step 4.1: Assign ConnectSMS permission sets

Where:ConnectSMS SetupAccessPermission sets

Permission setGive it toWhat it allows
ConnectSMS User Everyone who texts customers Send and read messages on the numbers they have access to, use templates, and work in the Inbox.
ConnectSMS Campaign Manager People who run outreach Create, launch, pause and cancel outreach, and manage shared templates. Add ConnectSMS User for one-to-one texting.
ConnectSMS Automation Integration and agent users Flow, API and agent requests can send from numbers marked Available to automation.
ConnectSMS Admin ConnectSMS administrators Everything in ConnectSMS Setup. Sending from records still needs Send access to a number.
ConnectSMS Webhook Guest Only the Site guest user Lets Twilio reach the webhook. Never assign it to people.

Assign them in Salesforce Setup (Permission Sets › Manage Assignments), or from ConnectSMS Setup: open Access, use a person's row menu and choose Permission sets. Changes there apply right away and are audited.

Step 4.2: Give people access to business numbers

Where:ConnectSMS SetupAccessAdd access

  1. Click Add access.
  2. Under Give access to, choose A user or A public group, and pick them.
  3. Choose the Business number.
  4. Tick Can send, Can view or both. Send includes view. View only lets someone read the number's conversations without sending.
  5. For a person, optionally tick Use as this person's default business number, then save.
Add access
Give access to A user A public group
UserAlex Kim
Business numberSupport line · +1 (415) 555-0199
Can send Can view

Send includes view: anyone who can send from a number can also see its conversations. View only lets someone read this number's conversations without sending.

Use as this person's default business number
CancelSave
Add access: one person gets Send access to the support line, as their default number.

Recreated from the ConnectSMS interface with sample data.

  • Public groups reach their direct members only. People in nested groups or roles don't get access. Members still need the ConnectSMS User permission set.
  • ConnectSMS never picks a number for anyone. If someone has no Send access, they can read but not text.
  • When you Revoke access, ConnectSMS first shows what changes, such as queued messages or outreach that would be blocked. Nothing is revoked until you confirm.

Step 4.3: Add Text Messages to your record pages

Where:SalesforceA record pageSetup gearEdit Page

ConnectSMS doesn't change your record pages, so add its component where people work. Do this for Contacts, Leads, Accounts, Cases and each object you added in Recipients.

  1. Open any record of that type, click the Setup gear and choose Edit Page.
  2. In the component list, search for ConnectSMS Text Messages and drag it onto the page, for example the right-hand column or a new tab.
  3. Optionally set Header label (default "Text messages"). Leave Message history height (pixels) blank so the component fits the page with the message box always visible.
  4. Click Save. If Salesforce asks, click Activate and choose who gets the page: org default, or specific apps, record types and profiles.
ConnectSMS Text Messages placed on a Contact page, with its two settings on the right. In your org the ConnectSMS components are listed under Custom - Managed. Use Text Messages, not ConnectSMS Messenger (legacy). Screenshot from Lightning App Builder in a ConnectSMS demo org.
If people see "Texting isn't turned on for this type of record", the object isn't set up in Recipients (step 3.7). The component works on phones too, in the Salesforce mobile app.

Step 4.4: Show people the Inbox

Where:SalesforceApp LauncherConnectSMS

  • The ConnectSMS app has the tabs Inbox, Outreaches, Templates, SMS Messages and ConnectSMS Setup. People see the ones their permission set allows. ConnectSMS User shows Inbox and Templates.
  • The utility bar of the ConnectSMS app already has Messages, a compact inbox with an unread count.
  • In your other apps, such as a Sales or Service console: open Setup › App Manager, edit the app, go to Utility Items, click Add Utility Item and choose ConnectSMS Inbox (Utility Bar). You can also put the ConnectSMS Inbox component on a Home page or an app page.
The ConnectSMS app's Utility Items: Messages is the ConnectSMS Inbox (Utility Bar). Add the same item to your other apps. Screenshot from Salesforce App Manager in a ConnectSMS demo org.

Step 4.5: Set up automation users (optional)

Where:ConnectSMS SetupBusiness numbersEdit number settingsAvailable to automation

If you'll send from Flow, Apex, the REST API or Agentforce:

  • Mark the numbers automation may use as Available to automation, and choose an Automation default sender under Policies.
  • Give integration and agent users the ConnectSMS Automation permission set.
  • Mind who runs the Flow. A record-triggered Flow runs as the person who changed the record, so that person needs Send access to the number, or ConnectSMS Automation plus a number available to automation. The Automated Process user can't hold permission sets.

Sending SMS from Salesforce Flow walks through a Flow, and the automation reference covers Apex and REST.

Part 5

Turn on sending and test end to end

Turn sending on, send a test to your own phone, reply to it, and try STOP and START. When all of that works, ConnectSMS is ready for your team.

You, with your mobile phoneAbout 15 minutes

Step 5.1: Check that setup is ready

Where:ConnectSMS SetupOverviewSetup progress

Click Check again on the Overview. The status card should say Ready to turn on sending. If it doesn't, the last checklist step lists what's still needed:

  • a saved Twilio connection (3.1);
  • at least one active number that is ready (3.2);
  • the webhook set up (3.5);
  • at least one person with Send access to a number (4.2);
  • the background jobs turned on (3.9);
  • the signature check on Enforce (3.6).

Step 5.2: Turn on sending

Where:ConnectSMS SetupOverviewTurn on sending

Click Turn on sending. The confirmation shows how many numbers and people can send. Add a reason if you like, then confirm. The change is recorded in the audit log with your name.

Turn on sending?
  • People with Send access to a business number will be able to send real text messages through your Twilio account.
  • 2 active business number(s) can be used.
  • 1 people have access to at least one number.
  • Queued and scheduled messages are handed to Twilio in the next dispatcher run (every 15 minutes).
  • Twilio charges your account for every message, number and registration. ConnectSMS doesn't change those charges.
Reason (optional)Go-live after end-to-end test

This change is audited: your name, the time and any reason you give are recorded in the audit log (Operations).

CancelTurn on sending
The Turn on sending? confirmation. From now on, people with Send access can send real text messages.

Recreated from the ConnectSMS interface with sample data.

Turn off sending is your emergency stop. It stops every ConnectSMS message at once: one-to-one, replies, outreach and automation. Queued and scheduled messages wait, and incoming messages still arrive. You'll be asked for a reason.

Step 5.3: Send a test message to your phone

Where:ConnectSMS SetupOperationsTest message

  1. Choose the From (business number).
  2. Enter your mobile number in To (mobile phone number), with the country code, for example +1.
  3. Keep or change the message, click Send test message and confirm. It's a real text, and Twilio charges for it.
  4. Click Refresh status after a minute. You want Delivered, and the text on your phone.
Background jobsMessagesErrorsAudit logTest message

Check a business number end to end: the message goes through the same checks and dispatcher as any other message. Reply to it from the phone to test incoming messages too.

*From (business number)Support line · +1 (415) 555-0199
*To (mobile phone number)+1 (415) 555-0110
*MessageThis is a test message from ConnectSMS.
Send test message
Test message requested

Status: Delivered.

Refresh status
Test message after sending. Delivered means Twilio and the carrier confirmed it reached the phone.

Recreated from the ConnectSMS interface with sample data.

The test message goes through the same checks as every other message. It only works once sending is on. A Delivered status also proves that delivery updates reach Salesforce. If it says Failed, the reason includes a Twilio error code: see Troubleshooting.

Step 5.4: Reply from your phone

Where:ConnectSMS SetupInbound webhookLatest activity

Reply to the test text, for example "Got it". Within a few seconds:

  • Inbound webhook › Latest activity shows a time for Last incoming message.
  • The reply appears in the Inbox, in a conversation with your number.
  • The checklist's "Replies and delivery updates" step turns Completed after you choose Check again.

If the reply doesn't arrive, see Replies don't reach Salesforce.

Step 5.5: Text from a record

Put your mobile number on a test Contact and open it. In the Text Messages component, choose your number in the From selector, write a message and click Send. Reply from your phone: the message history on the record shows both. This confirms the record page, your number access and the whole round trip.

Step 5.6: Test STOP and START

Where:ConnectSMS SetupOpt-outs

  1. Reply STOP to one of the test texts. Twilio sends its standard confirmation.
  2. Open Opt-outs: your number is listed as Opted out, with the source Inbound keyword. If you try to text yourself now, ConnectSMS blocks it and says why.
  3. Reply START. The opt-out is lifted and you can receive texts again. (Toll-free numbers accept START and UNSTOP.)

With the default policy, a STOP to one of your numbers blocks all of them from texting that phone. You can also add opt-outs by hand, for example when someone asks by phone, with Add opt-out.

Step 5.7: Roll out to your team

  1. Give your team their permission sets and number access (4.1 and 4.2).
  2. Check that the Text Messages component is on the record pages they use (4.3).
  3. Show them the Inbox and the From selector, and agree who answers which number. The shared inbox explains assigning and closing conversations.

Troubleshooting

Start with the Setup progress checklist and Operations. The Messages tab lists messages that need attention (Unknown outcome, Failed, Blocked and Stuck) with the reason, and the Errors tab holds the error log. Some ConnectSMS messages say "ConnectSMS Settings": that means ConnectSMS Setup.

What you seeUsual causeWhat to do
"The connection wasn't saved." Twilio did not accept the Account SID and Auth Token A typo, a rotated token, or the parent account's details for a subaccount Copy both values again from the account that owns the numbers (1.2)
A number shows Not in a Messaging Service It isn't in any service in Twilio Use Add to a service, or add it in Twilio and sync again
Turn on sending is greyed out A required step isn't done Read "Still needed" in the last checklist step (5.1)
Test message: "Sending is turned off for ConnectSMS" The test uses the same rules as every message Turn on sending first (5.2)
Replies don't reach Salesforce, and sent messages stay at Sent The webhook isn't reaching ConnectSMS On Inbound webhook, check that the site is active, the guest user has the permission, and every service says "Goes to ConnectSMS". Run Configure webhook again rather than pasting the address. If you just rotated the Auth Token, update it in ConnectSMS. In Twilio, open the message in Monitor › Logs › Messaging to see the webhook's response.
"You can't send text messages" No ConnectSMS User permission set Assign it (4.1)
"You don't have a business number to send from" No Send access to any number Give access (4.2). Admins need it too
"Texting isn't turned on for this type of record" The object isn't in Recipients Add it (3.7)
Scheduled messages and outreach don't go out; Operations shows Stuck messages Background jobs are off, or the admin who turned them on was deactivated Turn the jobs off and on again from an active admin (3.9)
Flow or API sends fail with "No sender was given and no default is configured" No automation default sender Choose one under Policies (3.8)
"The running user is not allowed to send from …" The user running the Flow or integration has no access to that number Give them Send access, or ConnectSMS Automation plus a number available to automation (4.5)
"Sending is paused because this org is a copy of the org where sending was turned on" This is a sandbox copy Follow Sandboxes and test orgs, then turn sending on here

Twilio error codes

When Twilio or a carrier rejects a message, ConnectSMS shows the reason with the Twilio error code. The common ones during setup:

CodeMeaningWhat to do
20003Twilio rejected the credentialsUpdate the Auth Token in ConnectSMS; check you used the right account or subaccount
21211The recipient number isn't a valid phone numberFix the number on the record
21408The account isn't allowed to text this countryAllow the country in Twilio Geo Permissions (1.6)
21606The business number can't send this kind of messageCheck the number's capabilities in Twilio
21608The account is a trial, or has no approved Primary Compliance ProfileUpgrade and get the profile approved (1.1)
21610The recipient replied STOPThey must reply START before they can receive texts again
21614The recipient number can't receive textsUse a mobile number
21660The number belongs to another Twilio accountSync numbers; check the connected account
21704, 21711The Messaging Service has no numbers, or the number isn't in itFix the service in Twilio, then Sync from Twilio
30003, 30005, 30006The phone is off or unreachable, the number isn't in service, or it's a landlineCheck the number with the customer
30007The carrier filtered the message as possible spamReview the content and your registration
30032The toll-free number isn't verified yetFinish toll-free verification (1.5)
30034The US number isn't in an approved A2P 10DLC campaignRegister it, and keep it in the campaign's Messaging Service (1.5)
30035The number's 10DLC registration is still being set upWait; this can take several days after campaign approval
30450Blocked for a short time by SMS Pumping ProtectionTry again later; contact Twilio if it keeps happening for real customers

Sandboxes and test orgs

Set up each sandbox with its own upgraded Twilio subaccount and its own numbers, never production's. New trial accounts and Twilio's test credentials don't work with ConnectSMS.

A sandbox refresh copies production's ConnectSMS settings, including the Twilio credentials. After every refresh:

  1. Sending is paused in the copy automatically. Leave it off for now.
  2. Before anything else, open Twilio connection, click Change and save the sandbox subaccount's Account SID and Auth Token.
  3. Sync the numbers, set up a Salesforce Site in the sandbox, and configure the webhook for the sandbox's Messaging Services.
  4. Turn on the background jobs, and turn on sending when you're ready to test.
Never choose Configure webhook in a sandbox that still has production's credentials. It would point production's Messaging Services at the sandbox, and production would stop receiving replies and STOP requests. If production credentials were ever in a sandbox that many people can open, rotate production's Auth Token.

After go-live

Rotating the Auth Token

ConnectSMS uses the Auth Token both to send and to check Twilio's signature on replies, and Twilio signs replies with the primary token. So rotate at a quiet time, and do the last two steps back to back:

  1. In Twilio, open the credentials page, click Request a secondary token in the Auth Tokens section, and copy the new token. New ConsoleSettingsAccount settingsAPI keys & auth tokens Legacy ConsoleAdminAccount managementAPI keys & tokens
  2. In ConnectSMS Setup › Twilio connection, click Change, paste the secondary token and click Save and verify.
  3. Straight away, click Promote to Primary in Twilio. Replies that arrive between these two steps are rejected.

Adding a number later

Buy it in Twilio, add it to the right Messaging Service (the one linked to your A2P campaign, for a US local number), click Sync from Twilio, give it a friendly name, and give people access. If you created a new Messaging Service, run Configure webhook for it too.

Keep an eye on Operations

  • Unknown outcome messages are ones where Twilio's answer was lost, for example in a timeout. ConnectSMS never resends them automatically; Check with Twilio looks each one up.
  • Failed and Blocked messages show why. Stuck messages usually mean the background jobs aren't running.
  • The Audit log records who changed the connection, numbers, access, policies, opt-outs and the sending switch.
  • Usage and billing are in the Twilio Console, which bills your account directly.

Go-live checklist

Tick each item as you go. Your ticks are saved in this browser, so you can come back to the guide later.

FAQ

Setup questions, answered.

How long does it take to set up ConnectSMS?

About two hours of work: 30 minutes in Twilio, 10 minutes to install, 30 to 45 minutes in ConnectSMS Setup, and the rest for access and testing. US carrier registration adds Twilio's review time, which Twilio currently quotes as 10 to 15 days for A2P 10DLC campaigns and about three to five business days for toll-free verification.

Do I need a developer to set up ConnectSMS?

No. Every step is done in the Twilio Console, Salesforce Setup and ConnectSMS Setup, with no code. A developer is only needed if you want to send from Apex or the REST API.

Can I use a Twilio trial account?

No. New Twilio trial accounts can only send Twilio's pre-written sample messages to verified numbers. Upgrade the account and get a Primary Compliance Profile approved in Twilio Trust Hub before you connect it.

Does ConnectSMS register my numbers for A2P 10DLC?

No. Registration is done in Twilio, and only Twilio and the carriers can approve it. ConnectSMS can create a Messaging Service and add numbers to it, but it doesn't read registration status, so confirm the campaign or toll-free verification in Twilio before you go live.

Can I keep using a Messaging Service that another system uses?

Not for incoming messages. Configure webhook replaces the service's incoming-message and delivery-status addresses, so the other system stops receiving them. Put the numbers you use with ConnectSMS in their own Messaging Service.

Why do I need a Salesforce Site?

Replies, STOP requests and delivery updates come from Twilio as web requests, and Twilio can't sign in to Salesforce. A Salesforce Site gives it a public address in your org. The site's guest user gets only the ConnectSMS Webhook Guest permission set, and ConnectSMS checks Twilio's signature on every request.

Can I test ConnectSMS in a sandbox?

Yes, with its own upgraded Twilio subaccount and numbers. After a refresh, sending pauses in the copy automatically. Replace the Twilio credentials with the sandbox's before you configure the webhook, so production's Messaging Services keep pointing at production.

Keep exploring

Try it now: every feature, free for 14 days

Ready to set it up?

Install ConnectSMS from AgentExchange and follow this guide. If you get stuck, talk to us.

  • No credit card required
  • Listed on Salesforce AgentExchange
  • Then $120 per user per year
  • Runs on your own Twilio account

ConnectSMS is published by WorkBridge Solutions. Twilio bills your Twilio account directly for messaging, including during the trial.