BFCM cohort analysis: redeemed, active and dormant customers
9 September, 2026Somewhere in your loyalty app’s dashboard is everything you need to measure how your loyalty program performed over BFCM. What’s usually missing is a structure for turning that data into a decision.
A BFCM loyalty retro needs five numbers, each compared against the target you set before BFCM: sign-up lift, redemption rate, reward cost as a share of revenue, cohort repeat-purchase rate, and VIP-tier conversion. The gap between target and actual, not the raw number on its own, is what should drive January’s decisions.
This post covers those five metrics, a simple report template for structuring them, and what each finding should feed into next.
TL;DR
- Report on five numbers, not ten: sign-up lift, redemption rate, reward cost as a share of BFCM revenue, cohort repeat-purchase rate (30/60/90 days), and VIP-tier conversion rate
- Compare each number to the target you set in September. The gap matters more than the raw number or a year-over-year comparison
- Don’t stop measuring at BFCM week. The repeat-purchase numbers that matter most show up 30 to 90 days later
- Use a simple template: metric, target, actual, gap, action, so the report ends in a decision, not just a number
- This report feeds two things directly: the cohort-split analysis and the reactivation campaign that follow it on the calendar
Why January’s measurement is different from September’s benchmarking
September’s KPI check set targets from outside benchmarks, before BFCM happened. This post is the other half: comparing what actually happened against those targets, not setting new ones. See the targets set before BFCM this report compares against if you haven’t confirmed what your own numbers were supposed to hit.
BON’s own BFCM calendar frames January’s Phase 5 goal directly: turn the BFCM cohort into a learning system for next quarter. A report that doesn’t feed a decision isn’t finished yet, whatever the numbers say.
“Sign-ups were up 140%” is a status update on its own. Compared against a target, and connected to an action, it becomes a retro.
The five numbers worth reporting on
Five numbers cover what a BFCM loyalty plan was actually built to do. More than that tends to bury the decision-relevant ones in noise.
Sign-up lift vs. target. How much new enrollment BFCM actually drove, compared against whatever lift you targeted going in. This series used 132% as BON’s own reference figure from prior BFCM data, an illustrative benchmark, not a number to copy as your own target.
Redemption rate. The share of issued points that actually got redeemed, checked against the 20-40% range this series has used throughout its reward-math calculations.
Reward cost as a share of BFCM revenue. Using the true-cost formula behind the reward-cost metric, issued value multiplied by redemption rate, what did the loyalty mechanics actually cost as a percentage of what BFCM brought in.
BFCM-cohort repeat-purchase rate, at 30/60/90 days. Not the store’s overall repeat-purchase rate. Specifically the cohort acquired during BFCM, tracked at multiple intervals instead of one snapshot.
VIP-tier conversion rate. The share of the BFCM cohort that actually crossed into a VIP tier, the mechanic why the compounding value of repeat purchases matters here argued is the real retention lever.
| Metric | What it tells you | This series’ reference target |
|---|---|---|
| Sign-up lift | How much BFCM grew enrollment vs. a typical week | 132% (BON’s own reference figure) |
| Redemption rate | Share of issued points actually redeemed | 20-40% (industry-typical range) |
| Reward cost as % of BFCM revenue | What the loyalty mechanic cost relative to what BFCM brought in | Calculated per order using issued value x redemption rate |
| Cohort repeat-purchase rate (30/60/90 days) | Whether the BFCM cohort actually came back | Set from your own September target, no universal figure |
| VIP-tier conversion rate | Share of the BFCM cohort that reached VIP status | Set from your own program’s tier thresholds |
These are this series’ own working figures, included to show where the comparison point comes from. A merchant’s actual targets should be their own September numbers, not these.
Don’t stop at BFCM week: measuring 30/60/90 days out
Reporting only on BFCM-week numbers, sign-ups and redemptions during the sale itself, misses the actual point of the strategy: whether the cohort came back.
The economic case holds from earlier in this series: a customer’s value compounds over their first several purchases, not their first one. See why the compounding value of repeat purchases matters here for the full argument, citing Bain’s research on repeat-purchase spend growth. A report that stops at BFCM week is measuring the least important part of the outcome.
The practical fix: pull the repeat-purchase and redemption numbers again at 30, 60, and 90 days post-BFCM, not just once in the first week of January. This report is a first checkpoint, not the only one.
The target-vs-actual template
The structure is a single table: metric, target (set in September), actual, gap, and action, one row per metric above.
“Action” is a mandatory column, not an optional one. A gap without an assigned action is a number that gets forgotten by February. Every row should end in something specific: adjust the multiplier, revisit the reward rate, escalate to the reactivation campaign.
Keep it to one page. The reason for five metrics instead of ten is that this report should be readable in under two minutes. Complexity is what kills a repeatable January retro habit.
The table below uses this series’ own reference figures as illustrative example values, not real results. Swap in your own September targets and actual numbers when you build yours.
| Metric | Target | Actual | Gap | Action |
|---|---|---|---|---|
| Sign-up lift | 132% | 118% | -14 pts | Review BFCM sign-up placement; extend the VIP invite window into December |
| Redemption rate | 30% (midpoint of 20-40%) | 24% | -6 pts | Add a reward-available reminder email before points expire |
| Reward cost as % of BFCM revenue | Under 1% | 1.4% | +0.4 pts | Revisit multiplier depth ahead of next BFCM |
| Cohort repeat-purchase rate (60 days) | 25% | 19% | -6 pts | Flag cohort for the deeper cohort-split analysis, redeemed, active, and dormant, coming next in this series |
| VIP-tier conversion rate | 15% | 11% | -4 pts | Escalate the engaged-but-not-converted segment to that cohort split |
[IMAGE NEEDED: infographic — flat table-style graphic on a white background, five rows each showing a metric name on the left, then four small columns labeled “Target,” “Actual,” “Gap,” and “Action,” with the gap column using a small up or down arrow icon in bright pink or lime green depending on direction. Deep purple header row. Clean, editorial, minimal, sentence-case labels, no photos. Alt: “Target-vs-actual template for a BFCM loyalty performance report, showing metric, target, actual, gap, and action columns”. Filename: how-to-measure-your-loyalty-programs-performance-template.png]
What this report should feed into next
Wherever the repeat-purchase or redemption numbers show a meaningful gap, that becomes the input for the cohort analysis splitting the BFCM group into redeemed, active, and dormant segments, the next post in this series.
The dormant segment identified from that split becomes the specific audience for the reactivation push that follows it on the calendar.
Per the calendar’s own Phase 5 to-dos, what this report finds should directly inform refreshing tiers and perks for the new year, not sit in a slide deck nobody revisits.
FAQ
How many metrics should a BFCM loyalty report actually include?
Five is usually enough: sign-up lift, redemption rate, reward cost as a share of revenue, cohort repeat-purchase rate over 30/60/90 days, and VIP-tier conversion rate. More than that tends to bury the decision-relevant numbers in noise. The goal of a January retro is a report someone actually reads in under two minutes, not a dashboard export, so five numbers with an assigned action each beats ten numbers with none.
Should I compare this year’s BFCM to last year’s, or to my September target?
Both are useful, but the target comparison matters more for decisions. It tells you whether your specific plan worked, while a year-over-year comparison mixes in factors like traffic and market conditions that you didn’t control. Keep both numbers in the report if you track them, but let the gap against your own September target drive the action column, not the year-over-year swing.
When should I pull the repeat-purchase numbers?
At minimum 30, 60, and 90 days after BFCM, not just once in the first week of January. The number that matters most, whether the cohort actually came back, isn’t visible yet in early January. Treat the first-week report as a checkpoint on sign-ups and redemption, then rerun the repeat-purchase and redemption numbers at each later interval before calling the retro finished.
What if a metric came in below target?
Treat it as useful information, not something to hide. Assign it a specific action in the report’s action column rather than noting the miss and moving on. A gap with no follow-up doesn’t improve next year’s plan. Common actions include revisiting reward depth, extending an invite window, or escalating a cohort to the next analysis in this series, whatever the specific gap points to.
Does this replace the KPI benchmarks set before BFCM?
No. It’s the other half of that post. The September post set targets from outside benchmarks; this one measures what actually happened against them. Run the September benchmarking post first to set your targets, then come back to this template once BFCM is over to score yourself against what you set.
Build the report so it gets read
A BFCM loyalty report earns its place by being small enough to actually get read and specific enough to end in a decision. Five numbers, compared to what you expected, tracked past BFCM week itself, with an action assigned to every gap. That’s a report someone will actually use in January, not file away.
P.S. All five of these numbers are visible in BON’s dashboard without extra setup, so most of the work here is structuring the report, not hunting for the data.
