Five dimensions in, two decisions out
The engine deals in thirteen canonical states. Feed it a customer's signals and it returns a value tier and a behavioural state, live in the browser, with the rule that fired shown alongside.
Built from events you already have
The model reads the purchase and account events you already capture, and turns them into the five dimensions.
A subscription routes auto-renewing customers onto their own track, and engagement events, logins, app opens and sessions, feed the wider catalogue models. Nothing here needs a new data source.
What Braze receives
The two decisions, a value tier and a behavioural state, land on every customer's Braze profile alongside five supporting attributes. Seven in all, and this is the whole contract: four core outputs to target on, one derived personalisation field, and two that answer questions and hold exclusions rather than build audiences. The letters on each card say which of the five dimensions it is built from.
How much a customer is worth right now: total spend discounted by recency, so a big spender gone quiet slips down a tier. Platinum to Dormant.
In Braze: Split any target segment by intensity: contact caps, offer richness, budget. A Gold win-back leans harder than a Bronze one, from the same targeting.
Which of the thirteen states this customer is in, from a deterministic tree, first match wins.
In Braze: The primary targeting filter: the cross-sell audience, the win-back, the onboarding sequence are all built on this one attribute. The row of the matrix, as a segment.
True when a standing order pins recency and frequency to the top of the scale by construction.
In Braze: Route subscription customers to their own track, and keep them out of win-backs and habit nudges they do not need.
Silence measured against the customer's own rhythm, not an absolute day count. Refreshed weekly.
In Braze: Trigger retention before they leave the active window, and gate any send that assumes the habit is still healthy.
The next product worth introducing, complementary range for the single-product cohort.
In Braze: Personalise the message through Liquid: which product it actually shows. Targeting stays on the segment; this never creates a new one.
The number of the rule that produced the state: the recorded why, on the profile.
In Braze: Answer "why is this customer here" without leaving Braze, and trace any send back to the logic that caused it. Never targeted on.
The control flag, assigned upstream on a stable hash of the customer id.
In Braze: Exclude from every send in the programme, so the lift read stays clean. The assignment logic never crosses.
The plan and the rest of it, the cohort definitions, the holdout assignment logic, the lift calculation, the test register, stay upstream. Plan the policy upstream, resolve the instance in Braze.
Thirteen states, one glance
Every state, the plain-English rule that produces it, the measure it moves, and the tiers it can occupy. This is the card a marketer works from. The rules stay upstream, versioned and tested; nobody is asked to memorise them.
Off the grid first
Two kinds of customer the grid cannot score. A subscription pins recency and frequency by construction, and someone who has never purchased has nothing to score yet. Each is routed to its own track before the matrix is even consulted.
On a subscription, so recency and frequency are pinned by the standing order.
Protect the subscription. Cross-sell discretionary extras carefully.
Registered, never purchased.
Trigger the first purchase with a Day-0 activation.
The lifecycle comes before value
New, returning, slipping or long gone: each is caught before any value state, so a lapsing high-value customer is treated as at risk rather than mistaken for a healthy one. Retention first is a design decision, not an accident of ordering.
First 90 days, so there is too little history to read.
Establish the first habit. Cross-sell only later.
Came back after a long silence.
Rebuild the habit, then re-tier onto the main grid.
Gone quiet against their own rhythm, and was worth keeping.
Win them back before they lapse out of the active base.
Silent a long time, and was valuable once.
One strong reactivation attempt, then rest the contact.
One lifetime purchase, then nothing.
A fast second-purchase incentive inside the lapse window.
Event-driven value
Real spend that arrives in spikes around the seasonal sale. A steady read would file them as lapsed, so they are activated on events rather than always-on, and their quiet weeks cost nothing.
Only purchased around a seasonal sale, quiet in between.
Activate on seasonal sales only. Skip always-on spend prompts.
The formed behaviours
Only with the exceptions out of the way does the tree read established behaviour: who is still forming a habit, who is broad and valuable, who is narrow, who is steady. The forming habit is checked first, so it is nurtured rather than cross-sold.
Still newish, but the purchase rate is climbing.
Nurture the forming habit. Do not cross-sell yet.
Established, top tier, and broad across products.
Recognise, protect and keep first-to-know. Low pressure, high value.
Established and frequent, but has never tried complementary range.
Cross-sell into the complementary range without disturbing the core.
Established and frequent, steady spend, a product or two.
Sustain the habit and gently widen the basket.
Everyone else
The honest default. Nothing fired, so keep them warm at low cost and promote them the moment they move. No overlaps, no gaps, nobody unclassified.
Nothing else fired, so keep them warm at low cost.
Efficient always-on contact. Upgrade on any positive signal.
First match wins, top to bottom, so every customer lands in exactly one state. Everything on this card is generated from the model's own definitions, so it cannot drift from the logic it describes. And when a definition changes, it ships as a reviewed change with the population impact stated, so a live audience never moves silently.
The result is a coordinate system
Every customer lands on two axes. The segment is what you target, the tier dials how hard you lean in. Read the rows, not the cells: one row is one target segment at five intensities, which is why this is 13 segments to target rather than 23 audiences to build.
The grid needs a normal purchase pattern to place someone: a real recency, frequency and spend. These sit outside it, so each gets its own treatment track instead.
Purchased once, then silent. An early lapse. A fast second-purchase incentive inside the lapse window.
Registered, never purchased. Trigger the first purchase with a Day-0 activation.
Sale-led, spikes on seasonal events, quiet between. Activate on seasonal sales only. Skip always-on spend prompts.
Auto-renewing plan, off the standard grid. Protect the subscription. Cross-sell discretionary extras carefully.
9 segments on the grid cover 23 of the 45 positions, and 4 more sit off it on their own tracks: 13 in total. The rest are impossible or vanishingly rare, so nothing is targeted at them. The column dials the intensity of the same treatment, it does not change the targeting, which is why this is 13 segments to target rather than 23 audiences to build.
One cell of this grid, written out as a plan somebody owns, is on In Braze.
Shape the distribution before you build
The cut points are not laws, they are the calibration a client owns. Move them and watch the base redistribute across the states: every bar is an audience size you could run. Settle the bands here, and the distribution becomes v1's baseline, the thing the weekly snapshot measures movement against.
Value cuts
Where each tier starts, on twelve-month spend decayed by recency.
The prior value that makes a long-silent customer worth one strong reactivation.
Recency and frequency
Every cut below is in real units, and the whole base is re-scored against it. Illustrative until the client's own distribution is profiled.
Above this gap a customer drops out of the cross-sell pool.
Past this, and previously valuable, they are hibernating rather than casual.
The habit floor for the formed-behaviour states.
With seasonal sale elasticity, this makes them event-only rather than habitual.
Monetary, breadth and tenure
The other three dimensions, and the tenure gate that keeps a forming habit out of cross-sell.
The intensity floor that separates a habitual from a casual.
Raises or lowers who is worth catching when they lapse.
How many distinct lines it takes to count as broad, the Champion gate.
How long someone must have been around before the cross-sell and loyalty states apply.
Where the base lands
A synthetic base of 5,000 customers, classified by the same 13-rule tree. Every bar is an audience you could target tomorrow.
Illustrative and deterministic: the same synthetic base on every load, so only your cuts move the numbers. In the build, this exercise runs on your real base before anything ships, and the calibration you settle on becomes the baseline the weekly snapshot measures movement against.
That is RFM working on sample data. The service page has the rest: what it needs from you, how long it takes to build, what it pairs with, and how the lift gets proven.
