Feature Distribution · August 2026

What the platform is actually used for

Two questions, deliberately kept apart. Traffic — where the 34.9 million weekly requests go — is dominated by machines talking to machines. Adoption — how many of the 652 billing-active, non-demo merchants switch a feature on — is a different ranking entirely, and it is the one that describes the product. Where the two disagree is where the interesting decisions are.

Compiled 2026-08-16 652 active merchants · 34.9M weekly requests Measured, not sampled
Part I

Traffic is not adoption

The single most important thing on this page: the busiest parts of the platform are not the most-adopted parts, and neither ranking alone should drive a roadmap.

Weekly requests
34.9M
63% is POS integration polling
Active merchants
652
excl. 80 demo accounts
Transacting in 30d
71.9%
469 merchants with a visit
Running automations
45.1%
294 merchants, 23 campaign types
SurfaceShare of trafficMerchant adoptionWhat that means
POS integrations62.8%~87%Machine chatter. High volume, low product surface.
Consumer mobile app15.2%81% (org-level)The busiest human-facing surface.
Consumer web wallet5.7%Second consumer channel, an order of magnitude smaller.
Merchant dashboard2.3%291 CPU-hours/week across 275 endpoints — the most expensive traffic we serve.
Enrollment / join1.0%Small in volume, top of the entire funnel.
Read the third column, not the second. POS polling generates two-thirds of all requests without a human ever seeing a screen. The merchant dashboard is 2.3% of requests but 291 hours of weekly compute — roughly 50× more expensive per request than anything else. Volume rankings would tell you to invest in POS; cost and adoption rankings tell you something quite different.
1

Who these merchants are

Before any feature number means anything, the base has to be split correctly. Demo accounts are excluded throughout, and the platform's own platform_type turns out to disagree with what merchants actually do.

Denominator: 652, not 732. 80 active accounts (10.9%) are flagged demo_account and are excluded from every figure in this report. Every percentage below is against 652 active, non-demo merchants.

As labelled: merchants.platform_type

SegmentMerchants% of 652
loyalty_and_messaging40462.0%
messaging_only23335.7%
messaging_non_integrated81.2%
loyalty_only71.1%

As measured: what they actually did in 30 days

SegmentMerchants% of 652Definition
Loyalty + messaging27442.0%POS-sourced visits and campaigns sent
Loyalty only19029.1%POS visits, no campaigns
Dormant14121.6%Neither — billing-active, doing nothing
Messaging only426.4%Campaigns, no visits at all
Non-integrated loyalty + messaging10.2%Visits with no POS source, plus campaigns
The label and the behaviour disagree, substantially. 233 merchants are flagged messaging_only, but 102 of them record real POS-sourced visits — through shopify, hifyre, dutchiepos, lightspeed and others. Measured by behaviour, true messaging-only is 42 merchants, not 233. Anything that segments on platform_type — pricing, packaging, lifecycle email, success outreach — is working from a field that is wrong for roughly one merchant in six.

The non-integrated loyalty group is, as expected, effectively empty: one merchant recording visits with no POS source while also sending campaigns. It is a real configuration, not a segment worth building for.

The dormant group is the one to look at. 141 billing-active, non-demo merchants sent no campaign and recorded no visit in 30 days — 21.6% of the paying base. Some are seasonal or mid-onboarding; the platform report's churn analysis found ~30 have been silent for over two years. This is the same population, measured a second way.
2

The self-registration pipeline

New merchant creation has more than quadrupled since December, and it is almost entirely messaging-first.

MonthCreatedDemoMessaging-firstActive today
2025-1211199
2026-012311812
2026-023412824
2026-034012924
2026-04130119
2026-052401919
2026-0633123011
2026-0747144216
2026-0850294714

August is a partial month and already the largest on record. The composition changed sharply from June onward: demo accounts went from ~1 a month to 29 in August, and 94% of new merchants are created as messaging-first.

Two readings, and the data cannot yet separate them. The demo surge from June coincides with the pipeline opening up — these are either genuine self-serve trials, or automated/test signups inflating the count. The conversion signal is not yet interpretable: 14 of August's 50 are active today, but so are 16 of July's 47 and 11 of June's 33, and none of those cohorts has had time to mature. What is measurable now: volume is rising sharply and the product these merchants land on is messaging, not loyalty. Whether that converts is the question to instrument next — it is not answerable from merchant records alone.
3

What merchants actually turn on

Distinct billing-active, non-demo merchants against a denominator of 652, measured over 30 days.

