In Braze

What you actually do with it

7 attributes land on every customer's profile. This is what a marketer does with them: the audience in one filter, the holdout excluded every time, the intensity dialled by tier, and the personalisation kept out of the targeting.

Where it sits: The Activate stage of the loop. The model decided who and why; this is where and how.

Six moves

Braze is handed the answer, not asked to work it out

Every filter below reads an attribute that genuinely syncs. Nothing here recomputes a score, rebuilds a rule or invents a segment, which is what keeps one system deciding who a customer is and the other deciding what they see.

01

Build the audience on one filter

The behavioural segment is already decided, so the audience is a single equality check rather than a rebuilt decision tree.

behavioural_segment is at_risk

Everything that decided this, thirteen rules in priority order, ran upstream. Braze is being told the answer, not asked to work it out, which is why the filter is one line instead of nine nested conditions.

02

Always exclude the holdout

Add the holdout exclusion to every campaign and Canvas that targets a modelled segment. Every one, without exception.

AND in_holdout is false

The held-back group is assigned upstream on a stable hash, so the same customers stay out on their own. Braze only ever has to not message them.

Forget it once and that quarter's measurement is gone. There is no way to reconstruct who should have been held back after the send.

03

Dial the intensity by value tier

Same segment, same message, different weight: frequency cap, offer richness and channel mix flex on the tier.

AND value_tier is any of Platinum, Gold

This is the grid read as rows rather than cells. One segment is one treatment; the tier says how hard to lean in, which is why nine segments cover twenty-three positions instead of needing twenty-three separate builds.

04

Personalise with Liquid, do not target with it

The cross-sell target chooses which product the message shows, inside a message the segment already decided to send.

{{custom_attribute.${cross_sell_target}}}

Content and audience are different jobs. Keeping the target out of the entry criteria is what stops a personalisation field quietly becoming a second, unversioned segmentation scheme.

The moment it appears in an audience filter, you have two segmentation systems and only one of them is tested.

05

Let the re-score move people

Enter on segment membership and let a customer exit when their state changes, rather than pinning them for the whole journey.

The model rewrites these attributes on its own schedule. A customer who recovers should stop receiving the win-back that night, not finish the sequence because they qualified on the day they entered.

A journey that ignores state change is how someone gets an "we miss you" message the week after they came back.

06

Send the result back

Currents streams sends, opens, clicks and conversions into the warehouse, next to the source events.

That return leg is what lets the next run score on what actually happened. Without it the model is guessing from the same data forever, and nothing on the proof page can be produced at all.

And four things not to do here

None of these are careless. They are all the obvious next move, and each one quietly breaks something that only shows up a quarter later.

Do not recompute recency in a filter

Braze's "last used app" is not the recency the model means. The model reads each customer against their OWN rhythm, so a weekly buyer is late at day ten and a seasonal one is not late at day sixty. A fixed window in a filter quietly contradicts the segment sitting next to it.

Do not rebuild the rules as nested conditions

A tree rebuilt in the segment builder cannot be diffed, tested or rolled back, and it will drift from the upstream one within a quarter. If a rule needs changing, change it where it is versioned and let the attribute carry the result.

Do not assign holdouts here

Per-campaign holdouts leak: someone held out of one campaign still receives the other eleven, so twelve honest campaign reads can sum to a programme that did nothing. The holdout has to be one stable assignment across the whole programme, which means upstream.

Do not override a segment for one campaign

A one-off manual list is untraceable by design. It will not appear in the migration read, it will not respect the holdout, and in six months nobody will know it ran.

The seven attributes themselves, and what each one is for, are on the model page.

One cohort, one quarter

What a Single-Category Loyalist at Silver actually experiences

Those six moves, run for a quarter against one cell of the matrix, written down as a plan somebody owns. This is the artefact that sits between the model and the send, and it is the one that is usually missing.

Single-Category Loyalist at Silver

Cross-sell into the complementary range without disturbing the core.

