Services / Retention & Lifecycle / Loyalty
Loyalty programs built to drive repeat visits: enrollment that actually happens, rewards worth chasing, and the cadence that brings people back.
For dispensaries and retailers fighting for the second visit: acquisition is expensive; the second visit is where margin lives.
20x revenue at peak · Perpetual
Perpetual · Infinity Club
Perpetual: a QR loyalty program and budtender incentives, built into a full rebuild.
A loyalty program is how you stop paying for that same customer twice.
We set up the program, drive enrollment where it actually happens (at the register, in the bag, on the site) and run the reward cadence that gives people a reason to come back this week instead of next month.
It’s not a punch card. It’s the engine that makes email, SMS, and your promo calendar worth running: the list they all send to.
Structure, tiers, and rewards built for your margins, not a template’s.
In-bag cards, register prompts, and app-download drivers that get people signed up.
The schedule of offers and points that keeps members coming back, not just holding a card.
Knowing your regulars from your lapsing members and treating them differently.
Loyalty wired into the systems you already run: Toast, Dutchie, the register.
Enrollment, repeat-visit rate, and what the program is actually returning.
Loyalty · Perpetual Brands
The enrollment piece for Perpetual’s loyalty program: points on every dollar, insider drops, referrals and express pickup, with a scan-to-join code.
A free assessment shows where your repeat-visit gap is, and the program that closes it.
Tiers and rewards scoped to your real margins.
The in-bag and at-register assets that turn shoppers into members.
Offers timed to bring members back, tracked against repeat-visit rate.
How the work splits
AI drafts
AI does the first pass
human-finished: the part you feel
AI handles the segmentation and the send mechanics. What a reward should actually be worth, and which offer earns a return visit without giving away margin, is a human judgment call. A loyalty program that loses money is just a discount with extra steps.
dispensary revenue: around $20K a month when Spark took over, ~$400K a month at peak.
Spark built Perpetual’s loyalty layer, a branded merch store paired with a budtender-incentive program that gave budtenders credit to spend in it, inside a full brand, retail, e-commerce and paid rebuild.
Perpetual Brands · post-acquisition rebuild, loyalty and budtender program
Talk through what this would look like on your brand.
Not automatically, and the vendor benchmarks oversell it. Published operator data has shown loyalty members carrying a higher average basket while their time to next order stayed level with non-members: spend moved, frequency didn’t. That’s the failure mode to design against, because enrollment is the easy number to grow and frequency is the one that pays. We baseline both before launch so you can tell which moved.
Usually both. The POS records the transaction; a loyalty platform (Alpine IQ, springbig, or the native tools in Dutchie or Toast) holds the member record, the segments and the sends. Native loyalty is simpler and more limited; a dedicated platform costs more and does more. We work with what you already run, and ask first whether members are reliably identified at checkout.
One point per dollar is the retail default, with rewards set around a 5% effective return, 100 points for $5 is the common shape, and tiers adding a multiplier above set thresholds. Treat those as starting points, not answers. The numbers get modeled against your real basket and margin, because a reward worth more than the visit it triggers is the version that loses money.
That’s the main way loyalty programs lose money, and it’s a design problem rather than an argument against having one. If rewards land on visits that were already going to happen, the discount is pure cost. So thresholds are set for the reward to be earned by incremental visits, depth stays off your highest-margin lines, and reward cost is reported next to member frequency, never separately from it.
One short ask at the register, backed by in-bag cards and an app-download driver: enrollment has to fit the seconds you actually have, not a form. Sign-up that depends on someone joining later mostly doesn’t happen. We write the budtender line, build the physical assets, and track sign-up rate by shift, because enrollment is a floor-execution number before it’s a marketing one.
They should, and whether they can depends on your stack rather than the program design. If in-store, the ecommerce menu and delivery run on separate systems, a member ends up with a split record and a reward they can’t use where they’re standing. That gets settled before launch: one member identity across every channel, or the program generates support tickets instead of visits.
Yes, and that’s the reporting we insist on. Sign-up counts flatter every program. The numbers that show it working are repeat-visit rate among members versus non-members, average basket by tier, and how many members have gone quiet against their own pattern. We report those three monthly against reward cost, so the return is visible rather than assumed.