Industry packs are ready for eight industries. Start from journeys built for yours.Browse packs
Campaigns and templatesUpdated 1 Nov 2026

A/B Testing: How to Run Tests You Can Trust (With Sample Size Guide)

How to run A/B tests you can trust: an eight-step process, a sample size calculator in code, what to test first in email, push and journeys, and the mistakes that create false winners.

FT
Written by Flowfox team
  • Published1 Nov 2026
  • Read time6 min
  • Length1,315 words
Share this guide
A/B testing guide cover

Should the subject line say “Your cart is waiting” or “Still thinking it over?” You could argue about it for an hour, or you could send each to half the list and look at what happened. That is an A/B test. It replaces opinion with evidence, which is why it sits at the centre of any serious email, push and journey programme. This guide explains what A/B testing is, how to run a test that you can trust, how to size it, which things are worth testing, and the errors that produce false winners.

What is A/B testing?

A/B testing is a controlled experiment in which two versions of something, A and B, are shown to similar groups of people at the same time, and the results are compared to see which version performs better on a chosen measure. Group A usually sees the existing version, called the control. Group B sees the change. Because people are split at random, differences in results can be credited to the change rather than to who happened to be in each group.

What you can A/B test in messaging

ElementExample variantsMeasure by
Email subject lineQuestion vs statement; with or without a numberClicks (not opens)
Send timeMorning vs eveningClicks or conversions
Sender nameBrand name vs person and brandClicks
OfferFree shipping vs 10 percent offConversion and revenue
Call to action“Shop now” vs “See the collection”Click-through
Channel orderWhatsApp first vs email firstConversion
Journey wait1 hour vs 24 hours before the reminderRecovered orders
Push copyShort vs descriptiveTap rate and conversion

How to run an A/B test, step by step

A/B testing process in five steps: form a hypothesis, choose one variable and a primary metric, calculate sample size, run the test for the planned period, and analyse and roll out the winner
A reliable test is planned before it starts, not read as it runs.
  1. Write a hypothesis. “Adding the product name to the subject line will increase click rate because it is more specific.” A hypothesis forces you to say what you expect and why.
  2. Change one thing. If you change the subject, the image and the offer at once, you will not know which one mattered.
  3. Pick one primary metric. Choose it before you start. Clicks or conversions beat opens, because Apple Mail Privacy Protection inflates opens.
  4. Work out the sample size. Decide how many people each group needs so that a real difference can be detected. More below.
  5. Split randomly and send at the same time. Do not let one group get a weekday and the other a weekend.
  6. Wait for the planned finish. Resist looking early and stopping when one side leads.
  7. Analyse and decide. If the difference is statistically significant and large enough to matter, roll out the winner. Otherwise treat it as a tie.
  8. Record what you learned. Keep a log of tests, results and the reason. Patterns across tests are where the real insight is.

How big should the test be?

Small tests produce noisy results. If you send each version to 200 people and one gets 11 clicks while the other gets 9, that is not evidence of anything. The size you need depends on your baseline rate and the smallest improvement you care about. The smaller the lift you want to detect, the more people you need. The idea behind it is statistical significance: a measure of how unlikely it is that the difference you see is just chance. Teams commonly accept a 95 percent confidence level, meaning a 5 percent risk of calling a winner that is not real.

from math import sqrt, ceil

def sample_per_group(p_base, p_target, z_alpha=1.96, z_beta=0.84):
    """Approximate people needed per variant (95% confidence, 80% power)."""
    p_bar = (p_base + p_target) / 2
    num = (z_alpha * sqrt(2 * p_bar * (1 - p_bar))
           + z_beta * sqrt(p_base * (1 - p_base) + p_target * (1 - p_target))) ** 2
    return ceil(num / (p_target - p_base) ** 2)

# Example: baseline click rate 3%, hope to reach 3.6%
print(sample_per_group(0.03, 0.036))  # roughly 14,000 per group

That example shows why small lists struggle to test small differences. If your list is a few thousand people, test bigger swings (a different offer, not a different comma), or test across several sends and combine the results.

Do not peek and stop. Checking a live test every hour and stopping the moment one version leads massively raises the chance of a false winner. Fix the end date or sample size in advance and keep to it.