FeatureMerchants% of 652
Transacting (any visit)46971.9%core
Rewards configured (excl. seed default)42865.6%core
Awarding points34352.6%gap
Redemptions32650.0%core
Campaigns sent31748.6%core
Auto-campaigns enabled29445.1%core
Audiences built28443.6%core
Referrals active345.2%niche
Gift cards142.1%niche
Seeded defaults are not adoption. 725 active merchants have an active reward defined, which would read as 99.0% adoption. But 252 of them (34.8%) have nothing but a row literally named "Sample Reward", provisioned at signup — 55.9% of all first rewards are created within an hour of the merchant record itself. Across 2,488 active "Sample Reward" rows, 7 have been redeemed in 180 days. Excluding the seed default, 428 merchants (65.6%) have real reward configuration, and that is what the table above reports.
The sharpest number here is the points gap. 469 merchants recorded a visit in the last 30 days, but only 343 awarded any points. That is 126 merchants — 27% of everyone transacting — running a loyalty platform without the loyalty. They may be POS-integrated for data only, mid-onboarding, or misconfigured. Whichever it is, it is the largest single adoption gap on the page and the clearest expansion target.

Adoption clusters tightly: once a merchant is genuinely live, they tend to run campaigns, audiences and automations together in the 40–45% band. There is very little partial adoption between "transacting" and "using the product" — merchants are mostly on one side or the other.

There is a messaging-only segment, and it is small. 42 active merchants sent a campaign in 30 days without recording a single visit. They use springbig as a messaging platform rather than a loyalty platform — no POS data flowing, no points, no redemptions. That is 6.4% of the active base, and it is worth naming because these accounts will look broken on every loyalty metric while being served exactly what they bought. Any funnel or health metric that assumes visits should exclude them.
4

The loyalty funnel, end to end

Thirty days of activity, from grant issued to reward redeemed.

StageVolume (30d)Merchants
Reward grants issued33,971,992252
— of which coupons32,202,516
— of which bonus1,480,656
— of which instant rewards288,820
Redemptions1,362,577328
— traceable to a grant378,013192
About 1.1% of issued grants convert to a redemption. That is not necessarily a problem — bulk coupon issuance to an entire member base is a broadcast, not an offer, and a low conversion rate is expected. But 32.2M coupons a month against 378K grant-linked redemptions is worth a deliberate look at whether issuance volume is doing work. Note also that only 192 of 328 redeeming merchants produce grant-linked redemptions; the rest redeem against point balances directly.
5

Automation: three winners and a long tail

23 auto-campaign types are enabled somewhere in production. Three account for most adoption; most of the rest are used by fewer than 30 merchants each.

TypeMerchants% of 652Instances
After Join18127.8%211
Birthday16725.6%170
Win Back15223.3%337
Budz6910.6%69
After Visit517.8%75
Visit Milestone507.7%586
App Download294.4%29
Reward Available284.3%49
Big Purchase284.3%34
Spend Milestone284.3%246
By Join Date253.8%87
Points Expiration243.7%37
Delayed After Visit192.9%51
Points Milestone162.5%90
Email Add162.5%16
Interests Add132.0%13
API Triggered132.0%5,146
Medical Card Expiration121.8%17
Birthday Add101.5%10
Daily Deals81.2%14
Abandoned Cart60.9%6
After New Subscriptions60.9%9

Three types have zero enabled instances anywhere: Unredeemed Reward Reminder, Expiring Reward Reminder, and Join by Referral. They exist in the type registry and in the code, and no merchant runs them.

Instance count and merchant count tell different stories. API Triggered is used by only 13 merchants but carries 5,146 configured instances — a handful of sophisticated accounts building heavily on the API. Visit Milestone shows the same shape: 52 merchants, 592 instances. These are power-user features, and their low adoption percentage understates their strategic weight.
6b

MessageTemplates: a second sending vertical

Alongside campaigns and auto-campaigns there is a third, largely separate messaging path. It behaves much like API-triggered auto-campaigns but carries none of the stashboard features, and the merchants using it are mostly not dispensaries.

Sends, all time
8.65M
message_template_logs
Templates defined
27,719
745 merchants
Sending in 30d
10
merchants · 58,383 sends
Volume vs peak
−99%
1.37M/mo → 17.8K/mo

The volume is concentrated in suspended accounts

