Skip to content
Was It Causal?

Systems

Lifecycle Measurement

Which of our owned-channel campaigns are worth running, and for whom?

The unit you withhold

The person or account

What that costs

A share of eligible customers from each campaign for its readout, and a separate, long-tenured slice of the list from every discretionary lifecycle action, with service and legally required messages still delivered

What it buys

A program-level effect that survives every campaign change, a per-campaign readout that arrives before the planning meeting rather than after it, and per-state incremental estimates a policy can act on.

How the loop runs

Closes: Weekly, as outcomes mature. Each campaign reads out against its own randomized control, drawn from the eligible population at the decision. A separate long-lived program holdout reads quarterly on the value of the whole lifecycle policy. The policy retrains on a cadence, on decisions the log recorded.

Standing control
Three layers, kept apart. A per-campaign control for the marginal effect of each action under the current program; a persistent program holdout, withheld from every discretionary action for a fixed tenure, for the value of the policy bundle; and logged exploration in the policy, so alternative targeting rules can be scored before they ship.
Decision log
Every decision, including the decision to send nothing, with the probability it was chosen at. That is what makes a candidate policy scorable on last quarter's traffic before it ships.
What consumes the estimate
Next best action reads the per-state incremental estimates and the evaluated policy value, and changes who is contacted. The estimate changes behavior without a meeting.
Where the data scientist is needed
Building it, and reviewing the evidence. Marketers launch, read, and act on campaigns without waiting on an analysis, because the rigor is in the scheduled jobs rather than in a queue.
01 · Foundation 02 · Experimentation 03 · Measurement 04 · Decisioning Customer state model Audience builder Permission and suppression Assignment and registry Exposure and decision logging Automated measurement Program lift and reconciliation Evidence review Next-best-action policy Effects by state and policy evaluation Policy governance and safety Every decision logged, so the next test can be measured Color marks the stage
Solid arrows are build order: you cannot hold out an audience you have not defined, and you cannot evaluate a policy whose decisions were never logged. The dashed arrow is the part that makes this an operating system rather than a project plan. Decisions the policy makes become the log that the next measurement reads, so the thing runs continuously instead of once.

Why the system has this shape

A single incrementality study is a project. Somebody scopes it, it runs, it produces a number, and the number goes into a deck. When the question comes back two quarters later, most of that work is done again from the start, because nothing the study built was left standing.

What separates a measurement function from a sequence of studies is the machinery that stays. The diagram above is that machinery for a lifecycle program: what has to exist so a campaign can be measured without a special project, and so the measurement still holds when three other campaigns want the same people next month.

The four stages answer four different questions

Foundation answers who this person is, whether you may contact them, and who is in the audience. Experimentation answers who got what, and whether anyone wrote it down. Measurement answers what happened, how much of it was you, and which estimate governs the decision. Decisioning answers who an action can move, what to do next, and who is allowed to change the rule.

Three layers of randomization, and they answer three questions

The word holdout does three jobs in a lifecycle program, and a system that uses it for all three at once produces numbers that cannot be reconciled.

Three randomizations, kept apart
LayerHow assignment worksThe question it answers
Program holdoutA long-tenured slice of customers, at the assignment unit, receives the baseline lifecycle policy instead of any discretionary action for a fixed tenure. Service and legally required messages still go.Is the lifecycle policy bundle worth running at all?
Campaign controlAmong currently eligible customers outside the program holdout, each decision opportunity randomizes the action against no action or a declared alternative.What is the marginal effect of this action under the current program?
Policy explorationInside the ordinary program, feasible actions keep small known probabilities and the probabilities are logged.Would a different targeting rule perform better than the one running?

The program holdout is not the control for a campaign. Customers in the program have accumulated a different contact history from customers who have received nothing for a year, so comparing this week’s recipients with the program holdout mixes the campaign’s effect with the program’s. Each campaign’s control comes from the population that was eligible for it at the decision, and the program holdout is read on its own, quarterly.

A team can be strong at one stage and get nothing back for it. A careful readout on an audience nobody can reproduce describes a population that no longer exists by the time anyone acts on it. A well-specified policy with no logging behind it cannot be compared to the policy that replaces it.

Solid arrows are constraints

Each solid edge is something the component downstream cannot be built without. They are worth reading as failure modes rather than as sequence, because the failures are specific and they are the ones that show up in real programs.

