In India an operator checks every business text against a template you registered before it delivers it. The template is the contract: the fixed words must match character for character, and your values may go only where the template left a blank.
The system is called DLT, after the distributed ledger the operators share. You register on one operator's DLT portal — Jio, Vi, Airtel or BSNL — and every operator reads the same record, so one registration covers every network. It happens in three layers, and each depends on the one before.
First the business itself, as a principal entity, which gets an entity ID, usually shown as the PE ID. Then a header: the sender ID people see at the top of the message. Since TRAI's February 2025 amendment, operators add a suffix that shows the kind of text — -P, -S, -T or -G for promotional, service, transactional and government — so a phone shows something like VM-ZYNQLY-S.
Last come the content templates. Each is the exact wording of one message with blanks where values change; it gets its own template ID and is linked to a header. The same amendment says one template may not be linked to more than one header, that more than three blanks needs a justification and at least 30% fixed text, and that templates unused for 90 days are deactivated.
Until late 2025 a blank was written {#var#} and could hold anything. TRAI's direction of 18 November 2025 ended that: every blank must be tagged with what it holds, and the operators check each value against its tag.
{#numeric#} is digits only. {#alphanumeric#} is letters and numbers, such as a booking ID, up to 40 characters. {#url#} and {#urlott#} are links, and {#cbn#} is a callback number — all three must match a link or number you whitelisted on the portal. {#email#} must be a valid email address.
The direction gave operators sixty days in which a failed check is logged and the text still delivered. After that, a text that fails its tag check is rejected outright. A template still written with {#var#} needs its blanks re-tagged on the portal, and the re-tagged text is the one to use from then on.
Every template is registered as a type, and the type is not a label. It decides whether the text reaches a number on the Do Not Disturb register, and at what time of day.
Service is for updates about something the customer already did with you — an order confirmation, a delivery update, an appointment reminder, a login code for your own app. It reaches every number at any hour, including numbers on DND. Most businesses want this type for most of their texts.
Promotional is anything meant to sell. It is not delivered to numbers on DND unless the person gave explicit consent through the operators' consent system, it goes out only between 10 AM and 9 PM, and it must tell people how to opt out in the same message. Mixing an offer into a service update makes the whole text promotional.
Transactional is the narrowest: a code or alert sent within thirty minutes of something the customer did. The portals keep the type for banks and similar regulated senders, and a delivery update sent the next day is Service by the regulation's own example. Government is for government bodies only.
A template registered as the wrong type is blacklisted rather than corrected, and the registrar weighs a sender's blacklisted templates when it reviews the next ones. Editing the text cannot change the type, so choose it by what the message does before you submit.
Text drift. The comparison is character by character, so a double space, a curly quote where the approved text had a straight one, or a line break added for neatness makes it a different text. Copy the wording from the portal or your provider rather than retyping it.
A value that does not fit its blank. A 45-character booking ID in an {#alphanumeric#} blank, a letter in a {#numeric#} one, or a link where the template expects text all fail the tag check, even though the template itself is approved.
A header that is not linked. A template is approved for one header, and sent under another it matches nothing. The entity ID your provider sends with the text has to be the one the template was registered under.
A link that is not whitelisted. Every domain in a {#url#} blank has to be on the portal's list, and public link shorteners are commonly refused. Use a domain you own.
Excel. Every portal exports approved templates as a spreadsheet, and opening that file in Excel and saving it turns each 19-digit template ID into something like 1.10716E+18. The digits are gone, and no operator will match that ID. Download the export again and import it without opening it.
When your provider accepts a text it is marked sent, which only means it was handed to the operator network. Whether it reached a phone arrives later, from the operator, as a delivery report — and plenty of sent texts are never delivered: the number is on DND for that type, the phone stayed off, or the template check failed downstream.
Twilio reports through status callbacks: sent or failed when the message leaves, then delivered or undelivered once the carrier answers. MSG91 posts delivery reports to a webhook with a status code and a reason. Zynqly reads both, and because a report can go missing — a webhook nobody set up, a phone switched off for a day — it asks the provider every ten minutes about texts still waiting, from five minutes after sending until two days later.
So the only proof that a template works from sender ID to handset is a Delivered report on a test sent to your own phone. In Zynqly each template shows its last test and its delivery rate, and failures are grouped by what to fix: the template or sender ID, the number, the sending hours, or your provider account.
No. Templates are registered and approved on a DLT portal — Jio, Vi, Airtel or BSNL. Zynqly keeps the approved text exactly, checks each value against its blank before sending, and shows how each template delivers.
Sent only means your provider handed it to the operator. The usual reasons it then fails are a number on DND for that template type, a promotional text outside 10 AM to 9 PM, wording that no longer matches the approved text, or a phone that stayed switched off.
No. Promotional texts are delivered only between 10 AM and 9 PM, and not to numbers on DND. Updates about something the customer already did belong in a Service template, which is delivered at any hour.
TRAI's direction of 18 November 2025 requires every blank to be tagged with what it holds, such as {#numeric#} or {#url#}. Once the initial logging period ends, a text that fails the tag check is rejected, so re-tag old templates on the portal.