Data strategy owns the definition, CRM owns the execution
v1.2, reviewed this quarter
The audience, as composed in Braze
behavioural_segment = single_game_loyalist
value_tier = Silver
lapse_risk = false
in_holdout = false

Four attributes, assembled. A state is an input to the audience, not the audience itself, and nobody learns the thirteen rules behind it.

What they receive

  1. 1Flagged as a cross-sell targetIdentifynarrow breadth AND high R and F AND tenure >= Established
    Model segment
  2. 2A light nudge toward something newAwarenessEntered cross-sell audience AND 24h after last purchase
    PushIn-app
  3. 3Explained on his termsConsiderationNo cross-category purchase within 3 days of awareness push
    EmailWeb
  4. 4The offer, waiting in the appConversionCredit issued AND app session
    Content cardApp
  5. 5Turning one purchase into a habitHabit1+ cross-category purchase but < 3 in 30 days
    In-appEmail
Walk it as one person →

What they deliberately do not receive

  • Activate on seasonal sales only. Skip always-on spend prompts.belongs to Deal-DrivenBuys a spike around the seasonal sale. This plan is buying breadth, not a spike.
  • Win them back before they lapse out of the active base.belongs to At-RiskRecency is strong, so a win-back here would pay for purchases that were coming anyway.
  • One strong reactivation attempt, then rest the contact.belongs to HibernatingNot silent, so the one strong attempt would be spent and the contact budget reset for nothing.
  • Recognise, protect and keep first-to-know. Low pressure, high value.belongs to ChampionNot top tier yet. The recognition track starts when they get there, not before.
  • Nurture the forming habit. Do not cross-sell yet.belongs to Rising CustomerThe habit-forming track is for customers still forming one. This habit is formed.

Five real programme plays this cohort sits outside. Written down, because this is the half that decides whether a quarter holds together.

Suppressions

  • Consent and channel reachabilityBothChecked upstream so an unreachable customer never enters the audience, and again at send so a withdrawn consent cannot be raced. Defence in depth, worth the duplication.
  • Frequency cap at SilverBrazeTwo commercial messages a week. This is the cap the tier sets, not a tie-breaker between two campaigns that both wanted the same person in the same week.
  • Recent seasonal sale exposureUpstreamAnyone already prompted for the seasonal sale in the last seven days is held out of this sequence, so the two plans do not stack.
  • State change mid-journeyBrazeA re-score out of the cohort exits the journey at the next step and the new state's plan takes over, so nobody keeps receiving a sequence that no longer fits them. A state change is an exit condition, not a surprise.

Held back

10%

Assigned upstream on a stable hash of the customer id, so the same people stay held out across every send in the quarter.

Held at programme level, not per campaign. A campaign-level holdout leaks, because someone held out of one campaign still receives the other eleven.

What counts as success

  • Introduce a second category from the complementary range
  • Convert the first cross-category purchase, then build the habit
  • Grow breadth without denting his core routine
  • Lift him from Silver toward Gold on total value
Category breadth

One quarter, read against the cohort at quarter start

A single purchase is not success. The cell has to move and stay moved, which is why this is measured as a state change rather than an open rate.

What we already tried

T-09Three quarters ago

An explainer alone converts a first complementary range purchase.

Result. Awareness moved. Conversion did not.

Decision. The barrier is trial, not understanding. Add an incentive.

T-12Two quarters ago

A first-purchase credit converts where the explainer did not.

Result. It converted, but mostly customers who were converting anyway.

Decision. Narrow it to the ones the model says have never tried it.

T-14Last quarter

The credit, narrowed, converts without paying the sure things.

Result. Clear on the first conversion. No read on a second.

Decision. Kept it, moved the explainer earlier, set a follow-up on the second purchase.

Each held back 10 per cent, same cohort. Read top to bottom: every decision set the next hypothesis, and that chain is the register's whole job. Without it a programme re-runs what did not work and calls it new.

Whether this cohort actually moved, set against the slice of itself held back, is on Proof.

The programme view

Who is actually being touched, and who is not

