Free resource · use it on this page
Customer Retention Dashboard
A repeat-visit and redemption KPI template for measuring what your loyalty program actually changed, against a real baseline.
Why the baseline comes first
The point of a loyalty program is incremental behavior: visits, redemptions, and spend that would not have happened anyway. The only way to see incrementality is to compare against a baseline you captured before the program launched. Without one, every number on your dashboard is unanchored — a 40% repeat rate means nothing if you never knew what it was before.
Capture the baseline over four to eight typical trading weeks. Skip holiday periods, closures, and one-off promotions; you want boring, representative weeks. If you have already launched, you can still build a baseline from historical POS data for the months before launch — imperfect, but far better than nothing.
One honesty rule before you start: your best customers join first. Comparing enrolled members against non-members will always flatter the program, because the people who sign up were already your regulars. The fairer comparisons are the same customers before and after enrollment, or whole-store metrics against the pre-launch period. This template is built around the second, because every business can do it with a POS report.
Everything below works directly on this page. Fill in the baseline worksheet, track the KPI tables at the cadence shown, score lift on the scorecard, and run the monthly ritual. Print the page if you prefer working on paper — the write-in lines are there for exactly that.
Baseline worksheet — fill in before launch
These eight numbers are your fixed reference point. Write them once, then treat them as read-only.
Baseline window (start and end dates)
Four to eight typical trading weeks; exclude holidays, closures, and one-off promotions
Transactions per week (average)
Straight from your POS, averaged across the window
Unique customers identified per week
However you identify them today — phone, name, card. If you cannot identify customers yet, write 'none' and rely on the whole-store rows
Repeat visit rate
Of identified customers, the share with two or more visits inside the window
Median days between visits
For customers with two or more visits. Use the median — a few super-fans will distort the mean
Average ticket
Total revenue divided by transaction count for the window
Reward redemptions per week
From any existing punch card or informal scheme; write 0 if none
Known confounders
Price changes, menu changes, nearby construction, seasonal swings — anything future-you should remember when reading a change
Repeat-visit KPIs
The behavior side of the dashboard. Each formula uses a rolling 30-day window unless the row says otherwise.
| KPI | Formula | Cadence | Watch out for |
|---|---|---|---|
| Active members | Members with at least one visit in the last 30 days | Weekly | Total signups is a vanity number; only active members predict revenue |
| Repeat visit rate | Members with 2+ visits in 30 days, divided by active members | Monthly | Define a visit once (a completed transaction) and never change the definition mid-year |
| Visit frequency | Member visits in 30 days, divided by active members | Monthly | A handful of heavy users drags the average up; sanity-check against the median |
| Median days between visits | Median gap between consecutive visits, per member, then take the median across members | Monthly | A shrinking gap is the single clearest repeat-behavior signal you have |
| 90-day retention | Members from one signup month with any visit in days 61-90 after joining | Monthly, by cohort | Always read by signup cohort; blended retention hides decay in recent cohorts |
| Lapsed members | Members with no visit in the last 60+ days, divided by all members | Monthly | Pick 60 days for frequent-visit businesses and 90+ for long-cycle ones, then keep it fixed |
| Member share of transactions | Member-attached transactions divided by all transactions | Weekly | Growth here can mean capture improved, not behavior — read it alongside whole-store transaction volume |
Redemption KPIs
Redemption is not a cost center to minimize — members who redeem are members who come back. These rows measure whether your earn-and-redeem loop is actually turning.
| KPI | Formula | Cadence | Watch out for |
|---|---|---|---|
| Redemption rate | Rewards redeemed, divided by rewards earned | Monthly | A very low rate means the reward is not motivating or is too hard to claim — it is a problem, not a saving |
| Time to first reward | Median days from signup to first redemption | Monthly, by cohort | If most members never reach their first reward, the earn threshold is set too far away |
| Post-redemption return rate | Members with a visit within 30 days after redeeming, divided by members who redeemed | Monthly | This is the loop that matters: redeem, return, repeat. If it is weak, the reward ends the relationship instead of extending it |
| Stamp or point velocity | Stamps or points earned per active member per 30 days | Monthly | Falling velocity comes before lapse; it is your earliest warning light |
| Outstanding reward liability | Earned-but-unredeemed rewards, multiplied by reward cost | Monthly | This is real money owed to members; a spike after a promotion is normal, but budget for it |
| Breakage | Rewards expired unredeemed, divided by rewards earned | Quarterly | High breakage flatters this quarter's margin while telling you the loop is broken |
| Pass install rate | Installed wallet passes, divided by install invitations sent | Weekly | Only applies to wallet-pass programs (PushNotice or similar); an installed pass is a member you can actually reach without paying per message |
Incremental lift scorecard
Copy your baseline numbers in, add the latest 30 days, and answer the last column before drawing any conclusion. The write-in lines are for printing and filling in by hand.
| Metric | Baseline | Current 30 days | Change | Before you credit the program |
|---|---|---|---|---|
| Transactions per week | ________ | ________ | ________ | Same season as the baseline window? Weather, local events? |
| Repeat visit rate | ________ | ________ | ________ | Did customer identification improve, rather than behavior? |
| Median days between visits | ________ | ________ | ________ | Same mix of weekdays and trading hours as baseline? |
| Average ticket | ________ | ________ | ________ | Any menu, pricing, or product changes since baseline? |
| Redemptions per week | ________ | ________ | ________ | Is a recent promotion or double-stamp event inflating this? |
| Member share of transactions | ________ | ________ | ________ | Rising because members visit more, or because more regulars simply enrolled? |
Data hygiene — what makes these numbers trustworthy
Run this once at setup and again whenever a number looks too good.
One written definition of a visit
A completed transaction, not a scan or a walk-in; changing it mid-year breaks every trend line
One customer identifier
Phone, email, or pass serial — pick one; a customer with two identifiers is counted as two customers
Staff and test accounts excluded
Your own testing otherwise shows up as your most loyal customer
Timezone fixed in reports
A shifting day boundary silently moves visits between days and weeks
Redemptions recorded at the till
Logged in the same moment as the sale, not batched at closing from memory
Lapse threshold chosen and frozen
Whatever number you picked in the KPI table, do not move it to make a month look better
Baseline stored read-only
Ink on paper or a locked cell; a drifting baseline is the most common self-deception in retention reporting
Program changes annotated with dates
Reward changes, promos, and price rises written on the dashboard so future steps in the trend have an explanation
Median reported alongside mean
For visit gaps and frequency; a few super-fans make averages lie
Retention read by signup cohort
Blended retention always looks better than the truth because early loyalists dominate it
The monthly review ritual — 20 minutes
The dashboard only works if reading it is a habit. Same day, same order, every month.
- 1
Pull the numbers on the same day each month
Consistency beats precision. The first Monday works well; a wandering review date adds noise you will misread as signal.
- 2
Fill the lift scorecard against the baseline
Not against last month. Month-over-month tells you about seasonality; only baseline comparison tells you about incrementality.
- 3
Answer every confounder prompt
Before celebrating or panicking, name one non-program explanation for each change and check whether it holds. If it does, the program does not get the credit or the blame.
- 4
Read one cohort closely
Take last quarter's signup month and check its 90-day retention and time to first reward. Cohorts show you decay that blended numbers hide.
- 5
Pick exactly one action
One lever per month: adjust the earn threshold, change the reward, or send a win-back to lapsed members. Change several things at once and next month's numbers are unreadable.
- 6
Log the decision and the date
Write it on the dashboard itself. In six months, the annotations will explain every step in your trend — or reveal which changes did nothing.
From the guide: Free Loyalty Software: The 2026 Guide
This resource accompanies the full article — worth reading before you commit to a tool.