Common A/B testing mistakes

  • Testing too many things. One variable per test.
  • Stopping early. A lead on day one often vanishes by day three.
  • Using open rate as the winner. Pre-loading by mail apps distorts it.
  • Ignoring seasonality. A test during a festival week may not apply in a normal week.
  • Testing trivia. Button colours rarely matter as much as the offer and the timing.
  • Running overlapping tests on the same people. The effects mix.
  • Not recording results. You will repeat old tests.

How to read the results

After a test ends, look at four things. First, the size of the difference: a 0.1 point gain may be real but not worth a change. Second, the confidence that it is not chance. Third, the segments: did the winner win for everyone, or only for new customers? Fourth, the secondary effects, such as unsubscribes, which can rise even when clicks do. If the result is a tie, that is useful too: choose the simpler or cheaper version and move on to a bigger idea.

Beware of running many small tests and celebrating the one that happened to win. If you check twenty variants at a 95 percent confidence level, you should expect about one false winner by luck alone. This is the problem of multiple comparisons. The honest fixes are to decide the primary metric in advance, limit the number of variants and confirm a surprising win by running it again. A sample size calculation before each test keeps you honest about what is possible with your list.

What about multivariate tests?

Multivariate testing changes several elements at once, for example headline, image and button, and measures every combination. It can show how elements interact, but it needs far more traffic than a simple A/B test. For most messaging programmes, a sequence of single-variable tests is more practical.

Test ideas worth your time

Start where the potential gain is largest. In rough order of impact: the offer, the audience (to whom you send), the timing and channel order, the subject line and preview, and last the design details. For an abandoned cart journey, for example, test the first delay (one hour against four) before you test the button colour. See our cart recovery guide for the structure of that sequence.

A/B testing in Flowfox

In campaigns you can create variants of subject, content and send time, choose the split and let the system send the winner to the rest of the audience after the test group has finished. In journeys a split step sends part of the audience down each path, for example WhatsApp first and email first, and a goal measures which converts more. Analytics compares the variants by clicks, conversions and revenue. FoxAI can draft alternative subject lines to test, and the send a campaign guide covers the first send.

1Variable per test
95%Common confidence level
FixedEnd date, set in advance

A/B tests vs holdout groups

A/B testHoldout group
Question answeredWhich version is better?Does the message beat sending nothing?
GroupsTwo or more versions, all receive a messageOne group receives nothing
Best forCopy, offer, timingProving a journey creates sales
CostNo lost messagesSome customers get no message

Use both. A/B tests improve the message. Holdouts prove that the programme is worth running at all.

Most tests do not produce a winner. That is not failure. It is information about what does not matter.

Test with confidence. Split campaigns and journeys, compare by conversion and roll out winners automatically.

Explore campaigns

Testing works best on a base of good data and clear audiences. Read about customer segmentation, email marketing and marketing automation, and see more on the blog.

Frequently asked questions

What is A/B testing?

A/B testing is a controlled experiment that shows two versions of something to similar groups of people at the same time and compares results on a chosen metric to see which performs better.

How long should an A/B test run?

Long enough to reach the planned sample size and cover natural cycles such as a full week. Decide the end date before you start and avoid stopping early because one version leads.

What sample size do I need for an A/B test?

It depends on your baseline rate and the smallest lift you want to detect. For example, detecting a rise from a 3 percent to a 3.6 percent click rate needs roughly 14,000 people per version at 95 percent confidence and 80 percent power.

What should I test in email marketing?

Start with the offer, audience and send time, then subject line and preview text, then design details. Change one variable at a time and measure clicks or conversions rather than opens.

What is statistical significance in A/B testing?

It is a measure of how unlikely a difference between versions is to be due to chance. A common standard is a 95 percent confidence level, meaning a 5 percent risk of a false positive.

Can I A/B test with a small list?

You can, but you can only detect large differences. Test bigger changes such as the offer, repeat the test across several sends, or combine results over time.

What is the difference between A/B testing and multivariate testing?

A/B testing compares versions that differ in one element. Multivariate testing varies several elements at once and needs far more traffic to untangle which combination works.

Topics#ab testing#split testing#experiments#email#optimisation
Was this guide helpful?Your answer helps us improve our guides.

See your own customers in Flowfox this week.

Start a free workspace, connect a data source and send your first journey. Or book a guided demo.