Connect 23 Telecom to Braze
Copy page
| Setup type | Webhook · self-service |
| Setup time | About 15 minutes |
| Sends SMS | Yes |
| Delivery status in Braze | No — check 23 Telecom |
| Who can configure | Braze user with webhook campaign permissions |
What this connection does
Section titled “What this connection does”A Braze Webhook campaign (or a Webhook step in Canvas) calls the 23 Telecom API to send an SMS. Braze shows the HTTP response; carrier delivery reports stay in 23 Telecom.
Before you start
Section titled “Before you start”- Braze with Webhooks enabled (an add-on that consumes message credits — see the caveat below).
- An active workspace, an
approved sender ID and an E.164 test number, e.g.
+447911123456. - A restricted 23 Telecom API key with only
sms.send— start with a sandboxsk_test_key (Sandbox & test mode).
POST
/api/v1/sms/send-individual
· Permission: sms.send
Connect 23 Telecom
Section titled “Connect 23 Telecom”-
Open Messaging → Campaigns → Create Campaign → Webhook (or add a Webhook step in a Canvas).
-
Set the URL to
https://restlink23telecom.com/api/v1/sms/send-individual, methodPOST. -
Add headers
Content-Type: application/json, your secretX-API-Key, and anIdempotency-Key(the endpoint requires it). For the sandbox test use a fixed one-off value such asbraze-sandbox-001. -
Paste the raw JSON body and map the recipient with a phone Liquid tag.
-
Use the Test tab to send to a test user, then review the response.
Request body
Section titled “Request body”{ "messages": [ { "to": "{{phone_liquid_tag}}", "message": "Your message", "sender_id": "YourBrand" } ]}Replace the to value with your phone Liquid tag and message with your
content.
Field mapping
Section titled “Field mapping”| Braze field | Value |
|---|---|
| Method | POST |
| URL | https://restlink23telecom.com/api/v1/sms/send-individual |
Content-Type | application/json |
X-API-Key | your restricted 23 Telecom key (sandbox first) |
Idempotency-Key | dispatch and user identity, unique per user (see below) |
messages[0].to | phone Liquid tag (E.164) |
messages[0].message | your message content |
messages[0].sender_id | your approved sender ID |
Send a test
Section titled “Send a test”Use the Test tab with a Random, Specific or Customized user and your
sk_test_ key. Confirm the exact Liquid you use for the idempotency value renders
a stable, per-user string.
Production activation
Section titled “Production activation”Live traffic uses managed activation because Braze branches on the HTTP status
and a single dispatch_id is shared across the audience. Your 23 Telecom team
confirms a retry-safe path using the strict integration endpoint, where a 2xx
guarantees acceptance, or an adapter that validates the response body and
enforces per-recipient idempotency.
The activation package includes the approved production URL or adapter mapping, the restricted key and a one-message launch check. Apply that configuration — rather than changing only the API key on the sandbox batch template — and then publish the Canvas or Campaign.
Verify the result
Section titled “Verify the result”Accepted means queued. Read carrier delivery in Message status or Statistics, or add a live delivery webhook. If you need delivery status inside Braze, ask us to scope a managed custom-event bridge.
Troubleshooting
Section titled “Troubleshooting”| Response | Cause & fix |
|---|---|
400 IDEMPOTENCY_KEY_REQUIRED | Add the Idempotency-Key header |
401 INVALID_API_KEY | Wrong or disabled key in the secret header |
403 NO_SMS_ACCESS | SMS not enabled — contact 23 Telecom |
429 RATE_LIMIT_EXCEEDED | Sending faster than your budget — slow the audience |
Need help?
Section titled “Need help?”- Webhook, Canvas, Liquid or credits — Braze support.
- API key, sender ID, accepted-but-not-delivered — your 23 Telecom account manager, or the contact form.
Official platform documentation
Section titled “Official platform documentation”Last verified: 16 July 2026.