Communication
Communication is a bulk-messaging hub with three tabs — Campaigns for one-off marketing blasts to a customer segment, Payment Reminders for chasing outstanding dues one customer at a time, and History for a full log of every message ever sent.
Overview
The page header explains it plainly: "Send SMS, WhatsApp, and email to customers — receipts, reminders, and campaigns."
There is no template editor or scheduler — Campaigns offers five ready-made starting templates (Festive Offer, New Arrivals, Payment Reminder, Thank You, Order Ready) that you can edit before sending, and every send happens immediately.
WhatsApp and SMS are "client-side" channels: the app opens a wa.me or sms: link for each recipient in turn and you tap send yourself in WhatsApp/your phone's messaging app. Email is the only channel actually dispatched by the server, and it reports back how many sent versus failed.
Before You Start
- This entire page requires the Advanced plan tier or above and the Customers feature — it does not appear in the sidebar at all below that tier.
- WhatsApp and SMS sends rely on your device having WhatsApp installed / a default SMS app configured, since those channels open native send links rather than using a server-side gateway.
Step-by-Step Guide
1 Send a bulk campaign
- On the Campaigns tab, choose an audience segment: All Customers, With Email, With Phone, or Outstanding Dues — the button shows a live count of how many customers match.
- Choose a channel: WhatsApp, SMS, or Email. Picking Email reveals an additional Email subject field.
- Click a starter template (Festive Offer, New Arrivals, Payment Reminder, Thank You or Order Ready) to pre-fill the message box, then edit freely — the helper text reminds you {name} and {shop} are available as merge variables.
- Click Send to N Customers. For Email, the server sends immediately and reports "Sent X emails, Y failed". For WhatsApp/SMS, a dispatch modal walks through each recipient one at a time with an "Open WhatsApp →" / "Open SMS →" button, until it shows "All done!".
2 Chase payment reminders
- Open the Payment Reminders tab — it lists every customer with a negative balance (money owed to you), sorted by outstanding amount, largest first.
- Search by name, phone or email if the list is long.
- Click the WA, SMS or Email button on a row to send that customer a reminder for their exact outstanding amount; rows with neither phone nor email show "No contact" instead of send buttons.
3 Review communication history
- Open the History tab to see every message ever sent: Date, Channel, Type (Receipt, Reminder, Campaign, Order Update), Recipient, Subject/Message preview, and Status.
- Check the Status column — Sent (green), Failed (red), Opened (blue, meaning the WhatsApp/SMS link was actually clicked open on the device), or Pending (amber).
- Search by channel, recipient or message text, and export the log if you need it outside the app.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Audience segment | All Customers, With Email, With Phone, or Outstanding Dues — filters who the campaign will reach. |
Channel | WhatsApp, SMS, or Email — Email additionally reveals a Subject field. |
Templates | Festive Offer, New Arrivals, Payment Reminder, Thank You, Order Ready — one click fills the message box, which you can then edit. |
Message box | Free-text body supporting {name} (customer name) and {shop} (your shop name) as merge variables. |
Send to N Customers | Dispatches the campaign — direct server send for Email, or a step-through "open the app" flow for WhatsApp/SMS. |
Reminders — WA / SMS / Email buttons | Per-customer one-click reminder for that customer's exact outstanding balance. |
History — Type column | Categorises each log entry as Receipt, Reminder, Campaign, or Order Update. |
History — Status column | Sent, Failed, Opened (client-side link was clicked), or Pending. |
Tips & Best Practices
- Start from a template and personalise it with {name} rather than writing from scratch every time — it is faster and keeps tone consistent.
- Combine the Outstanding Dues segment with the WhatsApp channel for the fastest, most personal collections follow-up.
- Check the History tab after a big campaign to see the real Sent/Failed/Opened split rather than assuming everything went through.
- Remember WhatsApp and SMS need you to tap send in the opened app for each customer — Email is the only channel that is truly "send and forget".
Troubleshooting & FAQ
Nothing happens when I click Send to N Customers.
Does WhatsApp/SMS actually send automatically?
A message shows "Opened" instead of "Sent" in History.
The Communication menu item is missing entirely.
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/CommunicationPage.jsx
Backend endpoints used:
GET /customers?limit=2000POST /communication/bulkPOST /communication/reminderGET /communication/history
Related tables (db-core repositories):
CustomerCommunicationLog
Feature flag key: customers (requires advanced plan tier or above)
WhatsApp and SMS channels are entirely client-driven — the component opens native wa.me/sms: URIs per recipient in sequence rather than calling a messaging gateway; only the Email channel is actually transmitted server-side via POST /communication/bulk. There is no template CRUD or message scheduling in this file — the five templates are hardcoded strings, and all sends are immediate.