11. WhatsApp Notifications
MilkGo sends transactional WhatsApp messages to your customers — delivery updates, monthly bills with PDF, payment receipts, overdue reminders. This is the feature that stops customers from calling you to ask "what's my bill?".
Before you start
- Your plan must include WhatsApp (
has_whatsapp = true). See 15-plans-billing.md. - Each customer must be opted-in — see 05-customers.md (
whatsapp_notifyfield). - Customers need a valid WhatsApp-registered number.
Where to find it
Settings (gear icon) → WhatsApp Notifications.
You'll see:
- This month's usage — sent / quota with a coloured progress bar
- 4 toggle switches for the 4 message types
- Save button at the bottom
The 4 message templates
MilkGo only uses 4 Meta-approved templates. Each is sent in the language of the customer / owner (Gujarati, Hindi, or English).
1. Delivery Update (delivery_update)
Sent automatically when you mark a delivery as delivered, skipped, or partial — both for home deliveries and counter sales.
What customer sees:
🥛 Hello, here is your latest order update. Shree Krishna Dairy Hi Ramesh, ✅ Delivery completed 📍 Home Delivery
Items: ✅ Buffalo Milk — 2 litre (₹120) · ✅ Cow Milk — 1 litre (₹50)
💰 Total: ₹170 📅 13 Apr 2026 | 🕐 7:30 AM Thank you! 🙏
For multi-product deliveries, all items appear in one message — not multiple. Status mix (some delivered, some skipped) is reflected line-by-line.
Toggles:
- Delivery update owner toggle — on/off for home deliveries
- Counter / pickup update owner toggle — separate for walk-in sales
- Per-customer
whatsapp_notify— must be on - Per-sale toggle on the counter screen — overrides per individual sale
2. Monthly Bill (bill_summary)
Sent manually when you tap "Send Bill via WhatsApp" on a bill, OR via Send All Due bulk on the Billing screen.
What customer sees:
📋 Monthly Bill — April 2026 From: Shree Krishna Dairy (9876543210)
Hi Ramesh,
🧾 Bill #BILL-202604-001 📦 Total Deliveries: 56
Products: Buffalo Milk - 56 litre
💰 Bill Amount: ₹4200 ✅ Paid: ₹2000 Pending: ₹2200
📄 See attached PDF for full delivery details.
— MilkGo
Followed immediately by the PDF attachment with day-by-day delivery details.
Toggle:
- Monthly bill owner toggle — must be on or the "Send Bill" button is hidden
3. Payment Received (payment_received)
Sent automatically the moment you record a payment in the app — works for any method (cash, UPI, bank, cheque, online).
What customer sees:
✅ Payment received successfully! Thank you for your payment. Here is the complete summary of your account and this billing cycle.
Business: Shree Krishna Dairy Customer: Ramesh
📅 Billing Month: April 2026 🗓️ Period: 1 Apr 2026 – 30 Apr 2026
💰 Amount Paid: ₹4200 💳 Payment Method: UPI · Ref UPI-123456 · paid on 30 Apr 2026
Account Summary This Month's Bill: ₹4200 Previous Pending Carried Over: ₹0 Remaining Balance: ₹0
Products & Delivery Summary 📦 Products: 3 (Buffalo Milk, Cow Milk, Curd) ✅ Deliveries completed: 27 ⏭️ Deliveries skipped: 3
Thank you for being our valued customer.
Acts as a digital receipt — customer has proof of every payment with full account context.
Toggle:
- Payment received owner toggle — must be on
4. Overdue Reminder (payment_overdue_reminder)
Sent manually with a single tap — either per-customer (Remind button next to a bill) or in bulk via Send All Reminders on the Billing screen.
What customer sees:
⚠️ Payment reminder! Your bill is overdue and we have not received the payment yet. Please find the complete details of your pending bill below.
Business: Shree Krishna Dairy Customer: Ramesh
🧾 Bill Number: BILL-202604-001 📅 Billing Month: April 2026 📆 Due Date: 5 May 2026 ⏰ Days Overdue: 7 days
💰 Pending Amount: ₹2200
We kindly request you to settle the outstanding amount at your earliest convenience. You can view your complete bill details by tapping the button below.
Thank you for your attention to this matter.
[View Your Bill] (deep link to PDF)
The "View Your Bill" button takes the customer straight to their bill PDF online — no need to scroll back to find the original bill message.
Toggle:
- Bill reminder owner toggle — must be on, otherwise the Remind button doesn't appear
The 4 owner toggles
In the WhatsApp Settings screen, you control which message types fire for your business:
| Toggle | What it controls |
|---|---|
| Monthly bill | "Send Bill via WhatsApp" buttons + bulk send |
| Delivery update | Auto-fired on every home delivery action |
| Counter / pickup update | Auto-fired on every counter sale; also adds a per-sale toggle on the counter screen |
| Payment received | Auto-fired the moment you record a payment |
| Bill reminder | "Remind" buttons + Send All Reminders |
All toggles default on. Save your changes by tapping Save at the bottom — switches alone don't persist until you save.
Per-customer opt-in
Beyond your owner toggles, each customer has their own whatsapp_notify flag:
- Customer profile → Edit → WhatsApp Notify
- On = customer receives messages (subject to your owner toggle)
- Off = customer is silent regardless of your toggle
Use off when:
- Customer specifically asked to stop messages
- Customer's number is not on WhatsApp
- Customer's WhatsApp is on a different number — set
whatsapp_numberto that one
The per-sale switch on Counter
When Counter / pickup update is on at the owner level, the Counter screen shows a small Send WhatsApp update to customer switch above the cart.
- Default: on
- Off for just this sale when you don't want to disturb a regular customer
This doesn't affect the owner toggle or the customer's opt-in — it's a one-shot override.
Monthly quota & usage
Your plan caps how many WhatsApp messages you can send per month (e.g. 200, 500, 1000, or unlimited).
The Usage card on the WhatsApp Settings page shows:
42 / 500(sent / quota)- A bar — green (under 80%), amber (80%+), red (at limit)
- "Resets on the 1st of next month"
Once the quota is hit:
- Auto-fires (delivery, payment) silently skip with reason
monthly limit reached - Manual sends (bill, reminder) show an error toast
- Quota resets at midnight on the 1st
Need more headroom? Upgrade your plan — see 15-plans-billing.md.
Languages — what gets used
The message language is decided in this order:
- The owner's currently active app locale (set in Settings → Language). This is the most current signal — if you switch the app to Hindi mid-day, Hindi templates fire from that point.
- The owner's stored profile language (fallback)
- English (last resort)
The customer's preferred language isn't tracked separately — they receive the language you set. Most owners set their app to whatever language matches their customer base.
Common mistakes
| Mistake | Fix |
|---|---|
| Switch turned off, but next refresh shows it back on | You forgot to tap Save. Toggles only persist when you save. |
| Customer says "didn't get my bill" | Check usage — was quota full? Check customer's whatsapp_notify — is it on? Check the customer's number is registered on WhatsApp. |
| Got "this template doesn't exist" error | Means the template isn't approved in Meta yet. Contact MilkGo support. |
| Multi-product delivery fired 3 separate messages | This is fixed — the unified template merges them. If you still see this, your app is on an old version — refresh / reinstall. |
| Reminder button missing on a bill | Check Bill reminder owner toggle. Also check the bill is unpaid + customer has WhatsApp opt-in. |
Tips
- Keep all 4 toggles on by default — auto-confirmations build trust with customers.
- Switch Counter update off if you serve a lot of casual walk-ins where you don't have customer profiles.
- Watch usage in the second half of the month — overage = silent failures.
- Never spam reminders — once per bill is plenty. Customers feel harassed otherwise.
What's next?
- 09-billing.md — Send All Due flow (uses bill_summary)
- 10-payments.md — payment_received auto-fires on Save
- 15-plans-billing.md — quota & upgrade options
Related upstream
- 05-customers.md — per-customer
whatsapp_notifyflag - 14-settings.md — language settings affect template language