Loyalty without plastic. Phone is the key.

Phone-number lookup at the register. Tiers earn through visits, not points-game arithmetic. Best-deal-wins by default — defensible against margin creep and WSLCB scrutiny both. Loyalty-reminder SMS leads with relationship, not points. Built into the POS as audit_log first-class — not a third-party plug-in.

Four ways loyalty programs leak margin.

‘What’s your phone number?’ is faster than ‘do you have your card?’

Plastic cards get lost. Phone numbers don’t. Lookup at the register is one keystroke. New customers enroll mid-transaction with phone + opt-in checkbox — no separate signup flow, no gift-card holdup. Existing customers earn on the cart they’re ringing right now.

Discount stacking is a regulatory and margin landmine.

Two 20% off coupons + a Veterans 10% + Sunday Senior 15% = 65% off and a margin hole. WSLCB doesn’t love that math either. Our default is best-deal-wins: best applicable discount applies, the rest don’t. EARNING continues, REDEMPTION doesn’t stack — defensible and per-Doug 2026-05-07.

Tier math should be visible, not a black box.

Bronze / Silver / Gold / Platinum tiers earned through visit count + 30/60/90-day spend windows. Each customer’s tier and points are visible at the register in one glance. Tier benefits stay where they belong — in the redemption picker, not in a hidden discount engine.

SMS that nudges, doesn’t spam.

Loyalty-reminder SMS leads with relationship (‘been a few weeks’), not pure points (‘you have $5 waiting’). Why: pushing redemption converts soft repeat-customers into hard discount-driven shoppers. The relational nudge keeps margin intact and the door open. Cadence + opt-out per WAC 314-55 / TCPA / WAC 314-55-155 safe.

Eight surfaces, no plug-ins.

Phone-keyed lookup at the register

10-digit phone + tap-to-select. Auto-creates new profile inline mid-transaction. No separate enrollment flow, no plastic card holdup.

Tier system — Bronze / Silver / Gold / Platinum

Visit count + 30/60/90-day spend windows drive tier. Tier-aware redemption picker at checkout. Tier benefits visible at register in one glance.

Best-deal-wins, no stacking

Best applicable discount applies; others don’t. EARNING continues; REDEMPTION doesn’t stack. Defensible against margin-creep + WSLCB scrutiny.

SpringBig replacement at cutover

Two-track migration plan (Wenatchee 5/25, Seattle ~6/25). Existing SpringBig profile data imports + carries balances forward. Loyalty-reminder SMS reaches customers who never opted into SMS in the first place — a real reach win.

Loyalty-reminder SMS, relational not transactional

Cadence-aware nudge leads with ‘been a few weeks’ not ‘$X waiting.’ Margin protection — converts soft → hard discount-shoppers if you lead with the points.

Birthday SMS + first-time-buyer welcome

Per-customer birthday loyalty bonus (configurable). First-time-buyer welcome with deal text per store + map link. All passes through the brand-voice gate (no efficacy claims).

At-risk + win-back automations

Customers past their visit cadence threshold land on /admin/customers?filter=at_risk_winback. Auto-PO-style audit on every win-back outreach so the SMS ledger is full.

POS register integration, not a plug-in

Loyalty earns + redemptions write to the same audit_log as the transaction itself. No third-party SaaS dependency, no monthly per-location fee, no off-site customer data.

CannAgent vs. SpringBig & the plug-in stack.

Operator-reported. SpringBig is the dominant cannabis-loyalty plug-in; Dutchie + Flowhub bolt similar plug-ins. We’re native.

CapabilityCannAgentDutchieSpringBigFlowhub
Phone-keyed lookup (no cards)DefaultAvailableAvailable (paid plug-in)Available
Tier system with visible mathBuilt-in 4-tierPlug-in (paid)Plug-in (paid)Plug-in (paid)
Best-deal-wins (no-stacking)Default + audit-loggedConfigurableConfigurableConfigurable
Loyalty-reminder relational SMSBuilt-in cadencePlug-inBuilt-in (paid)Plug-in
POS-native, not bolted-onYes (audit-traceable)External plug-inExternal (the plug-in)External plug-in
Per-location monthly fee$0 (operator-negotiated)$$ + transaction %$$$/location$$/location
Source available to your teamYesNoNoNo

Want to see the cutover plan?

30-minute walkthrough including the SpringBig migration two-track. Existing balances import, customer phone numbers carry over, the loyalty layer goes live without losing tier history.

Request a demo
Schedule a demo
30 minutes · register, write-up, Form 941