Jul 10, 2026~22 min readExperimentation

The E-Commerce Experimentation Playbook — A/B Tests That Actually Decide

Most A/B tests in e-commerce don't fail statistically — they fail organizationally: underpowered designs, peeking, metric fishing, and results nobody acts on. This is the full playbook for running experiments that produce decisions instead of arguments.

The Playbook

  1. 1. Why Experimentation Is the Highest-Paid Skill Nobody Teaches
  2. 2. Designing a Test That Can Actually Succeed
  3. 3. Power Analysis — The Step Everyone Skips
  4. 4. CUPED — Free Speed for Your Tests
  5. 5. Peeking, Fishing, and the Other Cardinal Sins
  6. 6. E-Commerce-Specific Traps
  7. 7. Reading Results Like an Operator
  8. 8. The Organizational Layer
  9. 9. The One-Page Checklist

Every model, feature, banner, ranking change, and pricing rule in e-commerce is ultimately judged by one thing: an experiment. Yet most companies run tests that are statistically doomed before launch, then argue about the results for two weeks. This playbook covers the statistics you need, the e-commerce-specific traps the textbooks don't mention, and the organizational discipline that separates experimentation cultures from dashboard cultures.

1. Why Experimentation Is the Highest-Paid Skill Nobody Teaches

Here's an uncomfortable industry fact: at companies with mature experimentation cultures (Booking, Amazon, Airbnb), the majority of tested ideas fail to beat control. Microsoft's published number is roughly two-thirds of ideas showing no significant improvement or actively hurting metrics. This means:

The math is straightforward. If a typical successful test moves conversion by 1–3%, and your business does $500M GMV, being right about ten decisions a year is worth tens of millions. Experimentation literacy is how you get to be right.

2. Designing a Test That Can Actually Succeed

Every good experiment is fully specified before launch. The non-negotiable elements:

ElementWhat it meansCommon failure
Hypothesis "Showing delivery dates on listing pages will increase conversion because uncertainty is a purchase blocker" "Let's test the new design" — no mechanism, so no learning when it fails
One primary metric The single metric that decides ship/kill — chosen before launch Ten metrics, and whichever moved gets promoted to "primary" after the fact
Guardrail metrics Things that must not degrade: latency, cancellations, returns, support contacts, margin Shipping a conversion win that quietly spiked returns 8%
Randomization unit User (usually), session, or query — consistent with the metric Randomizing by session while measuring per-user metrics → broken variance math
Duration + sample size Computed from power analysis, fixed in advance, full weekly cycles "Run it until it's significant" — see peeking, below
💡

The primary metric should be as close to the change as possible while still being a business metric. Testing a search ranking change? Use search conversion, not overall GMV — GMV is diluted by all the traffic that never searches, so the same true effect needs 5–10x more sample to detect.

3. Power Analysis — The Step Everyone Skips

Power is the probability your test detects an effect that actually exists. Run an underpowered test and a real 2% win looks like noise — you kill a good idea and never know it. The industry standard is 80% power at 5% significance, and the sample size formula every analyst should be able to run:

# Sample size per variant for a conversion-rate test
from statsmodels.stats.power import NormalIndPower
from statsmodels.stats.proportion import proportion_effectsize

baseline_cvr = 0.032        # 3.2% conversion
mde           = 0.05         # want to detect a 5% relative lift
target_cvr    = baseline_cvr * (1 + mde)

effect = proportion_effectsize(target_cvr, baseline_cvr)
n = NormalIndPower().solve_power(effect, power=0.8, alpha=0.05)
print(f"~{n:,.0f} users per variant")   # → ~190,000 per variantpython

That number surprises people every time: detecting a 5% relative lift on a 3.2% baseline needs ~190k users per arm. This is why the most important output of power analysis is often the decision not to run the test — or to redesign it:

Operator's rule of thumb

If someone proposes a test, ask two questions: "What's the MDE at our traffic in two weeks?" and "Would we ship if we saw exactly that lift?" If the answers don't meet, the test is theater.

4. CUPED — Free Speed for Your Tests

CUPED (Controlled-experiment Using Pre-Experiment Data) is the highest-ROI statistical upgrade in experimentation, standard at Microsoft, Netflix, Booking, and Airbnb, and still weirdly unknown outside them. The idea: much of the variance in your metric comes from stable user differences — heavy buyers buy a lot in both control and treatment. If you know each user's pre-experiment spend, you can subtract the predictable part and test only the residual:

# CUPED-adjusted metric in ~5 lines
import numpy as np

# y = metric during experiment, x = same metric pre-experiment
theta = np.cov(y, x)[0, 1] / np.var(x)
y_cuped = y - theta * (x - x.mean())

# variance reduction = corr(x, y)² — e.g. corr 0.6 → 36% less variance
# → ~36% smaller sample needed for the same powerpython

