Guides

How to set up an experimentation program

From your first A/B test to a durable program — the plumbing, the statistics rules, the review ritual, and the tools that support each stage.

A single A/B test is easy: change a button, split the traffic, read the result. An experimentation program is the much harder thing that makes the tenth test, and the hundredth, trustworthy — a shared way of instrumenting changes, deciding in advance what would count as a win, and not fooling yourself along the way. Most teams that "do A/B testing" for a year without a program end up with a folder of contradictory results and a debate about whether testing works at all. It does; undisciplined testing does not.

You do not need a program to run one test on a high-traffic checkout page. You need one once more than a handful of people are shipping changes and reading dashboards, because that is when informal habits — peeking at results daily, picking the metric that moved, re-running a "close" test — start producing false wins that get built on top of each other.

Get the plumbing right first

Before the first real test, settle three things that are expensive to change later:

  • The randomization unit. User, session, account, or device — pick the one that matches what you are changing and what you are measuring, and keep it consistent. Splitting by session while measuring a weekly retention metric will corrupt the analysis.
  • Event tracking that is trustworthy at the granularity you test at. If your analytics undercounts a conversion event by 5%, every experiment inherits that noise.
  • A feature flag system, not a code branch per test. Flags let you target, roll back, and run more than one experiment at a time without a deploy for every change.

Skipping this step is the single biggest reason early programs stall: the statistics can be perfect and the result still meaningless if the randomization or the tracking underneath it is broken.

Decide what counts as a win before you look

Write down, before the test starts, the primary metric, the minimum detectable effect worth caring about, and the sample size or run time that implies given your traffic. This single habit prevents most of the self-deception that gives experimentation a bad name.

  • A tiny effect on a huge audience can be statistically significant and commercially irrelevant. Decide the smallest lift worth shipping before you see the data, not after.
  • statistical power is what protects you from the opposite mistake — killing a real improvement because the test never had enough traffic to detect it. Under-powered tests are the quiet failure mode: no dramatic wrong call, just months of true wins discarded as "no effect."
  • Set guardrail metrics (latency, error rate, unsubscribe rate, a competing team's north star) alongside the primary metric, so a win on one number cannot hide damage on another.

Choose how peeking is handled

Every team checks results before the planned sample size is reached — the question is whether your platform's statistics survive that. Fixed-horizon (classic) significance testing inflates the false-positive rate every time you look and could stop early; sequential and always-valid methods are built to be checked continuously without that penalty. This is a genuine platform choice, not just a preference: GrowthBook and Statsig both offer a choice between frequentist sequential testing and a Bayesian engine, with variance-reduction techniques (CUPED) applied to shrink the sample size a test needs. Optimizely's Stats Engine and VWO's Bayesian SmartStats solve the same peeking problem from different statistical starting points — always-valid p-values in one case, a probability-to-win framing in the other. Whichever you choose, know which guarantee you are relying on and do not mix ad hoc peeking with a fixed-horizon test.

Build a review ritual

The program is really a review process, not a piece of software:

  1. An intake step. A short brief per test: hypothesis, primary metric, MDE, guardrails, audience. This is what stops "let's just try it" tests from crowding out ones with a real hypothesis.
  2. A launch checklist. Sample-ratio-mismatch check, tracking QA on a small percentage of traffic before ramping, and confirmation the randomization unit matches the metric.
  3. A decision log. What shipped, what didn't, and why — searchable, so the same idea isn't re-tested from scratch a year later by someone who doesn't know it already failed.
  4. A cadence for review, not a rule that every test must hit significance by a deadline. Programs that punish "inconclusive" results teach people to only run tests they're sure will win, which defeats the purpose.

Tooling by stage

  • A handful of tests on a marketing site, no engineering resource to spare. A hosted visual-editor platform such as VWO or Optimizely gets a non-technical team testing without a data pipeline to build first.
  • An engineering-led product team already warehousing events. Warehouse-native platforms like GrowthBook or Statsig analyze experiments against data you already trust, instead of a second, parallel event stream to reconcile against your product analytics.
  • Releases gated by flags before experimentation is even the goal. LaunchDarkly starts from feature management — kill switches, progressive rollouts — and layers experiment analysis on the same flagged traffic, which suits teams that need release control first and statistical rigor second.
  • Cost-constrained or want to avoid vendor lock-in. GrowthBook's self-hosted, open-source core removes the license cost entirely, at the price of running the infrastructure yourself.

Questions to ask before you commit

  • Does the platform read from our own warehouse, or does it require its own separate event pipeline?
  • What happens statistically if someone checks results daily — does the platform correct for that, or is it on us?
  • Can we run experiments on server-side logic, not just the client, if we need to test pricing or ranking algorithms?
  • How does the tool handle a sample ratio mismatch — silently, or with an alert we'll actually see?
  • What is the real cost at the event or seat volume we'll have in a year, not the volume we have now?

Common mistakes

  • Testing too many metrics and calling whichever moved the win. Decide the primary metric first; treat everything else as a guardrail or a secondary read, not a second chance to find significance.
  • Stopping the moment a test looks good. Early "significance" in a fixed-horizon test is disproportionately likely to be noise — this is exactly what sequential methods exist to fix.
  • No guardrails. A checkout redesign that lifts conversion but doubles support tickets is not a win; you only know that if you measured it.
  • Segmenting after the fact until something is significant. Slicing results by device, geography and channel after the test ends is a search for a lucky subgroup, not evidence. Pre-register the segments that matter.
  • Treating "no significant difference" as "we proved it doesn't matter." An under-powered null result proves nothing; check whether the test could have detected the effect size you cared about.

Once the program is running, the harder skill is reading each individual result correctly — see how to read an A/B test result. For the full field, browse every tool in this category.

Related tools

Terms used in this guide

Latest on this topic