Salesforce SMS Integration with Flow HTTP Callout or Apex
Send SMS from Salesforce when a lead comes in, a case is resolved or a payment falls due. Connect our SMS API through a Named Credential and a Flow HTTP Callout, with no AppExchange app to buy or install.

To send SMS from Salesforce, create an External Credential that adds your API key as a Bearer header and a Named Credential for our API host. In Flow Builder, add an HTTP Callout action that POSTs to /api/v2/sms/send with the sender ID, mobile number and message. Call it from a record-triggered flow, or use Apex with the same credential.
Flow HTTP Callout settings
Create an External Credential with a custom header, Authorization: Bearer followed by your API key, and a Named Credential for https://whitelabled.securesmsc.com. Then add an HTTP Callout action in Flow Builder with method POST and path /api/v2/sms/send, and paste this sample request body.
Sample request body
{
"sender_id": "ACMEIN",
"recipient": "919812345678",
"message": "Hi Priya, your service request 00012345 is now resolved. - AcmeIn",
"route": "transactional",
"dlt_template_id": "1107XXXXXXXXXXXXXXX"
}The same call from Apex
// Named Credential 'SMS_Gateway' points to https://whitelabled.securesmsc.com // and its External Credential adds the header Authorization: Bearer <API key> // c is the Contact, cs the Case HttpRequest req = new HttpRequest(); req.setEndpoint('callout:SMS_Gateway/api/v2/sms/send'); req.setMethod('POST'); req.setHeader('Content-Type', 'application/json'); req.setBody(JSON.serialize(new Map<String, Object>{ 'sender_id' => 'ACMEIN', 'recipient' => c.MobilePhone, 'message' => 'Hi ' + c.FirstName + ', your service request ' + cs.CaseNumber + ' is now resolved. - AcmeIn', 'route' => 'transactional' })); HttpResponse res = new Http().send(req); // 200 = queued; read data.message_id
No-code with Flow
Flow HTTP Callout has been generally available since Winter '24.
Key kept in Salesforce
The API key lives in an External Credential, not in your flows.
DLT-ready requests
Pass dlt_template_id, or let the platform match your approved templates.
Any object, any trigger
Leads, cases, opportunities or custom objects can all send SMS.
Two ways to connect Salesforce
We do not publish an AppExchange app. Salesforce can call our REST API directly, and that is simpler and cheaper than a connector. Admins can use a Flow HTTP Callout, which Salesforce made generally available in Winter '24. Developers can use an Apex callout with the same Named Credential.
Both use the v2 SMS API, so your requests carry the sender ID, the mobile number, the message and, if you like, the DLT template ID. The reply contains a message ID that you can save on the record, which gives your support team a delivery reference when a customer says an SMS never arrived.
Set up the credential once
Create an External Credential with a custom header named Authorization, set to Bearer followed by your API key. Then create a Named Credential that uses it, with our API host as the URL. Grant access to the external credential's principal through a permission set for the users or the automated process that will send SMS.
Salesforce sends callouts from its own range of IP addresses. In the v2 API each key is tied to allowed IP addresses, so ask our team to add Salesforce's published ranges to your key before you test. Otherwise the second callout from a different Salesforce address is refused with HTTP 403.
Build the flow
In Flow Builder, add an Action, choose Create HTTP Callout, pick your Named Credential and add a POST method with the path /api/v2/sms/send. Paste the sample request body from this page so Flow can build the request structure. Then use the action in a record-triggered flow, such as when a Case status changes to Closed.
Build the message with a text template that matches your DLT template exactly, with only the variable parts changing. Map recipient to the record's mobile field, with spaces and dashes removed, so the number has 10 digits or starts with 91.
- Lead created: thank the enquirer and share the sales contact
- Case resolved: tell the customer and ask them to reply if it is not fixed
- Opportunity won: confirm the order and the delivery date
- Invoice due: send a payment reminder on the due date
Handling replies and errors
Check the HTTP status in the flow. A 200 reply means the SMS is queued, and data.message_id identifies it. A 422 with TEMPLATE_MISMATCH means the text does not match an approved template. A 401 or 403 points to the key or the allowed IP addresses. Send failures to a fault path that creates a task, so someone follows up.
In a record-triggered flow, put the callout on the Run Asynchronously path, because callouts cannot run in the immediate path that saves the record. In Apex, make the callout from a queueable or future method for the same reason. Keep the record ID in the request so you can write the message ID back to it later.
How it works
Get your API key
Create an account, finish DLT registration and copy your API key from the panel.
Allow Salesforce IPs
Ask our team to add Salesforce's IP ranges to your key.
Create credentials
Add the External Credential with the Bearer header and a Named Credential for our API host.
Build and test
Add the HTTP Callout action to a flow, send a test SMS and check the message ID.
Frequently asked questions
Can I send SMS from Salesforce without an AppExchange app?
Yes. Salesforce can call an external REST API directly. Admins use a Flow HTTP Callout action, generally available since Winter '24, and developers use Apex callouts. Both use a Named Credential to store our API host and your API key, so there is no connector to buy or maintain.
Why does my second Salesforce callout get HTTP 403?
In our v2 API, each key is tied to the IP addresses allowed to use it. Salesforce sends callouts from many addresses, so the first one is accepted and later ones from other addresses are refused. Ask our team to add Salesforce's published IP ranges to your key, then test again.
Do SMS from Salesforce need DLT templates?
Yes. Every SMS to an Indian number must match a template approved on your DLT portal, whatever system sends it. Build the message in your flow so only the variable parts change, such as the name or case number, and pass the dlt_template_id for faster matching.
Can I send bulk SMS from a Salesforce report or list view?
For large lists, export the records and upload them in our panel, or call the send-bulk endpoint, which takes up to 1,000 numbers per request. Flow HTTP Callouts suit one SMS per record event. Sending thousands from a single flow run can hit Salesforce callout limits.
Can customers reply to SMS sent from Salesforce?
Customers cannot reply to a text header such as VM-ACMEIN-S. If you need replies, add a two-way SMS long code to your message text, and incoming replies are stored in the inbox in our panel.
Related pages

API Reference
Parameters, responses and status codes
Read more →
SMS API
REST API, webhooks, SDK samples
Read more →
Zoho CRM SMS Integration
Send an SMS when a lead comes into Zoho CRM, when a deal changes stage, or a day before a site visit. This…
Read more →
Two-Way SMS
Receive replies on a long code
Read more →Connect Salesforce to SMS this week
Get an API key, tell us you are connecting Salesforce, and we will set up the key and check your templates with you.