When a single-location cannabis dispensary in the Pacific Northwest came to Chapters Data in late 2024, their numbers told a confusing story. Foot traffic was solid — averaging 180 transactions a day. Their loyalty program had 4,200 active members. Staff turnover was low. And yet, monthly revenue had barely moved in eight months.

The owner's theory was that the market had plateaued. The data told a different story: they had a pricing problem.

Over six months, the team used their existing POS data to rebuild the dispensary's pricing strategy from scratch. The result was a 22% lift in monthly revenue — all from the same customer base, the same location, and the same product assortment.

Here's how they did it.

The Pricing Audit: What the POS Data Revealed

The first step was a comprehensive pricing audit — pulling every SKU's sales velocity, margin per unit, customer purchase frequency, and basket attachment rate from twelve months of POS history.

Three patterns emerged almost immediately:

  • Premium flower was systematically underpriced. Their top-shelf eighths were priced at $42 — $6 to $12 lower than comparable products at nearby competitors. Customers who bought premium flower were among the most frequent buyers (averaging 2.3 visits per month) and had the highest basket sizes. They weren't price-sensitive. They were being handed a discount they hadn't asked for.
  • Mid-tier products were over-discounted. The dispensary ran promotions on mid-tier flower and pre-rolls 3-4 times per month, often stacking loyalty points on already-discounted items. Margin on those items during promo periods dropped below 30% — well under their target of 42%.
  • Low-velocity SKUs were crowding the menu. Of their 310 active SKUs, the bottom 80 by units sold accounted for less than 4% of revenue but occupied significant shelf space, PO volume, and staff mental bandwidth during consultations.
"We'd been running these promos for two years out of habit. When we actually looked at the margin data, we realized we were training our best customers to wait for a sale — on products they would have bought at full price anyway."

Building an ABC Pricing Framework

The team organized the full product catalog into three tiers based on a combination of sales velocity, margin, and customer demand elasticity.

A-tier products (top 20% by revenue contribution) received a pricing review focused on competitive positioning. For several categories — especially premium flower and live resin concentrates — the team found room to raise prices by $3-$7 per unit with no meaningful projected demand impact. These products had demonstrated price-inelastic demand based on purchase consistency through previous small price tests.

B-tier products (middle 60%) received standardized margin floor rules. No promotional discounting was allowed to push margin below 38% on any B-tier item. Loyalty point multipliers were removed from this tier during promotional periods.

C-tier products (bottom 20%) were flagged for rationalization. The team didn't eliminate them all at once — instead, they ran a 60-day sellthrough period with no reorders on the lowest performers, then removed those SKUs from the menu once inventory cleared. This freed up purchasing budget for higher-velocity items and reduced the cognitive load on staff who were explaining a 310-item menu to every new customer.

The ABC framework created a clear decision structure for pricing changes, promotions, and purchasing. Instead of ad hoc discounting, every pricing action now had to pass a simple test: does this preserve margin on A-tier, maintain the floor on B-tier, and help liquidate C-tier?

Markdown Discipline: Replacing Habit-Based Discounting

The dispensary's previous promotion cadence was inherited from a general manager who had left two years earlier. Nobody was quite sure why they ran flower BOGOs on Tuesdays or pre-roll promos on the first weekend of the month. Those promotions had become default calendar items, never evaluated against actual margin or demand impact.

The new approach replaced calendar-based promos with data-triggered markdowns — discounts applied only when specific inventory conditions were met.

  • Age-based discounts: Any product in inventory for 45+ days received a 15% markdown. At 60+ days, 25%. This prevented slow movers from aging into full-price inventory without detection.
  • Overstock alerts: If a SKU exceeded 60-day projected supply (based on trailing 30-day velocity), purchasing was flagged before placing the next order — preventing the overstock that led to panic discounting.
  • No stacking on A-tier: Premium products were ineligible for loyalty point bonuses during promotional windows. The high-frequency customers buying A-tier were engaged regardless of incentive layering.

The effect was immediate on margin. In the first full month under the new markdown rules, promo-driven margin erosion dropped significantly, and the average transaction value on non-promotional days increased as staff shifted their recommendation energy toward higher-margin products.

Basket Analysis: The Cross-Sell Signal in Their POS

One of the most underused features of a dispensary POS system is basket co-occurrence data — which products are purchased together in the same transaction, at what frequency.

The team pulled two years of basket data and found several high-confidence cross-sell pairings that the dispensary wasn't actively promoting:

  • Premium flower + grinders: 34% of customers who bought premium eighths in a single visit had purchased a grinder in a prior transaction — but the grinder wasn't being recommended at the point of sale for premium flower purchases.
  • Concentrates + batteries/rigs: Only 18% of concentrate buyers had ever purchased a consumption device from the dispensary, despite the dispensary carrying a solid hardware selection.
  • Pre-rolls + tins/storage: Almost no cross-sell was happening at the accessories level, even though transaction data showed customers who bought both had 2x the basket size.

The team built a simple recommendation prompt into the POS workflow: when a budtender added specific high-performing SKUs to the cart, a brief note flagged the top co-purchased add-on. This wasn't an aggressive upsell — just a prompt to mention the item.

In practice, the attach rate on prompted accessories increased by 11 percentage points in the first two months. Because accessories carry higher margins than flower (typically 50-65% vs. 40-48%), this had an outsized impact on overall margin per transaction.

Measuring What Changed

The team tracked three metrics monthly throughout the initiative:

Average Transaction Value (ATV) was the leading indicator. Before the pricing changes, the dispensary's ATV sat at $47.20. Six months after implementation, it had risen to $55.10 — an increase of $7.90 per transaction. At 180 daily transactions, that's approximately $1,420 in additional daily revenue from the same customer base.

Gross Margin % improved from 41.2% to 46.8% over the same period, driven primarily by the reduction in over-discounting on A- and B-tier products and the increase in higher-margin accessory attach.

SKU rationalization impact was harder to measure directly, but the purchasing team reported a notable reduction in emergency reorders (previously averaging 6-8 per month, down to 1-2) and zero overstock write-offs in the final quarter of the engagement, compared to $4,100 in write-offs in the same prior-year period.

The combined effect of higher ATV, stronger margins, and reduced inventory waste drove a 22% increase in monthly net revenue — without a single new customer acquisition campaign, no additional headcount, and no change to the physical location.

The Bottom Line

Flat revenue isn't always a traffic problem. Often it's a pricing and margin problem hiding in plain sight inside existing POS data.

This dispensary had everything it needed to solve the problem — the data was already there. What was missing was a structured way to look at it: a pricing framework that treated different product tiers differently, markdown rules based on inventory signals rather than calendar habits, and a simple system for surfacing cross-sell opportunities at the point of sale.

  • A basic ABC pricing framework forces discipline into discounting decisions and eliminates the margin erosion that habit-based promotions create over time.
  • Basket co-occurrence analysis is one of the highest-ROI uses of POS data — and most dispensaries are sitting on years of it, untouched.
  • SKU rationalization isn't just about the menu — it frees up capital, purchasing bandwidth, and staff attention for the products that actually drive the business.

At Chapters Data, we help dispensaries and small retailers find the revenue that's already in their data. If your monthly numbers have been flat despite consistent traffic, there's a good chance the answer is in your POS history — not in your next marketing campaign.