A customer who first ordered yesterday has had less opportunity to purchase again than a customer acquired three months ago. Comparing their observed repeat rates without accounting for that difference can make a growing store look as though retention is collapsing. The newest cohort may simply be unfinished.
EcomToolkit’s approach is to define the observation window before judging the campaign. You can use a mature-cohort comparison for a straightforward trading report, or a time-to-event method when follow-up varies. This guide explains both choices. The customer counts and calculations are illustrative; they are not industry benchmarks or evidence from a client account.
Table of Contents
- Define the event and the observation clock
- Use mature cohorts for a clear first report
- Build a customer-level time-to-event table
- Read a small Kaplan-Meier example
- Check whether censoring is informative
- Translate the curve into a trading decision
- EcomToolkit point of view
Define the event and the observation clock
Start with one business question: what proportion of first-time buyers place a second qualifying order within 60 days? Define a qualifying order consistently. Decide how test orders, cancellations, subscriptions, split shipments, replacements, and fully refunded orders affect inclusion. The event should represent the behavior the team wants to understand.
The clock starts at the first qualifying purchase. It ends at the second qualifying purchase, or at the last time you can observe the customer if no second purchase has occurred. Those are different kinds of ending. The first is an event; the second is an observation limit.
NIST’s explanation of censoring describes the statistical issue: when observation ends before the event, the event time remains unknown beyond that boundary. Applying that principle to ecommerce is an analytical choice. It does not mean an unobserved second purchase definitely will happen.
Use a stable customer key, and state its limitations. Guest checkout or identity changes can hide a real repeat order. See the customer identity resolution guide before treating an apparently precise retention curve as reliable customer history.

Use mature cohorts for a clear first report
For a 60-day repeat rate, the simplest defensible comparison includes only customers who have had 60 days of follow-up. Count those with a qualifying second purchase during that window and divide by the eligible first-time buyers. Label newer cohorts as incomplete instead of assigning their unobserved future days a zero.
| Illustrative cohort | First-time buyers | Available follow-up | Observed repeat buyers | Appropriate comparison |
|---|---|---|---|---|
| Earlier cohort | 200 | Everyone has 60 days | 50 within 60 days | 25% at 60 days |
| Recent cohort | 200 | Everyone has 20 days | 20 within 20 days | 10% at 20 days |
| Earlier cohort at day 20 | Same 200 | First 20 days only | 18 within 20 days | 9% at 20 days |
The recent cohort’s 10% is below the earlier cohort’s 25%, but those numbers answer different questions. At the comparable 20-day horizon, the recent group is at 10% versus 9%. That small difference is descriptive; it is not proof that the newer campaign caused better retention.
This method is easy to explain and audit. Its cost is delay: a new campaign cannot provide a mature 60-day result immediately. Keep a shorter common horizon for early monitoring, then update the mature outcome when enough time has elapsed. Do not silently change the horizon while leaving the metric name unchanged.
Build a customer-level time-to-event table
When customers have different follow-up lengths, store one row per customer with the first purchase timestamp, event timestamp if present, observation end, elapsed duration, and event indicator. Keep acquisition attributes as they were known at the start when comparing entry cohorts.
For a customer who repeats on day 14, duration is 14 and the event indicator is one. For a customer observed through day 35 without repeating, duration is 35 and the indicator is zero. The second customer contributes information through day 35, but does not become a confirmed nonbuyer forever.
Choose a common extraction cutoff and document data completeness. An order pipeline that is complete only through Monday should not claim observation through Wednesday. Preserve the dataset version so a later report can distinguish new purchases from corrected identity links or delayed event ingestion.
Avoid computing an average time to second purchase using only repeat buyers and presenting it as the expected wait for all customers. That calculation excludes everyone whose event has not been observed. It can describe the purchasers included in the calculation, but it does not resolve incomplete follow-up.
Read a small Kaplan-Meier example
A Kaplan-Meier estimate updates the probability of remaining without the event at each observed event time. The NIST method reference provides the underlying product-limit approach. For this ecommerce question, one minus that estimate describes cumulative second-purchase probability under the method’s assumptions.
Consider ten customers. Two repeat on day 10. After that, two other customers reach their observation limit on day 15 without repeating. Of the six still observed and without an event just before day 20, three repeat on day 20. This is a deliberately tiny teaching dataset.
| Day | At risk just before change | Repeat events | Censored after prior event | Probability still without repeat |
|---|---|---|---|---|
| 0 | 10 | 0 | 0 | 100% |
| 10 | 10 | 2 | 0 | 80% |
| 15 | 8 | 0 | 2 | 80% |
| 20 | 6 | 3 | 0 | 40% |
At day 10, the remaining probability is 1 × (1 − 2/10) = 0.8. Censoring on day 15 changes the later risk set but does not create a repeat event. At day 20, multiply 0.8 by (1 − 3/6), giving 0.4. The estimated cumulative repeat probability is therefore 60%.
The raw observed count is five repeat buyers out of ten, or 50%. The difference illustrates how the estimator handles incomplete follow-up. It does not prove that 60% is the true population rate. With only ten customers, uncertainty is substantial, and a production report should include uncertainty intervals and the number still at risk.

Check whether censoring is informative
The method needs censoring to be suitably independent of the event process, potentially after conditioning on relevant groups. A common administrative cutoff can be more defensible than losing observation specifically because certain customers changed accounts or moved to an untracked channel.
Suppose customers who buy again through a marketplace disappear from your owned-store identity history. Treating them as ordinary censored observations may distort the interpretation. Clarify whether the question is repeat purchase anywhere, or repeat purchase on the observed storefront. The available data may support only the second question.
Seasonality also matters. Customers acquired during a gift promotion may differ from replenishment buyers acquired later. Equal observation time removes one source of unfair comparison, but it does not remove product mix, campaign selection, or price differences. Segment carefully without slicing the dataset until every curve contains only a few people.
Translate the curve into a trading decision
Use the analysis to choose when a lifecycle intervention should be evaluated, not to invent a guaranteed purchase date. A curve that changes most during the first few weeks can inform the monitoring window. It does not establish that sending a message at a particular moment will improve outcomes.
Pair repeat behavior with order quality. A heavily discounted second purchase may raise repeat rate while reducing contribution. Keep the retention time-window guide alongside the analysis so stakeholders can see how the time-to-event view complements familiar reporting.
For each release of the report, show the event definition, cutoff, cohort sizes, common horizons, and identity coverage. Mark regions of the curve where few customers remain under observation. If the team cannot explain why a late estimate changed, investigate the risk set before changing campaign spend.
Can the curve prove that a retention campaign worked? No. Comparing customers exposed to different campaigns can still reflect selection effects. Use an appropriate experiment or a separately justified causal design when the question concerns campaign impact. Observation-time adjustment alone does not create random assignment.
What if the estimated curve never reaches a 50% repeat probability? Do not report an observed median time to repeat for the whole cohort. State that the median was not reached during supported follow-up. The median among repeat buyers is a different statistic and needs a different label.
EcomToolkit point of view
An unfinished customer journey should remain unfinished in the data. Start with comparable mature windows, introduce survival methods when the question warrants them, and keep their assumptions visible. Better retention decisions begin with a fair opportunity to observe a second purchase. For help reviewing the dataset, request an ecommerce analytics audit.