A holdout without an audience definition. You can randomize a list of IDs today. What you cannot do is say who the estimate is about, or rebuild the same population next quarter to check whether the effect held, which is the difference between a result and a finding.

Measurement without exposure logging. The readout has to reconstruct who was treated from send records and opens. That drops everyone the platform failed to deliver to, and it silently converts the question from the effect of assigning the campaign to the effect of receiving it. Those are different estimands with different answers, and the estimand you can identify is the assigned one.

A policy evaluated without logged probabilities. Every action the policy did not take has probability zero in the resulting data, so no alternative policy can be scored against the log. The only available test is to ship the change and wait, which is the position most automated decisioning systems are in.

The loop is the part that compounds

The dashed arrow is the only edge on the diagram that is not a build dependency. It is a runtime relationship: decisions the policy makes become the log the next measurement reads. Remove it and everything left is a project plan that executes once.

Most lifecycle programs run far more campaigns than they learn from, and this edge is the reason. They are rarely short of statistical skill. They are missing the return path, so each campaign is measured, if at all, by a person who went and looked, and the result expires with the send.

One customer, end to end

The components are specified one at a time, and they run as one path. A customer lapses to ninety days and becomes eligible for the winback action. The permission layer confirms marketing email is allowed for her, on this purpose, today. The audience builder places her in the winback risk set at that decision time and freezes it. The registry checks she is not in the program holdout, then assigns her to the campaign’s treatment or control by hashing her id with the campaign’s salt. The policy chooses the offer over no action, at a logged probability, and the decision is written before anything is sent. Delivery succeeds or fails and each stage is logged. Ninety days later her outcome matures and enters the readout as assigned. The campaign’s effect updates the per-state estimates; the candidate policy that would have skipped her is scored on the held-out decisions; and either the rule changes or it does not, with the reason recorded. Nobody ran an analysis, and every number can be traced back along that path.

Where to start when none of it exists

Dependency order is not investment order. The diagram reads left to right because that is what has to exist underneath what. A team building from nothing gets more from starting in the middle.

First, a program holdout and a registry. A slice that receives the baseline policy and no discretionary action, for a stated tenure, and one place that records who is in which test and what each test’s outcome contract is. This settles the annual argument about whether the program is worth its cost, and it needs a hash function rather than a CDP. The compromise is real and worth naming: randomizing on raw IDs before you can define an audience means you have an estimate before you can say who it is about.

Then exposure and decision logging. It makes every campaign after it measurable and does nothing at all for the ones before it, which is the whole argument for doing it early instead of when the first readout needs it.

Then shared definitions: customer state and consent. These are the components that stop two teams building the same audience differently, and they only pay off once more than one team is using them.

Automated measurement, reconciliation, and review after that. They turn the logs into numbers on a schedule, and then into one governing number per decision.

Effects by state, then the policy, with governance around all of it. A next-best-action policy is only as good as the per-state incremental estimates it optimizes against, and those come from pooled randomized decisions rather than from a propensity model. Governance constrains the policy whether a rule engine, a model, or an agent is choosing, and it is drawn last because it constrains something that already runs.

What this leaves out

Paid media. Every component here is person-level, because that is where the hard parts live: identity, consent, contact history, and who wins when two campaigns want the same person. Bought media runs on a different spine and a different unit of randomization, which is why it is a separate system rather than a stage of this one.

Implementation. Each component is written as a specification, because the hard parts are the decisions it encodes rather than the code. Which consent basis applies. Who wins the contact when two campaigns qualify. Whether the organization can serve the audience the statistics require. Those answers are the same whether the stack is dbt and Airflow or a CDP and a scheduler.

What it produces

The components below specify the machine. This is the machine running: the output a team would receive, with every check the specification says it must carry.

The components

Each states the decision it encodes, who tends to own it, what has to exist underneath it, and a four-stage maturity ladder, so it can be adopted without rebuilding everything at once.

Foundation

Who exists, what may we do with them, and how do we describe a group.

Experimentation

Splitting an audience so the result can be believed later.

Measurement

Turning logged decisions into a readout, an explanation, and a verdict.

Decisioning

Estimating who an action moves, choosing an action per customer including no action, and governing the policy that chooses.