For purchase metrics with returning customers, correlations of 0.5–0.7 are common — that's 25–50% shorter tests for free, forever, on every test. Two caveats that the tool-vendor blogs undersell:

5. Peeking, Fishing, and the Other Cardinal Sins

Peeking

Checking your test daily and stopping when p < 0.05 sounds harmless. It isn't: with daily peeks over a four-week test, your real false-positive rate inflates from 5% to roughly 25–30%. A quarter of your "wins" are noise, and they'll mysteriously fail to replicate in the annual metric review. Fixes, in order of preference:

  1. Don't peek. Fix the duration, look at the end. Monitoring dashboards for guardrail disasters is fine — deciding early because primary looks good is not.
  2. Sequential testing (mSPRT, always-valid p-values — what Statsig/Eppo/Optimizely use) lets you peek legally at the cost of somewhat lower power.
  3. Bayesian monitoring with a pre-agreed decision rule — fine, as long as the rule really is pre-agreed.

Metric fishing

Twenty metrics at 5% significance ≈ one false positive per test guaranteed. If the primary metric is flat but "conversion among Android users in Riyadh on weekends" is up 12%, that's not a finding — that's the reason the primary metric exists. Subgroup effects are hypotheses for the next test, never conclusions from this one.

Sample Ratio Mismatch (SRM) — the silent test killer

You configured 50/50 but got 50.8/49.2. A chi-square test says that's wildly improbable — something is corrupting randomization (bot filtering hitting one arm, redirects dropping users, caching). SRM invalidates the whole test, and mature platforms check it automatically:

from scipy.stats import chisquare

observed = [100_480, 98_320]          # users per arm
stat, p = chisquare(observed)
if p < 0.001:                        # conventional SRM threshold
    print("SRM detected — do NOT read the results. Debug the assignment.")python

6. E-Commerce-Specific Traps

These are the ones generic A/B testing guides miss — and they're exactly where e-commerce tests go wrong:

TrapWhat happensDefense
Revenue is heavy-tailed One customer buying a TV wall swings the whole test arm. Revenue-per-user tests have brutal variance Winsorize (cap) revenue at p99, or test conversion + AOV separately; consider trimmed means
Weekly seasonality Weekend shoppers differ from weekday ones; payday weeks differ from lean weeks Always run full weeks — 7, 14, 21 days. Never 10
Novelty & primacy effects A flashy new widget gets clicked because it's new; effect decays in 2–3 weeks Compare week-1 vs week-2+ effects; distrust anything that decays
Delayed outcomes Returns land 2–4 weeks after purchase; a "win" may be a returns bomb Guardrail on return rate intent proxies; re-read the test at +30 days before declaring victory
Marketplace interference Treatment users buy up limited stock/deals → control users see worse availability. Arms aren't independent (SUTVA violation) For inventory/pricing tests: switchback tests (alternate time windows) or region splits instead of user splits
Logged-out ↔ logged-in identity Same human gets both variants across devices; effects dilute Accept the dilution in your MDE math, or restrict to logged-in where the experience demands it
⚠️

The interference trap is the big one for marketplaces. Any test that touches price, inventory, delivery capacity, or shared promotions violates the assumption that arms don't affect each other. If your treatment can consume a shared resource, a user-split A/B test will systematically overstate the effect — sometimes by a lot.

7. Reading Results Like an Operator

The test ended. Here's the discipline for the readout:

  1. Check SRM first. If assignment is broken, stop.
  2. Check guardrails second. A conversion win with a latency regression or margin hit is a business decision, not an automatic ship.
  3. Read the confidence interval, not the p-value. "+2.1% [+0.3%, +3.9%]" tells you the plausible range of impact; "p=0.02" tells you almost nothing actionable. Ship decisions should weigh the whole interval against costs.
  4. Flat is information. A well-powered flat result kills a roadmap item cheaply — that's a win. Log it in a searchable registry so the idea doesn't resurrect in six months with a new sponsor.
  5. Annualize honestly. The classic sin: "2% lift × 52 weeks = 104% growth." Effects regress, novelty decays, tests interact. Mature orgs discount projected annual impact by 50–70% — and validate with periodic holdback groups (5% of users kept on the old experience for a quarter).

8. The Organizational Layer

The statistics are the easy half. These are the practices that make experimentation compound:

9. The One-Page Checklist

Before launch:

During:

After:

💬

Want the deeper end of this pool? The canonical book is Kohavi, Tang & Xu, Trustworthy Online Controlled Experiments — the single best applied-statistics purchase in e-commerce. Questions or war stories: sharmavikas.9798@gmail.com.

Sources & Further Reading:
GrowthBook: A/B Testing GuideStatsig: CUPED Test DurationAB Tasty: Statistical Models ComparedKohavi's ExP Platform papers

Enjoyed this? Leave a clap (or twenty)