Start With the Final Event: How to Build a Propensity Model That Works in Bloomreach

The team turns on predictions. The platform produces a purchase-likelihood score for every customer. Three months later, the score is on the profile, a dashboard shows its distribution, and no campaign has ever read it. Asked what the model predicts, the answer is “purchase, generally.” Asked what to do with a 0.71, nobody knows.
The model wasn’t wrong. It was built from the inputs forward: here is the data, here are the features, produce a score. The models that get used are built from the other end. First the exact event you want more of. Then the customers it could apply to. Then the campaign that will read the score. Only then the model. The prediction setup in Bloomreach Marketing (Engagement) follows that order almost exactly, if you let it.
What Bloomreach gives you
Two paths. Templates for the common cases: purchase prediction, churn prediction, email open prediction, and in-session prediction that scores intent while the visitor is still on the site. And custom predictions, where you define the target (a filter describing the customers who did the thing), the eligible customers (who the model should score), the features (what it may learn from), and the algorithm settings. Outputs come as a probability (yes or no), a number (regression), or a best-fit class.
The templates are fine for a first model. The custom path is where “start with the final event” pays, because the target filter is that event.

Fig 1 · Built from the other end · Event, audience, campaign, features, and reading the spread come before the model
Step one: name the final event
The target event. Not “purchase.” The event that, if it happened more, would change a number the business tracks. Second purchase within 60 days of the first. A booking in the next 30 days for a customer with an expiring voucher. Renewal in the 45 days before the subscription ends. A category the customer has never bought from.
The test: can you write the target as a filter the platform can evaluate, with an event name and a window? If not, the model can’t learn it. If yes, that filter is the target, and everything else follows.
The target comes with two windows. The feature window is the behavior the model learns from. The target window is the period in which the event has to happen. Bloomreach’s own example uses 60 days of behavior to predict purchases in the following 30. Set the target window to the one your campaign works in.
Step two: decide who gets scored
The eligible customers are the ones the campaign could reach and the ones for whom the prediction makes sense. A second-purchase model scores first-time buyers, not everyone. A churn model scores active customers, not the already lapsed. Narrowing eligibility makes the model better and the score meaningful, because a 0.71 among first-time buyers is a statement about first-time buyers.
Cut anyone the campaign can’t message (no consent on the channel) unless the score will also feed suppression or paid audiences.
Check the counts before you build. Bloomreach’s documentation asks for at least 1,000 customers who match the target, a few thousand eligible customers, and a recommended minimum of one month of history. Below that, the model has too little to learn from.
Step three: write the campaign that reads the score
Before the model exists. “Customers in the top 20% of second-purchase likelihood get the post-purchase flow’s premium variant; the bottom 20% get the reassurance variant; the middle gets the standard.” Or: “Customers above 0.6 churn risk with a purchase in the last 90 days enter the retention scenario; below, nothing.” Keep a holdout inside each band. The score is only a prediction; the campaign tests whether acting on it changed anything.
If you can’t write the campaign, you don’t need the model yet.

Fig 2 · Bands, not a number · Each band gets its own campaign variant and its own holdout
Step four: choose features the campaign can defend
The features are what the model learns from. Bloomreach lets you pick them, and the temptation is to include everything. Prefer features that exist for every eligible customer (recency, frequency, category mix, engagement by channel) and that don’t leak the target (a “received retention email” feature predicts retention because the retention email was sent to at-risk customers; the model learns your campaign, not your customer).
The model will find signal in fields you didn’t expect. Look at the top features before trusting it; if the strongest predictor of churn is “country,” the model has found a data-quality problem, not an insight.
Step five: read the score as a distribution, not a number
The first thing to look at is the histogram of scores across eligible customers, and the top and bottom deciles by name. If the top decile is full of people who bought yesterday, the model is telling you what you know. If it is full of people the team wouldn’t have guessed, the campaign in step three has an audience.
The score is on the customer profile, under Properties, in the Predictions dropdown, and it works as a customer attribute in filters, segmentations, and scenarios. It is recalculated from current data each time it’s requested, the way an aggregate is.
Then run the campaign, with its holdout, for one cycle of the target window. The model is good if acting on the score moved the target event against the holdout. It isn’t good because its accuracy metric was high.
Where it goes wrong
The target is too broad. “Purchase” produces a score that correlates with “already a customer.” Narrow it to an event with a window.
Eligible is everyone. The score is then dominated by the difference between active and lapsed, which you already had as a lifecycle stage.
No reader. The score sits on the profile. Write the campaign first.
Leaked features. The model predicts your past campaigns. Remove anything that is a consequence of the target or of the treatment.
Judged by accuracy, not by lift. A model can be accurate and useless if the customers it identifies would have converted anyway. The holdout is the judge.
The takeaway
Name the event, narrow the audience, write the campaign that reads the score, choose features you can defend, read the distribution, and measure the lift. In Bloomreach, that is the custom-prediction setup in the order the platform asks for it, with the campaign written before the model rather than after. A propensity model is a campaign input. Built from the final event backward, it has a reader on day one.
Read next
AI readiness: what your customer data needs first. The four checks on the data the model learns from.
Customer lifecycle stages: define, operationalize, measure. The eligible audience, usually a stage.
Open rate is a diagnostic, not a success metric. The holdout that judges the model.
WRITTEN BY

Jan Sacha
Co-Founder · Bloomreach Consultant
Bloomreach Marketing consultant, in his third year at Asteroad running daily CDP and marketing automation work for European clients. Former Exponea enterprise consultant and CEO of Digiline.
Put these ideas to work.
If an article names a problem you are dealing with, tell us. We will listen first, then tell you honestly what we would do. No pitch, no commitment.


