05. Customers — The People You Sell To
A customer is anyone who buys milk from you — daily home delivery, walk-in counter purchases, or both.
Each customer in MilkGo gets:
- An auto code (C100, C101, C102…) so you can quote them quickly
- A profile with phone, address, area, default product
- A khata (running balance) that updates with every delivery and payment
- An optional NFC tag for tap-to-find at the counter
Before you start
Have these ready:
- 03-products.md — at least one product, so you can pick the customer's default
- 04-areas-societies.md — recommended; lets you assign the customer to an area/society in one tap
You can add a customer without an area, but it makes route planning harder later.
Where to find it
Bottom navigation → Customers (people icon).
Adding a customer
- Tap + Add Customer at the top.
- Fill in the fields.
| Field | Example | Required? | Why |
|---|---|---|---|
| Name | Ramesh Patel | ✓ | Identification |
| Phone | 9876543210 | recommended | For WhatsApp + customer service calls |
| WhatsApp number | 9876543210 | optional | Defaults to phone if blank |
| WhatsApp notify | On | recommended | Customer gets bills + delivery messages |
| Customer type | Delivery / Counter / Both | ✓ | Controls where they appear |
| Area | Adajan | recommended | Drives route order |
| Society | Krishna Park | optional | Inside the area |
| Wing | A | optional | Block / wing inside society |
| Flat number | 302 | optional | The actual unit |
| Address | A-302, Krishna Park, Adajan | optional | Long-form fallback |
| Default product | Buffalo Milk | recommended | Pre-fills new subscriptions |
| Default quantity | 2 | recommended | Same |
| Default shift | Morning / Evening / Both | recommended | Same |
| Notes | "Leaves card outside on Sundays" | optional | Free text for the driver |
- Tap Save.
The customer appears in the list with an auto-generated code (e.g. C103). They're now ready for a subscription.
Customer types — Delivery / Counter / Both
| Type | What it means |
|---|---|
| Delivery | Home delivery only. Won't show on the Counter screen. |
| Counter | Walk-in only. Pays at the counter. No daily checklist row. |
| Both | Has subscriptions AND walks in occasionally. Shows on both screens. |
Pick based on how the customer actually buys. You can change later if behaviour changes.
The customer details screen
Tap any customer in the list to open their full profile. You'll see:
| Tab | What it shows |
|---|---|
| Info | Contact, location, defaults, notes |
| Deliveries | Every delivery for this customer (date, qty, status) |
| Pickups (or Sales) | Every counter sale |
| Khata / Bills | Monthly bills with paid/due/balance |
Plus action buttons:
- Edit customer details
- View Khata — full billing screen for this customer
- Write NFC card — tap a blank NFC sticker to bind it to this customer (if NFC is enabled in your plan)
NFC tap-to-find (optional)
If your plan includes NFC, you can stick a small NFC tag on each customer's milk bottle/box.
How to bind:
- Open the customer's profile.
- Tap Write NFC Card.
- Hold an empty NFC sticker against the back of your phone for 1–2 seconds.
- The sticker is now this customer's tag.
How to use:
- Open Counter screen.
- Tap the customer's NFC tag against your phone.
- The customer is auto-selected — no searching.
Works on Android (native plugin) and Chrome on Android (Web NFC). Doesn't work on desktop browsers — no NFC hardware.
Searching customers
The customer list has a search box at the top. You can search by:
- Name (partial match) — "ram" finds Ramesh, Ramila, Rambhai
- Customer code — C103
- Phone number — last 4 digits enough
Use it on the Counter screen too — typing the first letters of a name picks the right customer in seconds.
Pending balance
Each customer card shows a ₹ pending badge if they have an unpaid bill. Tap the customer to see the breakdown across months.
Deactivating a customer
If a customer stops:
- Open their profile.
- Toggle Active off.
- Save.
The customer disappears from delivery / counter screens, but past deliveries and bills are preserved. Re-activate any time to bring them back.
Tips
- Set a default product + quantity + shift on every customer. It saves time when adding a subscription — those fields pre-fill.
- Use the customer code (C103) when calling them — short and unique.
- Skip the address if society + flat number is enough. Drivers find people by Krishna Park A-302 faster than by full address.
- Phone number matters even without WhatsApp. It's there for support calls and dispute-resolution.
Common mistakes
| Mistake | Fix |
|---|---|
| Two customers with the same name (Ramesh × 2) | They get different codes (C103 vs C108). The code is the unique identifier — use it. |
| Customer entered without an area | Open profile, add area later. The Deliveries screen will then group them correctly. |
| WhatsApp notify on, but customer's number isn't on WhatsApp | Messages will fail. Use the whatsapp_number field to specify a different WhatsApp-registered number, or turn notify off. |
| Default product set wrong | Edit, save. Existing subscriptions don't change — but new ones will use the new default. |
What's next?
Now that customers exist, give each one their recurring order so daily deliveries auto-populate.
→ 06-subscriptions.md — set up daily/weekly orders per customer
Related
- 03-products.md — what they buy
- 04-areas-societies.md — where they live
- 07-deliveries.md — daily checklist appears once subscriptions are set
- 08-counter.md — walk-in flow uses customer search and NFC
- 09-billing.md — each customer's monthly bill