Counter · customers

Find them, sell them, bring them back.

Customer records anchor everything — sales, prescriptions, recall windows, and the WhatsApp + email marketing flows. Tight phone-based dedup keeps the list clean.

Create a customer

Two ways in:

FromHow
The customers pageClick + New customer at the top.
Inside a new saleIn the customer search dropdown, click + Create new customer at the bottom of the search results — a drawer opens without losing your cart.

Full name is the only required field — everything else (phone, email, DOB, gender, address, tags, notes) is optional and editable later. That said, capture the phone whenever you can: it's what recall, WhatsApp, and dedup all key on, so a customer without one is invisible to most of the marketing flows.

Phone numbers are deduped per organisation. If you try to create a customer with a number that already exists, the form blocks you and points you at the existing record instead of making a second row. When there's no phone, a matching name + date-of-birth triggers the same warning. This stops the “same customer, three different rows” problem that fragments lifetime-value math.

Find a customer

The Customers page lists everyone, most-recent first. The search bar at the top matches across name, phone, and email — partial matches work. Click any row to open the full record.

The customer record

Each customer page shows:

  • Contact details (phone, email, address, DOB if captured)
  • Tags (free-text labels — e.g. “VIP”, “senior citizen”, “corporate-Wipro”)
  • Lifetime stats — orders, total spend, last visit, days since last visit
  • Their latest prescription (if any)
  • Order history, reverse-chronological, click-through to each
  • Notes — for shop-floor context that doesn't fit a structured field

Marketing cohorts

Customers → Insights auto-segments your base into five cohorts. Each is a clickable list with a one-click message draft.

CohortDefinitionWhat to send
Due for recall16–22 months since last purchase. Lenses typically need refreshing around now.Warm invitation to come in for an eye-test.
Lapsed24+ months silent. Win-back territory.Friendly “it's been a while” — maybe a small offer.
Rx expiringTheir prescription is 22–24 months old. Most opticians treat that as expired.Health-focused nudge to come back for a fresh test.
High-value repeatTop 10% by lifetime spend AND ≥3 orders.VIP preview of a new collection or personal-shopping moment.
New customersFirst-time customer in the last 30 days.Thank-you note, Google-review ask if they were happy.

AI-drafted messages

Click any customer in a cohort, then Draft message. Claude reads the cohort context, the customer's details (name and purchase history — phone number never leaves the server in plaintext), and produces a 2-3 line WhatsApp message in the right tone for that cohort.

You review the draft, edit if needed, then approve. In Phase 1 approval queues a Meta Cloud API send; for now it copies to the clipboard for you to paste into WhatsApp manually.

Every draft is logged with the customer ID, prompt, response, and your approval. If a customer ever asks “why did you message me?”, you have the full trail.

Recall windows you can tune

The defaults match the all-India median (people refresh frames every 18-24 months), but you can shift them per-org in Settings → Customer recall:

  • Recall window — when “due for recall” starts (default 16 months) and ends (default 22 months)
  • Lapsed threshold — when “lapsed” starts (default 24 months)
  • Rx-expiring threshold — when prescriptions count as old (default 22 months)
  • VIP cutoff — minimum lifetime spend and order count for “high-value”

Privacy posture

Customer PII is handled with kid gloves:

  • Lab technicians never see phone or address. Their job card shows the customer's first name only (for case-labelling).
  • For FOFO franchisees, customer records are owned by the franchisee — the parent brand cannot see individual rows. RLS enforces this.
  • AI message drafting replaces name + phone with placeholders before sending the prompt to the model, then re-hydrates the real values in the returned text. Phone numbers never appear in the Anthropic API request.
  • Soft-delete only — even when you remove a customer, the row stays for audit. No way to hard-delete from the UI.

Next up

Creating SKUs (with AI scanner)

Once your customer + sales flows are humming, the catalogue side is what makes the system shine.