01 · Definition
What is a DLT content template?
A DLT Content Template is the pre-registered wording of a commercial SMS on India's DLT platform. The principal entity submits the fixed text with a {#var#} placeholder wherever a value changes, such as a name, an amount, an order number or an OTP, chooses its DLT Message Category, links it to one or more registered headers and, once the operator approves it, receives a numeric template ID.
From then on, every SMS built from that wording must carry the template ID, together with the PE ID and the header, when it is submitted. At send time the operator's DLT Scrubbing compares the actual text with the registered template: fixed text must match exactly, including spaces and punctuation, and each {#var#} may be filled with a limited number of characters, commonly 30 on operator portals. A message that matches no registered template, or uses a header the template is not linked to, is rejected.
The idea resembles a WhatsApp Message Template, but the mechanics run the other way. On WhatsApp, Meta reviews a template, assigns the category that sets its price, and renders each message from the template name and parameters. On DLT, the operator approves wording and then checks every outgoing text against it. WhatsApp variables are written {{1}}; DLT uses {#var#}. Encoding still applies on top, since what is billed is the number of segments the filled-in message takes in GSM-7 or UCS-2.
Key takeaways
- A DLT content template is the exact SMS wording a business registers on DLT, with {#var#} wherever a value changes.
- Every SMS must carry its template ID, and operators block messages whose text does not match the registered wording.
- Operator portals commonly allow up to 30 characters per {#var#}; use adjacent placeholders for longer values.
- WhatsApp templates are reviewed and rendered by Meta; DLT templates are approved by an operator and matched against the text you send.
- Links in templates must be whitelisted: SMS with unregistered URLs, APKs or OTT links have been blocked since 1 October 2024.
02 · Code samples
A DLT content template in code
// Check a filled SMS against its registered DLT template before sending.// Fixed text must match exactly; each {#var#} takes up to VAR_MAX characters// (30 on most operator portals - confirm yours).const VAR_MAX = 30;const escapeRe = (s) => s.replace(/[.*+?^{}$()|[\]\\]/g, "\\$&");export function matchesTemplate(template, message) {const pattern = template.split("{#var#}").map(escapeRe).join("([\\s\\S]{1," + VAR_MAX + "})");return new RegExp("^" + pattern + "$").test(message);}const template = "Dear {#var#}, your refill of {#var#} is ready at our {#var#} store. -Malwa Care";matchesTemplate(template, "Dear Ananya, your refill of Metformin 500 is ready at our Vijay Nagar store. -Malwa Care"); // truematchesTemplate(template, "Dear Ananya, your refill of Metformin 500 is now ready at our Vijay Nagar store. -Malwa Care"); // false
Run the same check in CI and before each send, so an edited string fails in testing instead of at the operator.
03Playground
A working model of DLT Content Template. Use its controls to replay it step by step.
Fill the template: does the message still fit one SMS?
Encoding
UCS-2
16-bit Unicode · 70 per SMS, 67 per part
Characters
106
106 UTF-16 units
SMS parts
2
67 per part
Left in part
28
before part 3
Billed as 2 SMS
Part 167 / 67
प्रिय {#var#}, आपकी दवा {#var#} हमारे {#var#} स्टोर पर तैयार है। का
Part 239 / 67
उंटर पर कोड {#var#} दिखाएँ। -मालवा केयर
Header (UDH) — 3 units of every part go to reassembly data.
How it splits
- Alternating parts
- Forces UCS-2
Why
“प”, “्”, “र” and 24 more are not in the GSM-7 alphabet, so the whole message is sent as UCS-2: one SMS holds 70 characters instead of 160. At 106 units it goes as 2 parts of up to 67 — each part gives 3 units to the header that stitches them together.
- प (U+092A)
- ् (U+094D)
- र (U+0930)
- ि (U+093F)
- य (U+092F)
- आ (U+0906)
- क (U+0915)
- ी (U+0940)
- +19 more
Hindi template: UCS-2, 2 SMS parts.
04 · Specifications
A DLT content template: key facts and limits
| Placeholder | {#var#} for each changing value |
|---|---|
| Variable length | Commonly up to 30 characters per {#var#} (portal rule) |
| Matching | Fixed text must match exactly at scrubbing |
| Template ID | Numeric ID issued on approval, sent with every SMS |
| Linked to | One category and one or more registered headers |
| Links | Only whitelisted URLs, APKs and OTT links (since 1 Oct 2024) |
| Languages | English or Indian scripts (sent as UCS-2) |
05 · Operation
How does a DLT content template work?
Write the fixed text
Draft the message with the brand name and the exact wording you will send, and replace each changing value with
{#var#}. Use two adjacent placeholders for values that may run past one variable's limit.Pick the category and headers
Choose transactional, service implicit, service explicit or promotional to match the content, and link the template to the registered header or headers that will send it.
Whitelist links
Any URL, APK or OTT link in the message, including one inserted through a variable, must be whitelisted for your entity first; non-whitelisted links have been blocked since 1 October 2024.
Submit and get the template ID
The operator reviews the template on its DLT portal. Approval returns a template ID that is shared with the other operators through DLT.
Send with the IDs
Pass the template ID, PE ID and header with every message through your provider's API or SMPP fields. Scrubbing matches the filled text against the template before delivery.
06 · Cautions
Common mistakes with a DLT content template
Editing wording in code
Changing a word, a space or a punctuation mark makes the text unmatchable. Treat templates as versioned strings: register the new wording first, then deploy it with its new ID.
Overfilling a variable
Values longer than the portal's per-variable limit fail matching. Truncate names, or register two adjacent placeholders for long fields such as product names or addresses.
Putting the whole message in variables
Templates that are mostly
{#var#}get rejected at registration or flagged for misuse. Keep the brand name and the meaning of the message in fixed text.The wrong category for the content
A promotional line inside a service-implicit template breaks that category's rules. Keep offers in promotional templates, or risk the template being suspended.
Unregistered links in variables
A URL inserted through a variable still has to be whitelisted. Register the domains and short-link patterns you use, or the messages are blocked.
07 · Recommended practice
Best practices for a DLT content template
- Keep one source of truth (template text, ID, category and headers) in a config file that both code and compliance read.
- Count segments on the filled message with the longest realistic values, not on the template.
- Register Hindi and other regional-language versions as separate templates.
- Retire templates you no longer send, so the list reviewers check stays short.
08 · Worked example: An Indore pharmacy's refill reminder
Example: An Indore pharmacy's refill reminder
An Indore pharmacy chain registers a service-implicit template: 'Dear {#var#}, your refill of {#var#} is ready at our {#var#} store. Show code {#var#} at the counter. -Malwa Care'. A month later the app team changes 'is ready' to 'is now ready' in code without telling compliance, and every reminder fails scrubbing until the old wording is restored and the new one registered as its own template. The second failure is a long medicine name that overflows one variable; the team re-registers the template with two adjacent placeholders for the product name and adds a pre-send check, so the next mismatch fails in testing instead of in customers' phones.
09 · Rationale
Why does a DLT content template matter?
Template mismatches are the commonest reason Indian SMS fail silently. A developer adds a full stop, marketing tweaks a word, a variable runs long, and the operator rejects every message until someone notices and re-registers. Treating templates as versioned, exact strings with known variable limits keeps OTPs, alerts and campaigns flowing, and lets compliance show that every message sent used approved wording.
10 · Questions and answers
DLT Content Template FAQs
- What is {#var#} in a DLT template?
- It is the placeholder for a value that changes from message to message, such as a name, an amount or an OTP. Operator portals commonly allow up to 30 characters per placeholder; use two side by side for longer values.
- Why is my SMS rejected even though the template is approved?
- Usually the text sent does not exactly match the registered wording, a variable is too long, the header is not linked to that template, or the template ID is missing. Compare the sent text with the template character by character.
- Is a DLT template the same as a WhatsApp template?
- No. A WhatsApp message template is reviewed by Meta and rendered from a name and parameters; a DLT content template is approved by an operator, and the full SMS text you send is matched against it.
- Can I use the same template ID on every operator?
- Yes. A template registered on one operator's DLT portal is shared with the other operators through DLT, so the same template ID works whichever network the recipient is on.