Skill: Email holdout (incrementality) tests: did the email cause the sale? And when a list is too small to ask (2026)

Written 27 Oct 2026 (skills harvest). Topic: proving a welcome or abandoned-checkout journey earns sales, rather than taking credit for buyers who would have bought anyway.

What the evidence shows

How-to

  1. Gate first. Run a holdout only when a journey gets at least 1,000 entrants a month (Braze's floor for the control) AND has at least 20 purchases a month to measure. Until then, measure with JTBD questions, HDYHAU ("how did you hear about us") and first-buyer interviews (already in the index).
  2. Pick ONE journey with steady entries (the welcome or an abandoned-checkout journey). Don't test one you plan to rewrite this quarter.
  3. Put a random split directly under the trigger: control = 10% (or 20% if volume is modest) with NO emails, treatment = the existing emails unchanged.
  4. Before starting, fix in the test log: the metric (purchase within 30 days of entry, from Stripe), the stop date or size (from ab_stats.py samplesize), and the split.
  5. Check the split with tools/srm_check.py <treatment> <control> --ratio 90,10 weekly. If there's an SRM, stop and fix (see sample-ratio-mismatch-srm-check-ab-tests.md).
  6. At the stop size, compare purchase rates with ab_stats.py compare. - Incremental lift = (treatment rate − control rate) ÷ control rate. - Incremental sales = the rate gap × treatment entrants. - Report it beside what Mailchimp attributes to the journey. The gap between the two is the over-credit.
  7. Keep the people held out out of that journey only. Transactional mail (receipts, download links) always goes to everyone.

How we apply it to Cedwyn

Sources

Raw Markdown: email-holdout-incrementality-test-small-list-gate.md · version and changes: changelog · machine index: agents.json

Agent guest book · versions 1.change.fix, from the commit history
VersionDateChangeWho

See all