LaundroKart · Messaging Review

Notification Map — every template, every event

What fires on each event, to customers and to delivery executives, across SMS · WhatsApp · App Push — with live 30-day send volumes so you can keep, fix, or retire each one.

Grounded in prod (db37) live send-logs · 30-day volumes as of 2026-07-22 · built on the 2026-07-03 messaging audit

LIVEfiring now DORMANT0 sends in 30d DEAD / OFFcan't send or switched off DUPLICATEsuperseded by a newer template  ·  SMS PUSH
SMS (txn)
Onextel jsms · LDRKRT
LIVE
WhatsApp
365cx / chatbird · 4 tmpl
LIVE
App Push (txn)
FCM v1 console
LIVE restored 07-03
Bulk / mktg push
FirebaseAdmin v1
LIVE
Email
Pepipost SMTP
UNVERIFIED
In-app list
usernotifications
EMPTY

Review flags — things that look broken or switched off

1. "Order delivered" notification isn't firing. The SMS template is literally named ORDER_DELIVERED_Updated_DELETED (0 sends), and push ORDERDELIVERED = 0. WhatsApp has no delivered template. → Customers likely get no delivery-completed confirmation. Intended?
2. Doorstep confirmation OTPs are silent. PICKUP_CONFIRMATION_OTP and DELIVERY_CONFIRMATION_OTP both = 0 in 30 days. If your executives are meant to take an OTP to confirm pickup/hand-over, that flow appears off.
3. Wallet-expiry reminders are all off. Every "X days before expiry" template (15/21/3-day, old + _NEW1) = 0 sends. That retention nudge campaign isn't running.

Customer notifications

Order lifecycle + account/wallet. The four events in green WA chips already fire on all three channels — highest duplication risk.

EventChannelsTemplate(s)30dStatusNote / recommendation
New registration
SMSPUSH
REGISTRATIONCOMPLETEDwelcome_to_laundrokart1579LIVETriple-covered. Fine, but 3 welcomes for one signup is a lot.
Pickup requested
SMSPUSH
Pickup Request confirmationpickup_request_new2PICKUPREQUESTED (old, 0)1144LIVETriple-covered. Retire the old PICKUPREQUESTED SMS (superseded).
Order ready for delivery
SMSPUSH
Order ready for delivery!order_ready_for_delivery3PROFORMAGENERATED_PAYNOWLINK5% Cash Back updated (0)7LIVETriple-covered. SMS low because WA/Push carry it. Retire 5% Cash Back updated.
Order ready for collection
SMSPUSH
Order ready for Collection!order_ready_for_collection3PROFORMAGENERATED_WALKINReady_for_collection (0)5LIVETriple-covered. Retire Ready_for_collection.
Pickup completed → "will be delivered"
SMSPUSH
PICKUPCOMPLETED_SPLIT / _WALKIN945LIVEHighest push volume (315). Solid.
Pickup rescheduled
SMSPUSH
PICKUPRESCHEDULED47LIVEOK.
Reschedule prompt
SMSPUSH
RESCHEDULEREQUEST209LIVEOK.
Callback (exec couldn't reach)
SMSPUSH
CALLBACKPICKUP277LIVEOK (192 push too).
Order cancelled
SMSPUSH
ORDERCANCELLED87LIVEOK.
Order DELIVERED
SMSPUSH
ORDER_DELIVERED_..._DELETEDORDERDELIVERED (0)0DEAD / OFFFlag #1 — no delivered confirmation reaching customers.
Delivery rescheduled (by store)
SMSPUSH
DELIVERYDATE3LIVELow but working.
Delivery escalated (by customer)
PUSH
ESCALATEDELIVERY_CP4LIVEPush only. OK.
Pickup confirmation OTP (doorstep)
SMSPUSH
PICKUP_CONFIRMATION_OTP0OFFFlag #2 — not firing.
Delivery confirmation OTP (doorstep)
SMSPUSH
DELIVERY_CONFIRMATION_OTP0OFFFlag #2 — not firing.
Login / Signup / Forgot-pw OTP
SMS
LOGINOTP · SIGNUPOTP · FORGOTPASSWORD1803LIVECore auth. Keep.
Wallet credited
SMSPUSH
LKCREDIT_1LKCREDIT (old, 0)7LIVERetire old LKCREDIT.
Wallet debited
SMSPUSH
LKDEBIT37LIVEOK.
Cashback
SMSPUSH
CASHBACK19LIVEOK.
Wallet expiry reminders (15/21/3-day)
SMSPUSH
15/21/3DAYS_BEFORE_EXPIRY (+old)0OFFFlag #3 — retention campaign off. Also 2 old + 3 new dup sets.
Alternative number added
SMSPUSH
ALTERNATIVE_NUMBER (no DLT)0DEADNo DLT id → SMS can never send. Retire or register.

Delivery executive / pickup-boy notifications

Sent to your field staff (not customers). Body starts with {ExecutiveName}.

EventChannelsTemplate(s)30dStatusNote / recommendation
Pickup assigned to you
SMSPUSH
PICKUP_ASSIGNED_NEWPickupAssigned1572LIVEHighest SMS volume overall. Core ops. Keep.
Delivery assigned to you
SMSPUSH
DEIVERY ASSIGNEDDEIVERYASSIGNED2LIVELow volume. Note the typo "DEIVERY" in the name.
Delivery escalated by customer
PUSH
ESCALATEDELIVERY_CDALIVEPush to the assigned CDA. OK.
Delivery-app login
WhatsappDeliveryAppUserLoginLIVEThe only WhatsApp the LK backend itself sends. Staff login.
Pickup rescheduled (notify exec)
SMSPUSH
EXE PICKUP RESCHEDULEDExePickupRescheduled0DORMANTNot firing in 30d. Confirm if execs should be told.
Pickup cancelled (notify exec)
SMSPUSH
EXEPICKUPCANCELLEDExePickupCancelled0DORMANTNot firing. Review.
Pending payment to collect (COD)
SMSPUSH
DELIVERYCOMPLETED_PENDINGPAYMENT (no DLT)0DEAD SMSNo DLT id → SMS dead; push variant exists. Fix or drop.
Notice-board update
SMSPUSH
NOTICE_BOARD_TOPIC1_NEW0DORMANTUnused. Retire if the notice-board feature is gone.

Retire / clean-up candidates

Duplicate templates (old + new versions both stored, only the new fires) — safe to delete the old:
Broken (can't send / mis-named) — fix or drop:
The one gap for the WhatsApp bot (Option 2): across all channels and both audiences, no message tells the customer which agent will pick up / deliver, by name. That's the single duplicate-free notification the bot can add — everything else on this page is already covered.

Source: prod db37 smstemplatemaster, notificationtemplatemaster(1), live newsmslog + pushnotificationlogs (read-only) · WhatsApp from LaundroKart_Messaging_Audit_2026-07-03.xlsx · secrets redacted throughout.