The SMS editor is a text editor with a live phone preview on the right. Content is personalised with Handlebars variables (Documentation Index
Fetch the complete documentation index at: https://docs.suprsend.com/llms.txt
Use this file to discover all available pages before exploring further.
{{variable_name}}).

SMS editor
The SMS editor has a single field: Body — the full text of the SMS message. This is everything the recipient sees. Aim for one segment (160 GSM-7 characters) — each extra segment doubles cost. Front-load the key info, include one clear CTA, and avoid shortened URLs (some carriers flag them as spam; use a branded domain if needed). Supports Handlebars variables and emoji.Adding dynamic content
You can add variables in the template to personalise it for each recipient. Variables are replaced with actual data at send time. Pass values via your workflow trigger payload or use recipient/tenant properties.Add variables in the Variables panel
Use variables in the template
{{ in the body field — matching variables appear as auto-suggestions. You can also type variable names manually following Handlebars syntax.Examples using this sample data:- Nested variable:
{{event.location.city}}→ renders asBangalore - Variable with space in name:
{{event.[first name]}} - URL (avoid escaping): use triple braces
{{{tracking_url}}}for URLs with&,?,=
- The variable is defined in the Variables panel.
- The variable name matches the Handlebars syntax exactly.
Preview and test
The right panel shows a live phone preview, updated in real time as you type. Variables render using data from the Variables panel. Click Test in the top-right corner to send a real SMS to a real phone number. This uses the live version — commit your changes before testing. See Testing a Template for the full guide.Commit
Click Commit in the top bar to publish the current draft as a new live version. Add an optional description for versioning. The template goes live immediately and is used for all subsequent workflow triggers.SMS in India (DLT)
India requires all SMS templates to be registered and approved through a DLT (Distributed Ledger Technology) portal before they can be sent. The SMS editor shows additional fields when DLT approval is enabled.Enable DLT approval
DLT fields
With DLT enabled, the SMS editor shows: Message Type — select the type: Transactional (triggered by a user action — delivery updates, OTPs), Promotional (marketing messages without explicit consent), or Engagement (re-engagement messages to existing users — feature promotions, discount offers). Header — the sender ID (6 alphanumeric characters) registered with DLT. Separate headers exist for each message type. Body — the SMS content. Must exactly match the template registered on the DLT portal. Variables must align with the DLT placeholder format.DLT approval flow
Design and commit
Approval at vendor portal
Common scenarios
OTP / verification code
OTP / verification code
| Field | Value |
|---|---|
| Body | Your verification code is {{otp_code}}. It expires in {{expiry_minutes}} minutes. Do not share this code with anyone. |
Order / delivery update
Order / delivery update
| Field | Value |
|---|---|
| Body | Hi {{$recipient.name}}, your order #{{order_id}} has been shipped! Track it here: {{{tracking_url}}} |
{{{tracking_url}}} for URLs to avoid HTML-escaping special characters like & and ?.Appointment reminder
Appointment reminder
| Field | Value |
|---|---|
| Body | Reminder: Your appointment with {{provider_name}} is on {{appointment_date}} at {{appointment_time}}. Reply CONFIRM to confirm or CANCEL to cancel. |
Promotional offer
Promotional offer
| Field | Value |
|---|---|
| Body | Flash sale! Get {{discount}}% off on all items. Shop now: {{{shop_url}}}. Valid till {{expiry_date}}. Reply STOP to opt out. |
Best practices
- Identify yourself — start with your brand name or use a registered sender ID so recipients know who the message is from.
- Time-sensitive messages — pair SMS with a delay node or time window to avoid sending at inconvenient hours.
- DLT (India) — ensure your template body exactly matches the DLT-registered content, including punctuation and variable placeholders.
Frequently asked questions
What is DLT and when do I need it?
What is DLT and when do I need it?
Why was my DLT template rejected?
Why was my DLT template rejected?
Why is my SMS being sent as multiple segments?
Why is my SMS being sent as multiple segments?
| Encoding | Chars per segment | When it applies |
|---|---|---|
| GSM-7 | 160 (single), 153 (multi-part) | Standard Latin characters, digits, basic punctuation |
| UCS-2 | 70 (single), 67 (multi-part) | Emojis, non-Latin scripts (Hindi, Arabic, Chinese, etc.) |
How do I add URLs in SMS without them breaking?
How do I add URLs in SMS without them breaking?
{{{url}}} instead of double. Double braces HTML-escape characters like &, ?, = — which breaks URLs. Triple braces output the raw value.Can I send SMS in different languages?
Can I send SMS in different languages?
$locale on their profile — SuprSend auto-selects the matching variant. The default variant acts as the English fallback.Can I test a DLT template before approval?
Can I test a DLT template before approval?
What happens if a variable is missing at send time?
What happens if a variable is missing at send time?
