Nobody in our company sends a payment reminder. Nobody types a renewal notice. Nobody remembers to warn anyone about anything. Six approved WhatsApp templates do it β in the recipient's language, triggered by the system, every single day.
Email open rates hover somewhere around a quarter. WhatsApp messages get read almost universally, usually within minutes. If your product runs on people knowing things on time β payments due, slots expiring, buses arriving β WhatsApp is not a marketing channel. It's infrastructure.
Here are the six templates, roughly as they run in production, and what each one taught us.
The six templates
Sounds trivial β it's the most valuable one. Every payment confirmation that arrives instantly is a support ticket that never gets opened. It fires from the gateway webhook, not from the checkout page, so it only sends when money actually moved.
Three days out, once. Not seven nagging messages β one, at the moment it's actionable. This single template does the job of a person who used to chase renewals off a spreadsheet.
The last-chance message. Different template from the reminder on purpose: different urgency, different wording, and WhatsApp approval treats them as separate templates anyway. Renewal recovery jumped when we split these two.
The generic shape of "something just happened that you care about." In our transport platform this fires for boarding and arrival events. The lesson: keep the template generic and put specifics in variables, or you'll be re-submitting for approval every time the product grows.
Invoices, receipts, reports. The links are signed and expire, so a forwarded message doesn't become a permanent open door. Nobody attaches PDFs to emails by hand anymore.
Fires once, at activation. The "reply for help" line matters: a user reply opens WhatsApp's 24-hour service window, during which you can message freely without templates β which is exactly when new users need hand-holding.
The three lessons that cost us time
1. Approval rejects marketing in a notification costume
WhatsApp reviews every template before you may send it. Our early drafts with "Don't miss out!" energy got refused. The rule that emerged: write it as a fact about a transaction the user genuinely has with you, and approval takes minutes. Write it as persuasion, and you'll be resubmitting all week.
2. Language belongs to the recipient, not the app
Every template exists twice β English and Hindi β registered separately. Which variant fires is decided per recipient at send time from their stored preference. Two parents on the same route get the same alert in two different languages. We learned this the hard way with AI voice, and the rule is identical for text.
3. Log the delivery, not just the send
Sent is not delivered, and delivered is not read. The provider reports each stage back via webhook, and we store all of them. When a customer says "I never got the reminder," the answer is a database query, not an argument. Numbers change, users block, phones die β without delivery logging you're flying blind and calling it automation.
Notice what's absent from all six: AI. Every one of these is a rule β an event fires, a template sends. This is the point we keep making: most automation doesn't need AI, it needs wiring. The only "intelligent" decision in this entire pipeline is which language to pick, and even that is a stored preference, not a model.
What this replaced
Before this pipeline: a person checking a spreadsheet each morning for expiring subscriptions, payment confirmations sent "when someone got to it," and parents calling the school to ask where the bus was. After: six templates, two languages, zero daily human effort β and the person who used to chase renewals now does work that actually needs a human.
That's the honest pitch for automation. Not intelligence β reliability. The same message, at the right moment, every time, without anyone remembering.