MerchantStatusPOSSends (all time)
Game Story Incsuspendednone5,910,253
GTI Deliveryactivenone1,197,180
Sunflowersuspendednone713,003
GrowHealthylostnone289,827
Bring It On!activenone252,653
Real Gamingsuspendednone144,246
Gold Machinelostnone39,279
78% of all template sends belong to four suspended merchants — 6,788,094 of 8,654,467. Game Story Inc alone accounts for 68% (5.91M). Active merchants account for 1.54M across 19 accounts, and lost merchants a further 330K.
This is largely a non-cannabis vertical. Game Story, Real Gaming, Gold Machine, Skillz, Blitz Mania and Bring It On! are gaming operators, and almost none carry a pos_type at all. The monthly trend — 1,368,234 sends in December 2025 falling to 17,800 in August 2026, a 99% decline while the merchant count held between 6 and 17 — is not seasonality or churn among the remaining users. It is the suspension of a small number of very high-volume gaming accounts.

For its current users it is the only channel

The ten merchants sending via templates in the last 30 days sent zero campaigns over the same twelve months. This is not a secondary path they also use — it is their entire messaging surface. Bring It On! sent 30,019 template messages to 16,682 members; GTI Delivery 15,448 to 3,864; Yayz 9,660 to 2,797.

The 12.8% error rate is consent enforcement, not failure. Of 7,499 errors in 30 days, every one is an eligibility rejection caught late in the pipeline: Invalid member (3,931), member does not allow sms (3,215), and 343 TCPA-delayed sends that failed the same check. The system is declining to message ineligible recipients — working as intended, though catching it earlier would avoid the wasted pipeline work.

Scale of the supporting tables: 8,654,467 send logs, 3,011,259 status rows, 1,414,187 error rows, 83,264 template states. Templates themselves are 27,719 rows across 745 merchants, so definition is far more widespread than use — 230 active non-demo merchants have at least one template defined, but only 10 sent anything in 30 days.

6

Messaging channels

Email carries twice the volume of SMS, but SMS reaches twice as many merchants.

ChannelMerchantsMessages (30d)
SMS2839,626,437
Email13819,109,816
Push684,807,364
iMessage00

Channel combinations, by merchant count: SMS-only 207 · SMS+email 46 · email-only 76 · all three 31 · push-only 24 · SMS+push 27 · email+push 11.

SMS is the default; email is the volume. 207 merchants use SMS and nothing else, while only 31 run all three channels. Email's higher total comes from a smaller, higher-volume group of senders. iMessage is built and carries no traffic at all.
7

Where the traffic actually goes

34.9 million requests over seven days, classified by who is calling.

AudienceRequestsShareCPU hrsEndpoints
POS integrations21,942,94462.8%563.721
Consumer mobile app5,322,44615.2%72.833
Infrastructure / health3,153,8139.0%4.511
Consumer web wallet1,982,8305.7%72.241
Merchant dashboard804,9792.3%291.0275
Analytics & homepage796,5522.3%2.64
Partner / public API464,7501.3%5.543
Enrollment / join358,4031.0%3.225
Other merchant-facing105,4080.3%11.6296

The five busiest individual endpoints are all POS: member lookup (7.5M), member list (4.1M), rewards list (3.1M), the mobile stashboard (3.1M) and offers list (2.5M).

296 endpoints serve 0.3% of traffic. Nearly 40% of the mapped endpoint surface handles almost nothing, while 21 POS endpoints handle 63%. That tail is the maintenance surface — every one of those endpoints carries test, security and upgrade cost. It is the most concrete deprecation target on this page, though the API-contract work in the platform report is a prerequisite: some are unreachable rather than unused.
8

The POS surface is long-tailed

No integration exceeds 17% of active merchants. There is no dominant partner, and that is a strategic fact rather than a technical one.

POSActive merchants% of 652
leaflogix10916.7%
dutchie_ecom10716.4%
dutchiepos8212.6%
cova7812.0%
(no POS configured)6910.6%
flowhub_maui406.1%
headset406.1%
treez274.1%
iheartjane264.0%
blaze253.8%
posabit253.8%
birchmount213.2%
hifyre213.2%
everything else (12+ vendors)<21 each<3%
Two readings, both true. Supporting 25+ integrations for a base this size is expensive, and the tail below 3% is where that cost concentrates. But breadth is also the moat — a merchant on an obscure POS has nowhere else to go. The 69 merchants with no POS configured are the more actionable group: they are active accounts running without the integration that makes the product work.
9

Where configuration and code meet

Several findings in this report are not engineering defects and not account oversights on their own — they occur where a per-account setting has no system-level check behind it. Both halves have to move for them to stop recurring.

The pattern

