Customer KPIs
Customer KPIs
Summary
This reference is the consultant-grade playbook for the 6 customer-side KPIs a cannabis dispensary operator (or a Claude advising an operator) should actually track: new vs repeat customer ratio, NPS, loyalty program penetration, retention rate, customer acquisition cost (CAC), and lifetime value (LTV). Each entry gives a definition, formula, benchmark ranges segmented by store format × market maturity, what good vs bad looks like, concrete improvement levers, review cadence, a realistic 90-day target, and a Treez data callout that points to the right query surface. The KPIs are ordered in operator-onboarding sequence — observable-from-day-one metrics first (new vs repeat), then metrics that need a few months of cohort data (NPS, loyalty, retention), then synthetic metrics that require multi-month tenure (CAC, LTV).
Source: practitioner benchmarks, Treez operator network (~300 organizations), as of 2025-2026. Directional, not authoritative — triangulate against your own POS + loyalty-platform data before setting hard targets.
For canonical CAC / LTV / retention math — including gross-vs-net-margin variants and the loyalty-program economic model — see cross-retail/loyalty-retention.md Part 8: Retention Economics Cross-Industry Benchmarks. This file cites benchmarks and improvement levers but does not restate the underlying math (per anti-duplication policy). For the medical-arc consultation retention dynamic — how consultative retail builds trust across visits — see cross-retail/pharmacy-consultative-retail.md. For persona × frequency × LTV mapping (daily-user, occasional, medical, social/celebratory) see customer-personas.md. For store-format definitions see retail-strategy.md; for maturity-tier definitions see pricing.md. The canonical Business Stage Ladder lives in sales-kpis.md.
Retail framing only. The NPS, retention, and LTV commentary in this file references store experience, consultation depth, product knowledge, and customer satisfaction — not therapeutic outcomes or medical efficacy. The medical-arc cross-link is for the relationship-building dynamic (how consultative retail retains customers across many visits), not for health claims. Customer KPIs in cannabis are retail KPIs; operators who frame loyalty or retention around medical outcomes are taking on regulatory risk and misleading themselves about what drives the number.
Quick Reference: KPI Index
| KPI | Stage (D-15) | Review Cadence | Anchor | |-----|--------------|----------------|--------| | New vs Repeat Customer Ratio | Launch (0-6 mo) | Weekly cohort | ↓ | | Net Promoter Score (NPS) | Growth (6-18 mo) | Weekly aggregate, monthly cohort | ↓ | | Loyalty Program Penetration | Growth (6-18 mo) | Monthly | ↓ | | Retention Rate | Growth (6-18 mo) | Monthly cohort | ↓ | | Customer Acquisition Cost (CAC) | Mature (18+ mo) | Monthly | ↓ | | Lifetime Value (LTV) | Mature (18+ mo) | Quarterly cohort | ↓ |
How to use this index: If you are opening a new store, start with New vs Repeat and work down. If you are advising an operator who already has 12+ months of data, you can move directly to CAC and LTV — but verify retention rate and loyalty penetration first, because those are the compounding inputs that drive LTV.
Business Stage Ladder Cross-Reference
The canonical Business Stage Ladder lives in sales-kpis.md — that file defines the full multi-domain sequence (sales, inventory, financial, customer) an operator should add KPIs in as the business matures. Below is the customer-side slice only, for quick reference.
Launch (0-6 months):
- New vs repeat customer ratio — observable from day one; gives an immediate read on whether your store is a one-time destination or a habit-forming one. Tracked per transaction, no cohort math required.
Growth (6-18 months):
- NPS — requires a survey mechanism (post-transaction SMS is the highest-yield pattern); starts to stabilize once you have ≥200 responses/month.
- Loyalty program penetration — needs 3+ months after loyalty launch to mean anything; enrollment velocity matters as much as the steady-state %.
- Retention rate — cohort math needs at least 60 days of history to compute a meaningful 30-day retention curve.
Mature (18+ months):
- CAC — only reliable once you have multi-month marketing-spend-to-new-customer attribution; cannabis makes this harder because paid channels are restricted.
- LTV — a slow-moving synthetic metric; 12-month LTV needs at least 12 months of cohort data to be grounded.
Cross-link back to sales-kpis.md's Business Stage Ladder section for the full multi-domain view — sales-side KPIs (conversion rate, basket size, transactions/hr) gate adding customer-side KPIs, because you cannot improve CAC or LTV until the transactional funnel is predictable.
Customer KPI Priority by Persona Mix
The KPIs that matter most depend on which personas dominate your store's revenue. Pull your top-3 personas from customer-personas.md and use this quick-lookup to prioritize measurement investment in the first 12 months.
| If your top personas are... | Prioritize first | De-prioritize (measure but do not optimize aggressively) | Why | |------------------------------|------------------|----------------------------------------------------------|-----| | Daily Consumer + Budget Maximizer | Loyalty penetration, retention rate | NPS absolute score (price-driver bias), CAC (already low) | Frequency-driven personas retain through loyalty + price — NPS is less informative because promoter commentary collapses into "best prices." | | Medical Patient + Wellness Seeker | Retention rate, NPS (consultation theme) | New vs repeat (already repeat-heavy), loyalty penetration (discount-averse segment) | Consultation-depth retention is the durable moat; these personas do not respond to discount-based loyalty. | | Connoisseur + Concentrate Dabber | NPS (assortment theme), retention rate | Loyalty penetration (cash-back doesn't move behavior), CAC (organic word-of-mouth dominates) | Assortment quality and drop cadence are the NPS drivers; loyalty discounts compress premium margins without lifting retention. | | Canna-Curious + Social Consumer | New vs repeat, CAC | LTV (too early), loyalty penetration (low frequency) | These segments are top-of-funnel drivers; the question is whether they convert to repeat and what it cost to get them. | | Edible Enthusiast + Vape-Primary | Loyalty penetration, retention rate | NPS absolute score (hard to benchmark vs in-store personas), new vs repeat (mid-frequency, mixed mix) | Convenience-driven personas respond to loyalty cadence + in-stock reliability; NPS is harder to interpret because their touchpoints are shorter. |
How to use: This is a directional prioritization, not an instruction to ignore other KPIs. You still measure everything in the Index above; you just know which two or three you should be moving first.
Common Pitfalls in Customer KPI Measurement
Practitioner-observed failure modes — most of these cost operators 6+ months before they catch the problem:
- Blended-only LTV reporting. Reporting a single blended LTV number hides segment-level drift. A daily-consumer cohort trending up can mask an occasional-user cohort leaking badly — the blended number looks fine until six months out when the mix has shifted and retention collapses. Fix: Always segment LTV by top-3 personas and by first-purchase-quarter cohort.
- Revenue-LTV without margin-LTV. Loyalty discounts inflate transaction count and revenue, which inflates revenue-LTV — but cash-LTV (LTV × effective margin) may be flat or dropping. Fix: Report both revenue-LTV and margin-adjusted LTV; optimize against margin-LTV.
- NPS measured at a respondent volume below 50/month. Small-sample NPS is noise — a single detractor can swing the score 5+ points. Fix: Require minimum 200 responses/month before acting on NPS movement; below that, use promoter-comment themes, not the absolute score.
- CAC calculated without loyalty-enrollment giveaways. Teams often classify loyalty first-purchase rewards as "discount" in the GL rather than "acquisition cost," which under-reports CAC by 30-60%. Fix: Align finance and marketing on what counts as CAC; re-state prior-quarter CAC to the full definition.
- Retention rate measured only at 30 days. A 30-day-only retention view misses the 60-90 day cliff where lapsed customers drop off. Fix: Measure 30 / 60 / 90 day retention and plot the curve; watch curve shape, not single-point.
- Chasing new-customer share in a saturated market. Saturated markets compress per-acquisition cost and quality; chasing more "new" usually means burning marketing spend on low-LTV cohorts. Fix: In saturated markets, stabilize new vs repeat in the healthy band (15-25% new) and direct investment to retention of existing customers.
- Inventing a column name. The cannabis industry has a habit of assuming PMS tables contain columns they do not — operators commonly reach for a non-existent
ltv_valuefield on customers, a non-existent survey-score column on the sales aggregate, or anis_repeat_visitflag on transactions. These fields usually have to be derived from raw data. Fix: Verify column names against the actual schema before writing queries; thesales_monthlyaggregate exposes exactly 9 columns (month, category, brand_name, units_sold, revenue, avg_price, discount_frequency, margin, transaction_count) — everything else routes throughQUERY_PATTERNS.md. - Framing retention around medical outcomes. Tempting for medical-heavy stores — but it is a regulatory risk (medical-efficacy claims) and it confuses the causality. Customers retain because of consultation, assortment, and trust — not because the product treated a condition. Fix: Frame retention in retail terms (T-26-PHI); use the consultation-depth analog from
cross-retail/pharmacy-consultative-retail.mdfor the dynamic without importing the efficacy framing.
Operator Quick-Start: Your First 90 Days of Customer KPIs
If you are advising a store that is just starting to measure customer-side KPIs, do not try to set up all six at once — the cohort math, survey infrastructure, and attribution tooling do not all land the same week. The sequence below compresses practitioner patterns into a 90-day rollout plan that most operators can actually execute.
Week 1-2: Observable baseline.
- Turn on new vs repeat tracking (the PMS surface this from day one — no cohort math needed).
- Audit current loyalty-program penetration % from the last 30 days of transactions.
- Spot-check by pulling 10-20 random transactions and asking: is the customer identified? Is loyalty status captured? If either field is missing at meaningful rates, fix PMS data quality before you trust any downstream metric.
Week 3-4: Survey infrastructure.
- Stand up post-transaction SMS survey (use a compliant provider — Birdeye, Yotpo, or similar). Target 10%+ response rate.
- Aim for 200+ responses/month before trusting NPS absolute-score movement; below that threshold, use promoter/detractor comment themes instead.
Week 5-8: First cohort reads.
- Compute 30-day retention for the last 60 days of first-purchase cohorts. You need at least two full cohorts (two first-purchase months) to see a curve shape.
- Segment by loyalty-member vs non-member — the gap is your loyalty-program value signal.
- Plot the retention curve at 30 / 60 / 90 days; if the 60-90 day cliff is >15 points, prioritize the lapsed-customer win-back lever before anything else.
Week 9-12: Attribution and LTV.
- Align finance and marketing on what counts as CAC (include loyalty first-purchase-reward cost). Re-state prior-quarter CAC to the full definition.
- Compute a preliminary 90-day cohort LTV — incomplete but directional. Real 12-month LTV needs 12 months; do not wait.
- Plot LTV:CAC ratio; if below 5:1, you have an acquisition-quality problem (cheap low-LTV cohorts) or a retention problem (good cohorts lapsing early). The KPI Interaction Effects table below distinguishes.
What NOT to do in the first 90 days:
- Do not set absolute NPS targets before you have 200+ responses/month. Small-sample NPS is noise.
- Do not chase "more new customers" before you know your retention curve — pouring new customers into a leaky bucket is the most expensive mistake in cannabis retail.
- Do not over-engineer loyalty tier structures. Start with enrollment-reward + frequent-buyer-reward + VIP-unlock; add complexity only after the basic structure hits 50%+ penetration.
KPI Entries
Ordered Launch → Growth → Mature per D-15 — observable metrics first, synthetic metrics last.
New vs Repeat Customer Ratio
Definition: The share of in-period transactions made by customers on their first recorded visit to the store (new) versus customers who have purchased at this store at least once before (repeat), measured monthly. Cannabis-specific KPI per D-17 — placed here because its primary use is customer-mix analysis and CAC / LTV planning; sales-side velocity is a downstream effect.
Formula: New Customer Transactions / Total Transactions × 100 (the complementary value is the repeat %; some operators track both and present as a "70/30" split).
Benchmark by store type × maturity (Treez operator network, 2025-2026):
| Store Type | Saturated | Mature | Emerging | New/Medical-Only | |------------|-----------|--------|----------|-------------------| | single-store independent | 18-28% new | 22-32% new | 35-48% new | 30-45% new | | small chain | 16-25% new | 20-30% new | 32-45% new | 28-42% new | | MSO/large chain | 15-25% new | 18-28% new | 30-42% new | 25-40% new | | delivery-only | 20-30% new | 22-32% new | 35-50% new | n/a |
(Cross-reference retail-strategy.md for store format definitions; pricing.md for maturity tier definitions — this file does not redefine either framework.)
What good looks like: In a mature market with healthy retention, you are sitting in a 20-30% new / 70-80% repeat band. Your loyalty program is enrolling most new customers within their first two visits, and your "new" bucket is being fed by referrals, drop-day signaling, and organic local SEO — not by paid acquisition burn. In an emerging market you tolerate a much higher new-customer share (35-50%) because the total addressable population is still growing; chasing more "repeat" share in an emerging market means you are leaving growth on the table.
What bad looks like: Mature-market store stuck at 45%+ new. That is a leaky-bucket pattern — customers are trying you once and not coming back, usually because first-visit experience (wait time, budtender consultation quality, in-stock rate on advertised SKUs) is breaking. The second bad pattern: saturated-market store below 15% new, which signals over-rotation on existing customers via aggressive discounting — you are retaining by compressing margin, not by building preference.
Closest analog industry: Specialty retail / hospitality. Healthy specialty retail runs roughly 30/70 new/repeat at steady state; cannabis mature skews 20/80 because the daily-user persona (see customer-personas.md) drives far higher visit frequency than an average specialty-retail customer, and high-frequency customers mathematically dominate the transaction mix once they are retained.
Cross-industry comparison: Cannabis skews more repeat-heavy than specialty retail for a structural reason — the daily-consumer persona visits 2-4x/month vs a typical specialty-retail customer at <1x/quarter. The implication: when a cannabis store has too many new customers, it is usually a retention-breaking experience problem, not a top-of-funnel problem.
Improvement levers:
- Referral program with two-sided reward — existing customer gets a credit, new customer gets a first-visit discount; the best-performing versions make the new-customer reward unlock at second visit (not first), which converts referral traffic into habit faster.
- Drop-day signaling — SMS / in-app notification on new-flower or new-brand drops. Pulls existing customers back on a cadence you control and draws new customers who follow a specific brand.
- Loyalty program new-member bonus — instant reward on first enrollment, separate from the referral reward, specifically to move first-time shoppers into the tracked-repeat bucket before their second visit.
Review cadence: Weekly cohort tracking (by first-purchase-week cohort). Monthly rollup for trend.
90-day realistic target: If you are in a saturated market at 75% repeat, target staying in the 72-78% band — chasing more new in a saturated market is expensive and low-ROI because the cost per new customer rises as the market compresses. If you are in a mature market at 55% repeat (leaky bucket), target 62-66% — a 7-10 point lift in 90 days is aggressive but achievable via the three levers above.
📊 Treez data: sales_monthly.transaction_count is a store-level volume signal, not a new/repeat split — the aggregate table is per brand × category × month and does not surface customer identity. True new-vs-repeat split requires PMS customer-table queries that assign each transaction's customer_id a cohort-tag based on first-purchase date. See QUERY_PATTERNS.md §Treez Customer Patterns for the cohort-query template; do not assume a customers.is_new flag exists — you must derive it.
NPS (Net Promoter Score)
Definition: The % of survey respondents who rate their likelihood of recommending the store at 9 or 10 (promoters) minus the % who rate at 0-6 (detractors), based on a single-question survey delivered post-transaction.
Formula: (Promoters - Detractors) / Total Respondents × 100 (over period).
Benchmark by store type × maturity (Treez operator network, 2025-2026):
| Store Type | Saturated | Mature | Emerging | New/Medical-Only | |------------|-----------|--------|----------|-------------------| | single-store independent | 55-70 | 60-75 | 68-82 | 62-78 | | small chain | 50-65 | 55-70 | 62-78 | 58-72 | | MSO/large chain | 45-60 | 50-65 | 58-72 | 52-68 | | delivery-only | 50-65 | 55-70 | 60-75 | n/a |
(Cross-reference retail-strategy.md for store format definitions; pricing.md for maturity tier definitions.)
What good looks like: Mature premium boutique sitting in the 65-80 band with a stable trailing-4-week average. Promoter comments cluster around three themes: budtender knowledge, consistent in-stock on preferred SKUs, and store environment / check-in flow. Detractor volume is <10% and their comments are actionable (specific product, specific staff member, specific time window). You are running a monthly detractor review meeting where budtender leads read 10-15 real responses.
What bad looks like: NPS trending down 5+ points over a trailing-6-week window with no identifiable cause; or promoter commentary that is all price/discount-driven ("cheapest in town" and nothing else), which is brittle — competitors will undercut and your NPS collapses. A third bad pattern: NPS is high but respondent volume is <50/month, meaning the score is not representative.
Closest analog industry: Hospitality / specialty retail. Hospitality NPS benchmarks: hotels 40-60 is typical, Ritz-Carlton ~75, Four Seasons ~80; specialty retail Apple Store ~70-75 is the upper bound. Cannabis NPS is structurally elevated by category enthusiasm — high 60s to low 80s is common at well-run premium boutiques — but that enthusiasm is a one-time gift, not a moat.
Cross-industry comparison: Cannabis NPS runs higher than hospitality at equivalent operational quality because category enthusiasm pads the promoter bucket; this means a 65 NPS in cannabis is roughly equivalent to a 50 NPS in hospitality — do not declare victory at 65.
T-26-PHI framing discipline: NPS-driving touchpoints in cannabis are retail touchpoints — consultation depth, product education, store environment, post-purchase experience (delivery quality for delivery-only; packaging and pickup flow for in-store). Do not frame NPS as correlated with therapeutic outcomes; do not ask survey respondents whether the product "worked" in a medical sense. The question is "would you recommend us," and the answer is about the store, the staff, and the catalog — not about the cannabis.
Improvement levers:
- Post-transaction SMS survey within 2-4 hours — vs receipt-based or email surveys; SMS response rates run 15-25% vs <5% for email, and the response window is close enough to the experience that the rating is accurate.
- Budtender closing-question discipline — train budtenders on a 15-second post-selection check: "Anything you were hoping to find that we did not have?" Surfaces unmet demand and pre-empts detractors.
- Weekly detractor pattern review — aggregate detractor responses by budtender, time slot, and category to identify specific failure modes (e.g., Thursday-evening budtender cohort, edibles out-of-stock, specific brand disappointment) and fix the root cause.
Review cadence: Weekly aggregate review (trailing-4-week average); monthly cohort review (by first-purchase-month cohort — do cohorts rate you lower over time? that is a retention leading indicator).
90-day realistic target: If NPS is 52, target 58-62 — not 75. A 6-10 point lift in 90 days is aggressive but achievable by acting on the three levers above. Do not target absolute numbers; target narrowing detractor volume (e.g., from 18% to 12%), because that move is what causes NPS to lift and is actionable.
📊 Treez data: NPS is not computable from sales_monthly. The sales table is aggregated per brand × category × month and has no survey or customer-satisfaction column. NPS requires a CRM / survey-platform integration (Birdeye, Yotpo, SMS-survey tools) joined to the PMS customer table via email or phone number. See QUERY_PATTERNS.md §Treez Customer Patterns for the integration-join pattern; the sales_monthly schema exposes 9 aggregate columns (month, category, brand_name, units_sold, revenue, avg_price, discount_frequency, margin, transaction_count) — none of which is survey data, so do not attempt to compute NPS from Snowflake alone.
Loyalty Program Penetration
Definition: The share of in-period transactions made by identified loyalty-program members, measured monthly. A leading indicator of retention quality and a lagging indicator of at-checkout enrollment effectiveness.
Formula: Loyalty Member Transactions / Total Transactions × 100 (over period).
Benchmark by store type × maturity (Treez operator network, 2025-2026):
| Store Type | Saturated | Mature | Emerging | New/Medical-Only | |------------|-----------|--------|----------|-------------------| | single-store independent | 55-72% | 50-68% | 40-58% | 35-52% | | small chain | 52-68% | 48-65% | 38-55% | 32-48% | | MSO/large chain | 50-68% | 45-62% | 35-52% | 30-45% | | delivery-only | 60-78% | 55-72% | 45-62% | n/a |
(Cross-reference retail-strategy.md for store format definitions; pricing.md for maturity tier definitions.)
What good looks like: Mature single-store independent at 60-68% penetration, with a clear margin-after-loyalty measurement discipline — you know what % of revenue is discounted via loyalty and what the effective margin on loyalty transactions is. Tier structure is doing work: tier-1 enrollment rewards convert first-time shoppers; tier-2 (frequent) rewards steer behavior toward higher-margin categories; tier-3 (VIP) rewards are unlock-only (early access, events), not discount-only, so they protect margin.
What bad looks like: Penetration climbing above 75% while effective margin (margin net of loyalty discount) is dropping 3+ percentage points quarter-over-quarter. That is a loyalty-discount dependency — customers are waiting for loyalty discounts to transact, and you have trained the market to expect them. The second bad pattern: penetration stuck below 35% in a mature market, meaning enrollment is passive and budtenders are not running the at-checkout script.
Closest analog industry: Liquor / convenience. Liquor-store loyalty penetration runs 30-45%; cannabis structurally higher (often 50-70%) because of the daily-user persona's visit frequency — repeat-buy cadence makes loyalty enrollment a no-brainer for any engaged customer, so the ceiling is higher than liquor.
Cross-industry comparison: Cannabis can sustain higher loyalty penetration than liquor because frequency is higher and visit cadence is more predictable; the risk is that operators misread the ceiling and keep pushing past 70% via discount-heavy structure, which compresses margin faster than it improves retention.
Improvement levers:
- At-checkout enrollment script — "Are you on our loyalty program? Takes 30 seconds, first-purchase reward is $5 off today." Script-discipline lifts enrollment 10-20 points vs passive signage. Budtender-compensation link optional but useful.
- Instant first-purchase reward — rewards unlock the same transaction rather than "next visit" — converts first-time shoppers at the moment of highest engagement (post-selection, pre-payment).
- Tier-based unlock-only rewards at the top tier — VIP tier gets early access to drops, invites to events, first-look on new SKUs — not cash-back. Protects margin while rewarding the highest-LTV customers; steers their behavior toward high-margin categories.
Review cadence: Monthly, alongside effective margin tracking (margin net of loyalty discount, NOT gross margin — you must see both).
90-day realistic target: If you are at 48%, target 55-60% — not 75%. A 7-12 point lift in 90 days is achievable via the at-checkout script and instant-first-purchase reward. Going past 70% in a mature market usually requires cannibalizing margin, which is a bad trade.
📊 Treez data: sales_monthly.discount_frequency rising quarter-over-quarter is a directional signal that loyalty discount usage is climbing (assuming loyalty discounts are captured in the discount table — verify with your Treez admin). The sales_monthly aggregate does not expose a loyalty-member flag; loyalty-member-transaction identification requires a PMS customer-table join on loyalty-status. See QUERY_PATTERNS.md §Treez Customer Patterns for the join pattern.
Retention Rate
Definition: The share of customers from a prior cohort (typically monthly) who made at least one purchase in the current period — measured as 30-day, 60-day, and 90-day retention. The foundational input to LTV; strong retention is what makes cannabis LTV math work despite compressed CAC.
Formula: Customers in Cohort N who Purchased in Period N+1 / Total Customers in Cohort N × 100 (typically measured at 30-day, 60-day, 90-day windows). For the full retention-curve math and the gross-vs-net-margin implications see cross-retail/loyalty-retention.md Part 8 — this file cites the benchmarks, not the math.
Benchmark by store type × maturity (Treez operator network, 2025-2026 — 30-day retention):
| Store Type | Saturated | Mature | Emerging | New/Medical-Only | |------------|-----------|--------|----------|-------------------| | single-store independent | 60-75% | 55-70% | 48-62% | 55-70% | | small chain | 55-70% | 52-65% | 45-58% | 50-65% | | MSO/large chain | 50-65% | 48-62% | 42-55% | 48-62% | | delivery-only | 58-72% | 50-65% | 45-58% | n/a |
(Cross-reference retail-strategy.md for store format definitions; pricing.md for maturity tier definitions.)
What good looks like: Mature premium boutique at 55-70% 30-day retention with a cohort curve that flattens (not collapses) between 30 and 60 days. Lapsed-customer win-back at the 45-day mark is running and has a measurable conversion rate. Retention is higher on loyalty members than non-members by at least 15 points — that gap is what makes the loyalty program worth its margin cost.
What bad looks like: 30-day retention collapsing from 55% to 40% across three consecutive monthly cohorts — that is usually an assortment or experience problem, not a marketing problem. Second bad pattern: retention looks fine but only because you are measuring on a customer base that is 90% daily-users (who would return anyway); segment the cohort by persona and the lighter users are leaking faster than the headline number suggests.
Closest analog industry: Pharmacy / consultative retail. The medical-arc retention analog — where consultation depth across multiple visits builds a long-arc relationship — translates to cannabis as budtender-consultation-driven retention. See cross-retail/pharmacy-consultative-retail.md for the dynamic. Framing discipline (T-26-PHI): we borrow the relationship-building dynamic, not the efficacy claim. Cannabis customers retain because staff built trust through knowledge and curation, not because the product "treated" anything.
Cross-industry comparison: Cannabis retention is structurally higher than mass-market retail (30-day retention in mass retail is often 15-25%) because of the daily-use persona and visit cadence; but cannabis retention is below specialty pharmacy / consultative-retail benchmarks (often 70%+) because the consultation depth in most cannabis stores has not yet reached that of a long-tenured pharmacist relationship.
Improvement levers:
- SMS reminder cadence — 10-14 days after purchase, a restock signal for prior-purchased SKUs ("We just got more of [brand/strain] in") — pulls lapsing customers back before the 30-day mark where retention drops off a cliff.
- Birthday / first-purchase-anniversary touchpoint — a dated reward (10-day expiration to force action) tied to a personal milestone; converts at 20-35% in practitioner data.
- Lapsed-customer win-back at 45 days — before they are "truly lost" at 90 days. SMS + a meaningful one-time offer (not a 5% nudge — a 15-20% or a free accessory). Cost per recovered customer is 3-5x cheaper than acquiring a net-new customer.
Review cadence: Monthly cohort review — plot the 30-day / 60-day / 90-day retention curve by first-purchase-month cohort. Watch for the curve shape, not just the single-point percentage.
90-day realistic target: If 30-day retention is 55%, target 60-65% — not 80%. A 5-8 point lift in 90 days is aggressive but plausible via the SMS cadence and win-back levers. Retention compounds — a small lift is large over 12 months.
📊 Treez data: sales_monthly.transaction_count is a store-level volume signal, not customer-cohort retention; the aggregate table cannot answer cohort questions. Retention-rate computation requires a PMS customer-table query with cohort assignment (first-purchase date as cohort key) and a customer-appearance flag per period. See QUERY_PATTERNS.md §Treez Customer Patterns for the retention-curve query template.
Customer Acquisition Cost (CAC)
Definition: The average dollar cost to acquire one new customer, measured by attributing marketing + promotional spend to newly arriving customers over a matched period.
Formula: Total Marketing Spend (period) / New Customers Acquired (period). For the full CAC math — including variants that attribute in-store promotional spend and loyalty-enrollment incentive cost — see cross-retail/loyalty-retention.md Part 8 (the canonical home for cannabis CAC/LTV math per RESEARCH OQ2). This file cites benchmarks; do not restate the math here.
Benchmark by store type × maturity (Treez operator network, 2025-2026):
| Store Type | Saturated | Mature | Emerging | New/Medical-Only | |------------|-----------|--------|----------|-------------------| | single-store independent | $15-40 | $18-45 | $35-75 | $22-50 | | small chain | $18-45 | $22-55 | $40-85 | $28-58 | | MSO/large chain | $22-55 | $25-65 | $45-90 | $32-68 | | delivery-only | $28-58 | $35-75 | $50-95 | n/a |
(Cross-reference retail-strategy.md for store format definitions; pricing.md for maturity tier definitions.)
What good looks like: Mature single-store independent with CAC in the $18-35 band, driven primarily by referral, word-of-mouth, local SEO, and Weedmaps / Leafly listing optimization — the small set of compliant paid surfaces available to cannabis. You have a clean attribution model that separates "new customer who came via paid" from "new customer who self-identifies via referral." LTV:CAC ratio is ≥10:1 — see LTV entry below.
What bad looks like: CAC climbing above the mature-market top-of-range with LTV flat or declining — you are buying expensive low-LTV customers. A second bad pattern: CAC looks low because you are not counting loyalty-enrollment giveaways or first-purchase discounts as acquisition cost; once you include them, real CAC is 40-80% higher than reported.
Closest analog industry: DTC subscription / specialty retail. DTC paid-acquisition CAC ranges $30-150 depending on category; cannabis CAC is structurally compressed because most cannabis paid channels are restricted (no Google Ads on consumption, no Meta advertising, very limited programmatic) — so most acquisition is organic / word-of-mouth / in-store-referral-driven, which is cheaper but also slower.
Cross-industry comparison: Cannabis CAC is cheaper than DTC at the top of the range but harder to scale — you cannot simply spend more on Facebook ads to drive more new customers. The constraint is channel availability, not budget. This is also why cannabis LTV:CAC ratios look unusually healthy compared to DTC (cannabis ≥10:1 vs DTC 3:1 target); the comparison is misleading if you assume you can grow by spending more.
Improvement levers:
- Referral-program incentive design — two-sided reward where both the referring customer and the new customer receive value, and where the reward unlocks on the new customer's second visit (not first) — which converts referral traffic into habit and cuts real CAC materially.
- Local SEO + Weedmaps/Leafly listing optimization — compliant paid surfaces the few that are available — requires photographic menu hygiene, review-response discipline, and weekly update cadence. These channels are illustrative not endorsements; verify compliance status and pricing in your market before budgeting.
- Event-based acquisition — community events, brand activations, "meet the grower" in-store events — the acquisition cost per attendee is higher per-touch than digital, but attendees retain at 2-3x the rate of digital-acquired customers in practitioner data.
Review cadence: Monthly — alongside LTV:CAC ratio and loyalty-enrollment-cost tracking.
90-day realistic target: If CAC is $52, target $42-48 — not $25. A 10-20% reduction in 90 days is achievable without cannibalizing channel mix; deeper cuts usually mean you stopped investing in top-of-funnel and are about to see new-customer volume collapse.
📊 Treez data: CAC requires marketing-spend data (typically from the finance / GL system) joined to PMS customer-acquisition cohort data — neither side is in sales_monthly. The sales_monthly table surfaces revenue and transaction_count aggregates, which is the LTV-side input, not the spend-side input. See cross-retail/loyalty-retention.md Part 8 for the math and QUERY_PATTERNS.md §Treez Customer Patterns for the attribution-query template.
Lifetime Value (LTV)
Definition: The total revenue a customer contributes over their tenure with the dispensary, typically measured at 12-month and 24-month horizons. The synthetic metric that compounds retention, basket size, and frequency — improve any one input and LTV moves; improve all three and LTV moves nonlinearly.
Formula: Avg Basket Size × Avg Visit Frequency per Period × Avg Tenure (periods). For the canonical formula and gross-vs-net-margin variants (cash-LTV, margin-LTV, loyalty-adjusted-LTV) see cross-retail/loyalty-retention.md Part 8 — this file cites benchmarks, does not restate the math.
Benchmark by persona × maturity (Treez operator network, 2025-2026 — 12-month revenue LTV; see customer-personas.md for persona definitions):
| Persona | Saturated | Mature | Emerging | New/Medical-Only | |---------|-----------|--------|----------|-------------------| | Daily Consumer | $3,600-5,400 | $4,800-7,200 | $5,200-8,400 | $4,200-6,800 | | Medical Patient | $2,800-4,800 | $3,600-6,000 | $4,200-7,200 | $4,500-7,500 | | Connoisseur / Dabber | $3,200-6,000 | $4,500-8,500 | $5,500-10,000+ | $4,800-8,500 | | Edible Enthusiast / Vape-Primary | $1,200-2,400 | $1,600-3,200 | $2,000-4,000 | $1,800-3,400 | | Occasional / Canna-Curious | $600-1,400 | $1,200-2,400 | $1,400-2,800 | $1,100-2,200 | | Social / Celebratory | $400-1,000 | $400-1,200 | $600-1,500 | $500-1,200 |
(Cross-reference customer-personas.md for persona definitions; pricing.md for maturity tier definitions. The daily-consumer ceiling in emerging markets is driven by elevated per-unit pricing — same basket, more dollars per gram.)
What good looks like: Mature premium boutique with blended 12-month LTV in the $1,800-2,800 range across all personas, a clear LTV:CAC ratio ≥10:1, and a segmented LTV view where top-3 personas each have a tracked cohort LTV curve. Your margin-LTV (LTV × avg gross margin) is the number you plan against — because revenue-LTV alone can be inflated by discount-heavy baskets.
What bad looks like: Reporting a single blended LTV number without persona segmentation, so you cannot see that the daily-user cohort is propping up a failing occasional-user cohort. Second bad pattern: LTV calculated on revenue-only when loyalty discount intensity has climbed 5+ points — effective margin-LTV is materially lower than the headline revenue-LTV implies.
LTV:CAC signal: Healthy LTV:CAC ratio in cannabis is ≥10:1 (materially higher than DTC's standard 3:1 target) because CAC is structurally compressed by channel restrictions — see CAC entry above and cross-retail/loyalty-retention.md Part 8 for why the target is different. Do not copy DTC-benchmark targets into cannabis planning without this adjustment.
Closest analog industry: DTC subscription. Spotify annual LTV runs $300-500; Netflix $400-700; Dollar Shave Club $200-400 — cannabis daily-user persona resembles subscription economics with $5K+ annual revenue LTV at premium brands in mature markets. The difference: subscription is contractual, cannabis is habitual — cannabis LTV holds as long as the consumption habit and the store-preference loyalty both hold; either breaking collapses the number.
Cross-industry comparison: Cannabis daily-user LTV dwarfs subscription LTV on revenue basis, but the margin picture is comparable once you adjust for cannabis's compressed margins and 280E tax impact — see financial-kpis.md for the margin context.
Improvement levers:
- Increase basket size — add-on merchandising, tier-unlock basket thresholds, strain-paired accessory placement. See
sales-kpis.mdBasket Size KPI for the basket-specific playbook — LTV is downstream of basket. - Increase visit frequency — loyalty-member cadence (SMS restock signal, drop-day signaling, weekly special previews). Small frequency lifts compound nonlinearly through the LTV formula.
- Increase tenure — every lever in the Retention Rate entry above translates into tenure extension; SMS reminder cadence and lapsed-customer win-back are the highest-yield.
Review cadence: Quarterly cohort LTV analysis (plot 12-month and 24-month revenue LTV curves by first-purchase-quarter cohort). Monthly spot-checks on the ingredients (basket, frequency, retention) — LTV itself moves too slowly to review monthly with signal.
90-day realistic target: LTV is a slow-moving metric. Target a 5-10% lift in the active-cohort 12-month LTV via compounding basket-size and frequency improvements — not via aggressive promotional spend, which inflates revenue-LTV while destroying margin-LTV. If current blended 12-month LTV is $1,600, realistic 90-day target is $1,680-1,760 (and you will not fully see it until 6-9 months out as the compounding plays through).
📊 Treez data: sales_monthly.revenue is a store-level aggregate, not a per-customer series; LTV computation requires customer-level transaction history aggregation (customer_id × date × revenue) that is not in sales_monthly. The sales_monthly.transaction_count and sales_monthly.avg_price columns can give a directional read on the store-wide basket × frequency × tenure approximation. For per-customer LTV see cross-retail/loyalty-retention.md Part 8 for the math and QUERY_PATTERNS.md §Treez Customer Patterns for the cohort-aggregation query template.
KPI Interaction Effects
The customer-KPI domain has meaningful within-domain tradeoffs that are rarely documented in generic reference docs. The table below covers the most important ones — push one KPI and another moves against you. Plan for it.
| Push This Up | This Tends To Drop | Why | What To Do |
|--------------|---------------------|-----|------------|
| Loyalty program penetration | Effective margin (margin net of loyalty discount) | Loyalty discounts compress per-transaction margin; at >70% penetration, you are discounting most transactions | Tier rewards (unlock-only rewards at top tier, cash-back only at lower tiers); track margin-after-loyalty separately from gross margin. See financial-kpis.md for the margin context. |
| Retention rate | New-customer-acquisition urgency | Strong retention reduces top-of-funnel pressure and tempts operators to cut marketing spend | Do not starve acquisition just because retention is healthy — retention is a ceiling, not a floor. Maintain a minimum viable top-of-funnel investment even in a high-retention store. |
| NPS | Throughput at peak (transactions/hr) | NPS-driving consultation depth pulls time from speed — longer consultations = higher NPS, lower peak throughput | Tier express vs full-consult lanes; use self-serve kiosks for repeat customers who know what they want; protect consultation-heavy touchpoints for new and complex-need customers. |
| New vs repeat ratio (more new) | In-period LTV (headline) | New customers have not yet reached steady-state basket × frequency, so adding a new cohort drags the in-period LTV average | Track cohort LTV separately from blended LTV; a new-customer-heavy mix in a growth market is healthy even though headline LTV drops. |
| CAC (cut aggressively) | New customer cohort quality (retention, LTV) | Cheap acquisition often correlates with low-LTV cohorts — bargain-hunters churn faster | Measure CAC alongside cohort-LTV; the right optimization is LTV:CAC ratio, not CAC in isolation. Sometimes the right move is higher CAC to get better cohorts. |
| Loyalty penetration | New vs repeat ratio (more repeat) | Loyalty enrollment is the mechanism that converts a new customer into a tracked-repeat customer, which mathematically shifts the mix toward repeat | Decide which metric matters more for your stage: Launch operators want repeat share to climb; Mature operators in saturated markets may need to sustain a minimum new-share. |
| NPS | Loyalty discount reliance (if NPS is price-driven) | If promoter commentary is dominated by "best prices," NPS becomes fragile and drops when a competitor undercuts | Audit promoter comment themes monthly — if price is the #1 promoter theme, NPS is not durable; invest in consultation and assortment to diversify the NPS-driver base. |
How to read this table: None of these tradeoffs mean "do not improve the KPI." They mean "improve the KPI while measuring the paired metric so you know what the real trade is." The most common mistake is optimizing one KPI in isolation and not seeing the collateral damage until a quarter later.
When to Escalate: Red-Flag Patterns
Some customer-KPI movements are early-warning signals that an operator should escalate before they compound. The patterns below have been observed across the Treez operator network to precede significant revenue or margin impact within 60-90 days.
| Red Flag | What It Usually Means | Escalate To | |----------|------------------------|-------------| | 30-day retention drops 8+ points across 2 consecutive cohorts | Experience regression (wait time, budtender turnover, assortment gap) or a competitor opened nearby | Operations + buying; audit recent assortment changes and budtender schedule changes | | NPS drops 10+ points while loyalty penetration rises | Loyalty-discount reliance — customers are transacting through discounts, not preference | Marketing + finance; review effective-margin trend and promoter-comment themes | | CAC rises 25%+ month-over-month with new-customer cohort retention also dropping | Buying paid traffic from a lower-quality channel; attribution model may also be broken | Marketing; re-audit channel mix and cohort quality by acquisition source | | LTV:CAC ratio falls below 5:1 in a mature market | Either CAC inflated (channel mix degraded) or LTV compressed (retention / basket drift); both are structural | Finance + marketing leadership; full review of acquisition and retention levers | | New vs repeat ratio swings >10 points without an intentional campaign | Unintentional shift — usually a retention problem pushing repeat share down, or a one-time event inflating new share temporarily | Operations; segment by day-of-week and by acquisition source to localize the driver | | Loyalty penetration stalls below 35% despite at-checkout script being in place | Script not being executed consistently, or enrollment-reward value is too low to matter | Training + marketing; shift-lead observation and enrollment-reward A/B test | | Daily-consumer cohort LTV drops while occasional-user cohort LTV rises | Adverse mix shift — your most valuable customers are being out-served by competitors while you optimize for occasional shoppers | Leadership + buying; premium-flower drop cadence and loyalty-VIP tier audit |
Escalation principle: Customer KPIs lag operational reality by 30-60 days. If you see two of these red flags simultaneously, the operational problem started a month ago. Do not wait for the third flag to confirm — triage.
Cross-References
cross-retail/loyalty-retention.md— canonical CAC / LTV / retention math (Part 8: Retention Economics Cross-Industry Benchmarks) and full retention-economics frameworks. This file cites Part 8 benchmarks but does not restate the math (per anti-duplication policy).cross-retail/pharmacy-consultative-retail.md— medical-arc consultation retention dynamic (long-arc relationship building through consultation). The cross-link is for the relationship-building pattern, not for therapeutic-outcome claims (T-26-PHI compliance).customer-personas.md— 10-persona library with basket, frequency, price-sensitivity profiles; used in the LTV benchmark table above for persona × maturity segmentation.retail-strategy.md— store-format definitions (single-store independent, small chain, MSO/large chain, delivery-only); this file cross-references those definitions rather than redefining them.pricing.md— maturity-tier definitions (Saturated, Mature, Emerging, New/Medical-only) and state-to-tier assignments; this file cross-references those tiers rather than redefining them.sales-kpis.md— canonical Business Stage Ladder (cited in the Business Stage Ladder Cross-Reference section above); Basket Size KPI (an LTV ingredient); Conversion Rate KPI (feeds new-customer yield).inventory-kpis.md— KPI-02 inventory metrics; menu-velocity affects NPS (in-stock rate on preferred SKUs is a promoter-driver) and retention (customers churn when their preferred SKUs are consistently out-of-stock).financial-kpis.md— KPI-03 financial metrics including effective margin and 280E-adjusted margin; LTV × margin = cash-LTV, which is the number that actually matters for reinvestment planning.QUERY_PATTERNS.md— Treez customer-table query patterns (§Treez Customer Patterns), cited in every Treez data callout above for customer-level metrics not available insales_monthly..planning/phases/26-dispensary-kpis-metrics/validate.sh— assertion contract this file satisfies (7 D-05 components per KPI entry, mandatory cross-links, sales_monthly allowlist, KPI Interaction Effects section).
Customer KPIs — practitioner benchmarks from the Treez operator network (~300 organizations), 2025-2026. Directional, not authoritative; triangulate against your own POS + loyalty-platform data before setting hard operator targets. Retail framing throughout — NPS, retention, and LTV reference store experience and customer satisfaction, not therapeutic outcomes.