A client messaged me in a panic last month: "we\'ve done 400 orders this week but not a single customer got an SMS — they\'re all calling asking where their order is." Classic DLT problem. No approved templates, no SMS, and no error log on Shopify\'s side to tell you anything\'s wrong. Indian telecom operators just drop everything silently.
Every Indian Shopify store hits this wall eventually. DLT (TRAI\'s regulatory framework) requires you to pre-register your brand, your Sender ID, and every SMS template before a single message goes out. If you\'re reading this before launch — good, you\'ve dodged the 400-orders mistake. Here\'s the full flow: the four template categories that matter, the six templates I copy-paste into every new merchant account, and the rejection reasons that burn 2 weeks for first-timers.
The 4 DLT template categories
Every template must be submitted under one of four categories. Picking the wrong one is the #1 reason for rejection.
| Category | Purpose | Approval time | Cost |
|---|---|---|---|
| Transactional | Order confirmation, OTP, shipping, delivery | 1–24h | ₹0.12–0.18/SMS |
| Service Implicit | Customer replied within last 24h — implied consent | 1–24h | ₹0.15–0.20/SMS |
| Service Explicit | Account updates, rewards, loyalty points | 24–72h | ₹0.18–0.22/SMS |
| Promotional | Marketing, offers, sales — opt-in only | 24–72h | ₹0.20–0.30/SMS |
The 6-step approval process
- 1. Pick a DLT portal. Jio, Airtel VI, BSNL, or Vodafone Idea — they all sync to the same central registry. Most go with Jio TrueConnect.
- 2. Register your Principal Entity. Upload GST, PAN, incorporation docs. Proprietorships use Udyam. Approval: 24–72h.
- 3. Register a Sender ID (header). Six uppercase letters, no digits. Transactional and promotional headers are separate — register both if you need both.
- 4. Whitelist your domain. If any template contains a URL (tracking link, product page, checkout URL), whitelist alintro.com, your store domain, and any short-link service (bit.ly, tinyurl).
- 5. Submit templates. Use the templates further down this page. Submit one at a time. Match the category to the content.
- 6. Paste Template IDs into Alintro. Once approved, each template gets a numeric Template ID (e.g. 1107172381234567890). Paste that into Alintro under your gateway settings and we attach it automatically at send time.
6 templates that get approved (copy-paste)
These are the exact templates we\'ve submitted 100+ times across merchants. First-try approval rate: ~95%.
Order confirmation
Hi {#var#}, thanks for your order #{#var#} of Rs.{#var#} at {#var#}. We will notify you once it ships. - {#var#}Variables in order: customer name, order ID, order total, store name, signature
Shipping notification
Hi {#var#}, your order #{#var#} has been shipped via {#var#}. Track: {#var#} - {#var#}Variables in order: customer name, order ID, carrier, tracking URL, signature
Out-for-delivery
Hi {#var#}, your order #{#var#} is out for delivery today. Please keep Rs.{#var#} ready if COD. - {#var#}Variables in order: customer name, order ID, COD amount, signature
COD order OTP
Hi {#var#}, your OTP to confirm order #{#var#} is {#var#}. Do not share this code. Valid for 10 min. - {#var#}Variables in order: customer name, order ID, OTP, signature
Abandoned cart
Hi {#var#}, you left {#var#} in your cart. Complete order in next 1 hour and get {#var#}% off: {#var#} - {#var#}Variables in order: customer name, product name, discount percent, checkout URL, signature
Back-in-stock
Hi {#var#}, {#var#} is back in stock at {#var#}. Order now: {#var#} - {#var#}Variables in order: customer name, product name, price, product URL, signature
Top 6 rejection reasons (and how to fix them)
URL not whitelisted
Add your domain (e.g. alintro.com) to your Principal Entity's approved URL list before submitting templates that contain links.
Header mismatch
The Sender ID (header) must match the one registered under your Principal Entity. Six uppercase letters, no numbers.
Content doesn't match category
Promotional language (DISCOUNT, SALE, OFFER) in a Transactional template will get rejected. Move it to a Promotional template.
Variable count mismatch
Every {#var#} must correspond to an actual dynamic value your system sends. Don't pad with unused variables.
Generic or vague template
Templates like "Hi {#var#}, thanks for your order" without order ID are often rejected. Be specific — include order number, amount, or link.
Inconsistent sender name
If your Principal Entity name is "ACME PRIVATE LIMITED", don't sign off the SMS as "Team XYZ". Must match the registered brand.
Don\'t submit the same template 5 times
DLT portals flag repeat rejections. If a template keeps bouncing, change the wording — don\'t just resubmit. Add a specific variable (order ID, amount) to transactional templates. Rework vague phrasing.
What Shopify actually passes at runtime
Alintro maps Shopify webhook payloads to the DLT template variables automatically. The common ones:
customer.first_name— "Priya"order.name— "#1042"order.total_price— "1,299.00"order.order_status_url— long URL, usually shortenedfulfillment.tracking_number— carrier-specificfulfillment.tracking_url— carrier tracking pageshop.name— store name for signature
FAQs
What is DLT and why does Shopify need it?▼
DLT (Distributed Ledger Technology) is TRAI's regulatory framework for commercial SMS in India. Every brand sending SMS must register as a Principal Entity on a DLT portal (Jio, Vodafone Idea, Airtel, or BSNL), register a Sender ID (header), and get each SMS template pre-approved. Without DLT approval, Indian telecom operators silently block your SMS — Shopify itself has no built-in DLT flow, which is why merchants use apps like Alintro.
Which DLT portal should I register on?▼
It doesn't matter functionally — all four (Jio, Airtel VI, BSNL, Vodafone Idea) sync to the same central registry. Most merchants use Jio DLT because the UI is slightly cleaner. Registration is free; you only pay per-template submission on some portals (~₹100).
How long does Principal Entity approval take?▼
24–72 hours in 2026. You upload GST certificate + PAN + incorporation docs, and the portal auto-verifies. If you're a proprietorship without GST, you'll need the Udyam certificate. Partnership firms need a partnership deed.
Can I share DLT templates across multiple Shopify stores?▼
Only if they're under the same legal entity / Principal Entity. Each GSTIN / PAN gets its own Principal Entity, so if you run two stores under different companies, you need two separate DLT registrations.
My template keeps getting rejected — what do I do?▼
Read the rejection reason carefully (it's specific). Most rejections are: (1) wrong category, (2) URL not whitelisted, (3) variable count mismatch, (4) generic content. Fix the issue, tweak the template, resubmit. Don't submit the same template 5 times — the portal flags repeat rejections.
Do I need to register promotional and transactional separately?▼
Yes. They are two separate header types with different rules. Transactional can send 24/7 to all registered numbers. Promotional cannot send between 9pm and 9am and honors DND (Do Not Disturb) preferences.
What's the variable format — {#var#} or %s or something else?▼
Indian DLT uses {#var#} — literally curly-brace-hash-var-hash-brace. Each variable can be up to 30 characters by default (some portals allow 100+ with justification). The order of variables matters: the first {#var#} in the template gets the first runtime value you pass, and so on.
Does Alintro handle DLT for me?▼
Alintro doesn't register your DLT entity for you (TRAI requires the brand to own that), but we provide: a template library you can copy-paste into your DLT portal, automatic Template ID attachment at send time, and Sender ID mapping. Once your templates are approved, you paste the Template IDs into Alintro and we do the rest.
Skip the DLT headache
Alintro\'s gateway setup walks you through DLT registration and gives you the approved template library. Most merchants are live within 48 hours.