Not clicks. Register receipts.
One campaign: $4,843 of POS-verified revenue inside the 7-day window. The first buyer completed their ticket 6 minutes after the send. That is what attribution looks like when it comes from the register instead of a tracking pixel.
Figures measured on one live store. Available on supported POS integrations: Treez today.
Campaign → POS revenue · Your Store
Completed tickets only · totals deduplicated
Attributed revenue
$17,060
Tickets
376
Fastest buyer
6 min after send
| Campaign | In-store revenue | Pickup revenue | Tickets |
|---|---|---|---|
| Weekend BOGO | $3,890 | $1,230 | 112 |
| Payday Flash | $3,260 | $1,050 | 96 |
| New Drop: Live Resin | $2,410 | $1,070 | 74 |
| Loyalty Win-Back | $1,620 | $640 | 51 |
| Back-in-Stock: Kush Mints | $1,370 | $520 | 43 |
Simulated product UI · illustrative campaign data from a demo store
How POS revenue attribution works
Every night, we sync completed tickets from your POS. The first export at one store pulled 22,085 customers and 59,406 tickets in about ten minutes. Each ticket carries the customer, the line items, and the completed total. That feed becomes the ground truth every campaign is measured against.
Open any campaign and you get an attribution panel instead of a vanity chart: buyers, tickets, revenue, and the match rate for 1, 7, and 14-day windows after the send. Rows are named: you can see exactly which customers bought, alongside flags showing whether each one opened or clicked before purchasing. Revenue splits into in-store versus pickup, because knowing that a campaign drove foot traffic is worth more than knowing it drove taps.
Only completed tickets count. No abandoned carts promoted to "influenced revenue," no pending orders, no double counting of voided sales. If the panel says $4,843, that money crossed the counter. And because the same ticket feed powers our purchase-based segments and auto-generated campaigns, the loop closes: real purchases decide who gets the next email, and real purchases grade it afterward.
An honesty note about windows
Attribution windows overlap by design: a customer who got two campaigns this week legitimately appears in both 7-day windows. That is fine per campaign, but it becomes a lie the moment a platform sums those windows into a "total revenue generated" figure. We deduplicate to distinct tickets before showing any total. When we tested the naive sum on real store data, it inflated revenue by more than 8x. If your current platform shows one big attributed-revenue number, ask them exactly this question.
How attribution approaches compare
The short version: click-based tools measure engagement, POS-based attribution measures money.
| Feature | Us | Alpine IQ | Klaviyo / Mailchimp |
|---|---|---|---|
| Revenue source | Completed POS tickets | Platform attribution models | Ecommerce click conversions |
| In-store purchases counted | Yes | Depends on POS sync | No |
| Named buyers per campaign | Yes | Aggregate reporting | No |
| Deduplicated totals | Distinct tickets, always | Not disclosed | N/A (click-based) |
| Data freshness | Nightly ticket sync | Reported sync latency up to ~24h | No POS data at all |
| In-store vs pickup split | Yes | No | No |
vs Alpine IQ: reporting is their reviewers' complaint
Alpine IQ's marketing is genuinely attribution-forward: its email page promises to "track link clicks and revenue down to item level purchases," its Flows product ships "flow analytics that show business impact," and their strict-versus-broad attribution toggle is a thoughtful touch. But reporting is a recurring theme in their own G2 reviews: users ask for customizable reports, clearer dashboards, and faster load times, and reviewers report POS data taking up to 24 hours to appear. When your Friday campaign's results arrive Saturday afternoon in a dashboard you cannot reshape, the numbers stop driving decisions.
Our answer is narrower and sharper: a per-campaign panel of POS-verified revenue with named buyers and deduplicated totals, refreshed nightly from the register. If you are weighing the two platforms end to end, the full Alpine IQ comparison covers pricing, deliverability, and where they still win.
vs general tools: clicks are not a cash register
Klaviyo and Mailchimp attribute revenue by connecting clicks to online checkouts. That works for a Shopify brand. It collapses for a dispensary, where the majority of purchases happen at the counter: a customer reads your email at lunch, walks in after work, and pays at the register. To a click-attribution model, that campaign earned nothing. Google Analytics has the same blind spot: it can see your menu traffic, but it has never seen your register.
POS attribution flips the problem: instead of asking "which clicks became orders," we ask "which recipients completed tickets." The register answers with names, timestamps, and totals. It is the difference between measuring your email program by engagement and measuring it by revenue, and it is why attribution sits at the center of our Treez integration rather than bolted on as an analytics add-on. It also changes what you pay for: results you can verify against your own books, priced flat on our public pricing page.
Frequently asked questions
See a campaign graded by your register
Book a 20-minute demo. We'll show a live attribution panel from a real store's data: named buyers, deduplicated revenue, in-store vs pickup.