Three independent flags govern whether a merchant accrues loyalty points: merchant.loyalty, member.allowed_loyalty and merchant_location.loyalty_points. A fourth field, merchant.platform_type, describes what the account was sold. Nothing reconciles them.

def loyalty_enabled?                       # visit.rb:413
  if merchant&.loyalty && member&.allowed_loyalty
    return false if merchant_location && !merchant_location.loyalty_points
    true
  ...

platform_type is absent from that method. Its only enforcement is a permissions check on dashboard access (user.rb:116). The result is that the commercial description of an account and its runtime behaviour can drift apart indefinitely, and nothing surfaces the drift.

ObservationSystem sideAccount side
231 of 233 merchants labelled messaging_only have loyalty = true No validation ties the two fields together The label no longer describes the account
115 of 343 point-awarding merchants have no loyalty line item; 102 also redeem Nothing reconciles feature use against billing configuration Plan assignment needs a periodic review
252 merchants hold only the seeded Sample Reward The default persists indefinitely with no prompt Catalog setup is an unfinished onboarding step
141 merchants billing-active with no activity in 30 days No dormancy signal exists in the product Account review would surface these first
69 active merchants have no POS configured Nothing flags an account that cannot deliver its core value An integration step was never completed
1.79bn points outstanding where members have no catalog to redeem against Points accrue regardless of catalog state Rewards were never configured after enablement
Why these persist. Each item is invisible from both sides. From engineering, a merchant with loyalty = true and no reward catalog is operating normally — every request succeeds. From account management, nothing in the product reports that the configuration is incomplete. The gap is not effort on either side; it is that no view exists showing an account's intended state next to its actual one.
There is a least-privilege dimension to this. Several of the corrections implied above — reconciling a platform label against an enabled feature, clearing a seeded default, attaching the right plan — are not currently self-service. They are reachable through paths that assume production access. In a SOC 2 / HIPAA posture that inverts the intended control: routine account configuration should not require the most privileged access in the organisation, and the people accountable for account state should be able to change it without one. Every configuration task that can only be completed with production access is both an access-control finding and a bottleneck, and it is worth treating as the former.

What would close it

ChangeOwnerEffect
Reconcile platform_type against loyalty at save time, or derive one from the otherEngineeringPrevents new drift
A configuration-health view: enabled features vs configured features vs billed features, per accountEngineeringMakes the gap visible to the people who can close it
Flag point accrual where the merchant has no non-seed rewardEngineeringStops liability accruing against an empty catalog
Periodic review of accounts flagged by that viewAccount managementCloses the existing backlog
Treat catalog setup and POS connection as completion criteria, not optional stepsSharedPrevents the backlog reforming
Make each of these states editable from the admin UI, with an audit trailEngineeringRemoves production access from routine configuration — a control improvement as much as an efficiency one
The constructive read. Every item here is a configuration state, not a fault, and each is a short query away from a dashboard. Building that one view converts a recurring manual audit into something the product reports on its own — which is the difference between finding these once and never needing to look again.
10

What this says about the roadmap

ObservationSo what
115 point-awarding merchants have no loyalty line item102 of them also redeem. At Loyalty Basic rates (~$342/mo) that is roughly $470k/yr — treat as an upper bound until bundled plans are ruled out.
126 transacting merchants award no pointsThe largest expansion opportunity in the base. Diagnose before building anything new.
platform_type does not gate loyalty231 of 233 messaging-only accounts have loyalty enabled. The field describes the sale, not the system.
69 active merchants have no POS configuredActive accounts that cannot get full value. An onboarding question, not an engineering one.
Dashboard costs 291 CPU-hrs on 2.3% of requestsOptimisation here buys more headroom than anywhere else in the estate.
296 endpoints serve 0.3% of trafficThe maintenance tail. Deprecation candidates, pending the API-contract audit.
3 automation types have zero usersBuilt and unused. Retire them or find out why they never landed.
1.1% grant-to-redemption conversion32M coupons a month. Worth confirming that issuance volume earns its cost.
13 merchants run 5,146 API-triggered campaignsA small power-user segment building deeply on the API. Disproportionate strategic value.
Method

Method & caveats

Adoption figures come from the production Postgres replica, read-only, over 30 days, counting distinct merchants where current_status_cache = 'active' and demo_account IS NOT TRUE (652). Traffic figures come from New Relic over 7 days, filtered to appName = 'springBIG' to exclude staging and beta. Endpoint classification is by URL prefix and is mine, not a system-defined taxonomy.