One cohort's plan is above. This is every campaign in flight, laid over the cells the model says are worth targeting, so contact load and coverage are visible in the same place. Gaps are ranked by share of the base, because a gap over a tenth of your customers and a gap over half a per cent are not the same finding.

18 / 23
cells reached by at least one campaign
5 / 23
worth targeting, reached by nothing
3 / 23
carrying more than a contact a week
contacts per person per quartervalue tier
Platinum
Gold
Silver
Bronze
Dormant
Champion3.2% of the base
82 camp
82 camp
Loyal Habitual2.7% of the base
61 camp
113 camp
113 camp
0gap
Single-Category Loyalist2.2% of the base
92 camp
92 camp
0gap
Rising Customer10.6% of the base
113 camp
31 camp
At-Risk4.9% of the base
82 camp
82 camp
82 camp
Hibernating1.7% of the base
21 camp
21 camp
21 camp
Reactivated2.0% of the base
61 camp
82 camp
0gap
Onboarding11.7% of the base
51 camp
Casual / Low-engagement41.2% of the base
0gap
0gap
CoveredGap: worth targeting, nothing reaches itMore than a contact a weekNot planned for

Where the opportunity is

Cells the model says are worth targeting that no campaign currently reaches, biggest share of the base first.

  • Casual / Low-engagement at Bronze41.2% of the base sits in this segment
  • Casual / Low-engagement at Dormant41.2% of the base sits in this segment
  • Loyal Habitual at Bronze2.7% of the base sits in this segment
  • Single-Category Loyalist at Bronze2.2% of the base sits in this segment
  • Reactivated at Bronze2.0% of the base sits in this segment

Where the load is

Thirteen weeks in a quarter, so anything past about nine contacts is more than one a week. Not automatically wrong, but it should be a decision rather than an accumulation.

  • 11Loyal Habitual at GoldComplementary range cross-sell · Products discovery · Always-on newsletter
  • 11Loyal Habitual at SilverComplementary range cross-sell · Products discovery · Always-on newsletter
  • 11Rising Customer at SilverMomentum nudge · Products discovery · Always-on newsletter

The tracks off the grid

These never sat on the tier grid, so they carry their own treatment and their own load.

Subscriber
2 / quarter
Renewal care
Prospect
4 / quarter
First-purchase conversion
One-and-done
0 / quarter
nothing reaches it
Deal-Driven
4 / quarter
Seasonal sale moment

What is in flight

CampaignWho it reachesChannelsPer qtrVariants
Recognition trackAcknowledge the top tier without discounting to themChampionPlatinum / GoldEmail22
Complementary range cross-sellConvert a first complementary range purchase where behaviour says they would take itSingle-Category LoyalistLoyal HabitualGold / SilverEmail, Push34
Win-backOne strong attempt at the right moment, then rest the contactAt-RiskHibernatingEmail, SMS23
First 30 daysGet to a second purchase before the habit fails to formOnboardingEmail, Push, In-app53
Momentum nudgeReinforce a habit that is already formingRising CustomerSilver / BronzePush32
Products discoveryWiden the range used, without adding contact loadLoyal HabitualRising CustomerGold / SilverEmail, Card23
Second-purchase promptMake the return stick with a second purchaseReactivatedSilverEmail22
Seasonal sale momentRide the spike without training everyone to wait for itDeal-DrivenPush, Email42
First-purchase conversionTurn a registration into a first purchaseProspectEmail, SMS43
Renewal careProtect the recurring relationship and recover failed paymentsSubscriberEmail21
Always-on newsletterThe unsegmented broadcast every programme still carriesChampionLoyal HabitualSingle-Category LoyalistRising CustomerAt-RiskReactivatedOnboardingCasual / Low-engagementPlatinum / Gold / SilverEmail61

Illustrative and deterministic: a worked programme, not your campaign list. The shape is the point. Point it at your own inventory and the same three findings fall out, because every campaign already declares the value tier and behavioural segment it targets.

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.