Shop customers (CRM)
The shop's per-person membership card registry (name, phone, points, stamps). You need the customers.view permission to view it, and the same permission to add a new customer.
Membership tiers
Shops define their own membership tiers as rows (there's no fixed bronze/silver/gold set built in) — a customer's current tier is always read from a real row in the system, never computed live from purchase totals on screen.
What this screen doesn't actually support yet — stated plainly, not faked
- A "member code" like MB-2026-001 — there's no such column; the row's ID number is used instead
- Average lifetime value per member (Avg LTV) — can't be computed accurately in the browser, so it shows "—" with an explanation instead of a fake number
- The "Broadcast promotion" button doesn't have a real send channel behind it yet — pressing it takes you to the existing "Notifications/Promotions" console instead, rather than sending and going silent
Loyalty points
Set an earning rate and rewards, then let staff redeem points for customers buying at the counter. Unlike "Membership packages", which are paid-in-advance subscriptions/entitlements — a different system entirely.
Redeeming a reward can only be done at the shop counter; a staff member holding loyalty.redeem presses redeem on the customer's behalf. Customers cannot redeem from their own app — that's a deliberate rule, not an unfinished feature.
Promotions
Four discount tools the shop can set up itself. You need the catalog.manage permission — the same one used to set product prices; whoever can set prices in a real shop is the same person who can set discounts.
Happy hour
Discount only during a time window the shop chooses — pick days of the week and start/end times (can cross midnight). Choose the scope: whole shop, a category, or a single product. Discount as a percentage or a fixed amount. The clock used is the shop's own time zone, not the customer's device, and alcoholic drinks never qualify for a promotion, by law.
Member pricing
Set a special price on a product for customers in a given membership tier — it's a per-product price, not a percentage discount. Tier is matched to the customer by phone number, and member pricing only applies when it's cheaper than the price that customer would otherwise get.
Coupons
Discount codes customers type in when ordering online. Set discount type, discount cap, minimum order, active window, and quota. Discounts the order's total (per-item discounts use Happy hour instead). One coupon per order, and if the order is cancelled the coupon returns to stock to be used again.
Free shipping over a threshold
Set a minimum order value for free shipping, by delivery channel, and set an active date window — measured against the product value before coupon deductions.
Tips
A tool for splitting tips among staff, in four parts:
- My tips — a staff member views the tips they personally received, by period, with a status of which payroll run it's landed in
- Split rules — owner/manager sets who's entitled to a share, how the split is proportioned, and what it's based on
- Close tip period — close the period to compute each person's share, then send the amount into a payroll run
- Shop tip report — total tips over a period, and each period's tax determination
Three things not to conflate
- "Not yet in a period" ≠ "in a period awaiting approval" — different answers to when the money arrives
- "No one has determined" the tax treatment ≠ "the shop has determined no tax is owed"
- If no one clocked in during that period at all, the system won't split any tips — the tip amount stays intact, it isn't split to zero baht each
Reviews
Publicly reply to a review a customer left — everyone who views the shop sees this reply, unlike "Inbox" which is a private chat. Customers can only write a review once the system has confirmed they actually used the service (delivery completed, an appointment finished, or a package genuinely used). A review from a rejected/cancelled/no-show order won't carry a "verified use" badge. The shop's average star rating is computed automatically from all reviews — there's nowhere to type in a star number yourself.