The complete guide to digital marketing testing methods
TL;DR
Difficulty: Intermediate
- Pick the test from the question: A/B for one change, A/B/n with a correction for several, multivariate for interacting elements, a bandit to earn while you learn.
- Only a holdout tells you what your marketing caused rather than what it was credited with. Geographic tests do the same for media you cannot aim at a person.
- Size every test before it starts, read it once at the planned sample size, and name one primary metric in advance.
- Time based tests are a fallback for systems that can show only one version, not a cure for low traffic.
Every marketing test answers one particular question, and the wrong method gives a confident answer to a question you never asked. This guide covers each method, from not testing to geographic lift tests, with the sample size maths and a worked example for every one.
The method follows the question, not the tool
Every campaign, landing page and subject line is a guess about what people will do. A test turns the guess into evidence. The trouble is that "test" covers very different methods, and each answers a different question. Pick the wrong one and you get a confident answer to a question you never asked.
This guide walks through each method, from not testing at all to geographic lift tests: what it is, when it fits, what it needs and where it breaks. Every business and every number in the examples is made up, so the arithmetic can be shown in full. The formulas link to their sections on the Foundations page.
Not testing is sometimes the right call
Not testing is a choice like any other. You launch a change to everyone, with no control group, and watch what happens. There is no comparison and no measure of what the change itself caused.
That is the right call more often than people admit:
- Speed matters more than precision. A sale that runs for a day is over before a test could finish and the winner could be used. Launch your best guess and measure the total.
- The change is mandatory. A legal requirement or a platform policy has to happen whatever it does to conversion. A test would only tell you how much it cost.
- Traffic is too thin. At 50 visitors a month, no method reaches a reliable answer in a useful time. Talking to five customers teaches you more than a test that cannot finish.
- The stakes are tiny. A wording change on an internal tool used by 10 people does not need an experiment.
The risk is not testing by habit rather than by decision, and then crediting the launch when numbers rise. Seasons, competitors and plain chance move numbers too. Without a control group running at the same time, you cannot separate cause from coincidence.
Worked example: a 48 hour sale at a Galway fashion shop
Shop Street Threads (shopstreetthreads.example) is an invented Galway clothing shop that runs a 48 hour sale twice a year. It has three ideas for the announcement email.
- A proper three way test would need several days to read and act on. The sale lasts two.
- So the shop sends the concept that did best in last spring's sale to the whole list.
- It measures total sale revenue against the last sale, and writes down that it cannot prove this was the best of the three.
A sound decision, made knowingly. Just never call the result proof.
An A/B test compares two versions on randomly split traffic
An A/B test compares a control (A) with one change (B). Each visitor is assigned at random and sees only one version. At the end you compare the two rates and ask whether the gap is larger than chance would easily produce.
Random assignment is the whole trick. It makes the two groups alike in everything except the version, so a difference in outcome can be pinned on the version.
The test statistic
The classical test for two conversion rates is the two proportion z test:
Here and are the conversion rates you measured in A and B, and are the numbers of visitors in each, and is the pooled rate, all conversions divided by all visitors. The square root is the standard error of the difference, so counts how many standard errors apart the two rates are. A beyond 1.96 either way gives a two sided p value below 0.05. Foundations: hypothesis tests
Four settings go into the plan before the test starts. The null hypothesis says A and B convert the same. The significance level , usually 0.05, is the false positive rate you accept. Power, usually 80%, is the chance of detecting a real effect of the size you care about. And that size is the minimum detectable effect, the smallest lift worth finding. What a p value does and does not mean is the subject of the importance of statistical significance and error margins.
How many visitors you need
Here is the number of visitors per version, is the current conversion rate, is the rate you want to be able to detect, is 1.96 for a two sided test at 5%, and is 0.84 for 80% power. The smaller the gap , the larger , and because the gap is squared, halving it roughly quadruples the traffic. Foundations: sample size
The minimum detectable effect is usually stated as a relative lift , so the target rate is:
Here is the current rate and is the relative lift as a share, 0.15 for 15%. Foundations: percentages Turned around, the formula tells you what your traffic can detect. With visitors per version, the smallest absolute gap you can reliably find is about:
Here is the minimum detectable effect in absolute terms (a share, so 0.003 is 0.3 percentage points), and the other symbols are as above. It treats both versions as having the rate , which is close enough for planning. Foundations: sample size
A rule that circulates says you need 1,000 conversions per version to detect a 10% relative lift. The formula says more. At a 2.5% rate, detecting 2.5% against 2.75% needs about 64,100 visitors per version, which is about 1,600 conversions. At 5% it is about 1,560 conversions. So plan for roughly 1,500 to 1,600 conversions per version for a 10% lift, and four times that for 5%.
Running it properly
- Split. 50/50 is the fastest. A 90/10 split limits exposure to a risky version but takes far longer to read.
- Duration. At least one full week, so every weekday is in both versions. Then run until the planned , not until the chart looks good.
- One primary metric, named in advance. Choosing the metric after seeing the results turns noise into findings.
- Segments are leads, not results. "It lost overall but won on mobile" is a new hypothesis for a new test.
- Read once. Looking every day and stopping at the first significant day inflates false positives. Evan Miller shows a test meant to run at 5% ending up with a false positive rate of 26.1% from repeated checking.1 A Bayesian test is not immune either: David Robinson's simulations show that its error rates depend on the stopping rule too.2 Whichever school you use, fix the stopping rule before you start. If you genuinely need to look early, use a method built for it, such as the always valid p values Ramesh Johari and colleagues describe, which statisticians call sequential testing.3
Worked example: a pricing page at a Kilkenny software company
Castlecomer Rota (castlecomerrota.example) is an invented Kilkenny company selling staff scheduling software. Its pricing page turns 2.1% of visitors into demo requests. It wants to know whether a row of customer logos lifts that by at least 15%.
- Target rate: .
- Sample size: per version. Here .
- The page gets 8,000 visitors a week, so two versions of about 35,000 each need weeks. The plan says nine weeks.
- After nine weeks: A has 756 demo requests from 36,010 visitors (2.10%), B has 866 from 36,070 (2.40%).
- Pooled rate: . Standard error: .
- , a two sided p value of about 0.006.
The logos stay. The original version of this example planned only 25,000 visitors per version, which the formula does not support. Stopping at that point is how underpowered "winners" are made.
Worked example: product photos at a Limerick outdoor shop
Ballyhoura Trail Supply (ballyhouratrail.example) is an invented Limerick outdoor shop. It tests an action photo of its walking boots against the studio photo. Add to basket runs at 8.2%, and it wants to detect a 10% relative change.
- Target: . The formula gives about 18,300 visitors per version.
- The boots category gets 50,000 visitors a week, so the numbers are there inside a week. The shop runs two weeks anyway, to cover two full weekly cycles.
- Result: studio photo 4,085 from 49,823 (8.20%), action photo 4,559 from 50,102 (9.10%).
- Relative lift: . , p below 0.0001.
Action photos roll out to the rest of the range.
from math import sqrt, erf
def z_test(conv_a, n_a, conv_b, n_b):
pa, pb = conv_a / n_a, conv_b / n_b
p = (conv_a + conv_b) / (n_a + n_b)
z = (pb - pa) / sqrt(p * (1 - p) * (1 / n_a + 1 / n_b))
p_value = 2 * (1 - 0.5 * (1 + erf(abs(z) / sqrt(2))))
return round(z, 2), round(p_value, 4)
def sample_size(p1, p2, za=1.96, zb=0.84):
return (za + zb) ** 2 * (p1 * (1 - p1) + p2 * (1 - p2)) / (p1 - p2) ** 2
print(z_test(756, 36010, 866, 36070)) # (2.73, 0.0064)
print(round(sample_size(0.021, 0.02415))) # 34865
A word on tools. Many teams ran their tests in Google Optimize. Google switched off Optimize and Optimize 360 on 30 September 2023, and any experiment still running ended on that date.4 If an old process document still points there, it needs a new home.
Three or more versions need a stricter bar
An A/B/n test splits traffic across three or more versions at once. It is useful when you have several real ideas and want to compare them in one go.
The catch is the number of comparisons. Each one carries its own 5% chance of a false positive, and the chances add up. Across independent comparisons, the chance of at least one false positive is:
Here is the significance level of each comparison and is the number of comparisons. It assumes the comparisons are independent, which comparisons against a shared control only roughly are. Foundations: probability
With three comparisons that is , and with five it is 23%. The simplest repair is the Bonferroni method:5
Here is the overall false positive rate you want, is the number of comparisons and is the bar each single comparison must clear. Foundations: hypothesis tests
Bonferroni is blunt and costs power. The Holm method applies the same idea step by step, from the smallest p value up, and rejects at least as often while keeping the same guarantee.6 Controlling the false discovery rate, the expected share of false positives among your "winners", is looser again and suits exploratory work with many versions.7
A/B/n tests suit several genuine hypotheses and enough traffic: four versions need roughly twice the traffic of an A/B test, since each version needs its own . They do not suit thin traffic, and they do not help when each version changes the headline, the button and the layout at once. Then you cannot say which change did the work. That is a job for a multivariate test.
Worked example: subject lines at a Galway travel company
Eyre Square Getaways (eyresquaregetaways.example) is an invented Galway travel company with a weekly deals email to 400,000 subscribers. It tests four subject lines on a 40,000 slice, 10,000 each, then sends the winner to the rest.
- A (control): "This week's travel deals"
- B: "Flights from €29, this week only"
- C: "Your next trip just cost less"
- D: "48 hours left: member prices"
The metric is the click rate, not the open rate. Since 2021, Apple's Mail Privacy Protection stops senders from using invisible pixels to know when a message is opened,8 so open rates no longer measure what they claim to.
- Three comparisons against the control, so Bonferroni sets the bar at . (The original version of this example used 0.0125, which would be the bar for four comparisons.)
- After four hours: A 2.0%, B 2.6%, C 2.2%, D 2.9%.
- B against A: , , below the bar. D against A: , , below the bar. C against A: , , not significant.
- D goes to the remaining 360,000.
Worked example: landing pages for a Cork budgeting app
Penrose Money (penrosemoney.example) is an invented Cork budgeting app with three landing pages: A lists the features, B leads with the outcome, C leads with reviews. Paid traffic is split evenly, 15,000 visitors each, over three weeks.
- Two comparisons against A, so the bar is .
- Sign up rates: A 3.2%, B 4.1%, C 3.8%.
- B against A: , . C against A: , . Both clear the bar.
- B against C: , . The data cannot tell them apart.
The original version of this example called C "not significant". With these numbers it is. The honest reading is that leading with outcomes or with reviews both beat a feature list, and the next test is B against a version that combines the two.
Bandits earn while they learn
An A/B test holds its split to the end, so a share of visitors keeps seeing the weaker version until you stop. A multi armed bandit moves traffic towards the better version as the evidence builds. The standard algorithm is Thompson sampling: each version keeps a probability distribution for its rate, every visitor sees the version whose random draw comes out highest, and uncertain versions still win some draws while clearly worse ones soon stop.9 The formula and code are in the maths behind growth marketing.
Worked example: the cost of an even split
In the simulation in that article, three page versions convert at 3%, 5% and 4%, unknown to the algorithm, over 10,000 visitors.
- An even split earns conversions.
- Thompson sampling averaged 470 across 300 runs, 70 more, by sending about 7,700 visitors to the best version.
The price is precision about the losers. Use a bandit when earning during the test matters more than measuring every version, a short promotion, say. Use a test when you need the clean number.
Multivariate tests find the best combination, at a steep traffic price
A multivariate test changes several elements at once and shows each visitor one combination. Two headlines, two images and two buttons give combinations. The point is to find not only the best element of each kind but also interactions, where the best headline depends on the image next to it.
A full factorial design runs every combination and measures every main effect and interaction. A fractional factorial design runs a chosen subset, which estimates the main effects with less traffic but mixes up some interactions with each other, a trade the NIST handbook calls confounding.10
If an A/B test needs 20,000 visitors per version, comparing every cell of a multivariate test needs:
Along the bottom are four designs, with the number of combinations in brackets. Up the side is the total traffic needed if each combination gets 20,000 visitors. The takeaway is the shape: the bill grows with the number of combinations, not the number of elements, and it grows fast. That figure is for comparing every combination with every other. If you only need the main effects, a factorial design lets every visitor count towards every element at once, which needs far less.
So multivariate tests suit pages with hundreds of thousands of visitors a month and elements that may interact. With modest traffic, or no reason to expect interactions, run one A/B test after another.
Worked example: a category page at a Waterford electronics shop
Viking Triangle Devices (vikingtriangledevices.example) is an invented Waterford electronics shop. It tests its laptop category page on two headlines ("Find your laptop" against "Laptops for every budget"), two layouts (grid against list) and two filter positions (filters beside the products against filters above them).
- combinations.
- The page gets 1.2 million visitors a month, so a four week test gives each combination about visitors.
- The result shows an interaction: the grid does best with filters beside it, the list does best with filters above it.
- Testing layout and filters in two separate A/B tests would have found each "winner" against the other's default, and could have missed the pairing that works.
Worked example: a homepage at a Kilkenny software company
Callan Board (callanboard.example) is an invented Kilkenny project management tool. It tests three headlines, two hero images (product screenshot against illustration) and two button labels ("Start free trial" against "See it in action").
- combinations.
- With 800,000 visitors a month, six weeks gives about per combination.
- The screenshot wins, but only with "See it in action". With "Start free trial" the illustration does better. That interaction shapes the next round of creative work.
Holdout tests measure what would have happened anyway
A holdout test does not compare two experiences. It compares some treatment with none. A random share of the audience, often 5% to 20%, is kept out of a campaign, a feature or a retargeting list. Comparing them with everyone else measures the incremental lift: what the activity caused, rather than what it was credited with.
Most marketing measurement flatters itself. People who see retargeting ads already visited the site. Credit every purchase they make to the ads and you count sales that would have happened anyway.
Two numbers come out of a holdout:
Here is the conversion rate in the treated group and the rate in the holdout (control). The absolute lift is in percentage points, the relative lift is a share of the holdout's rate. Foundations: percentages
The share of the treated group's conversions that the activity actually caused is , a different number again. Confusing the two is the commonest mistake in reading a holdout.
Holdouts suit retargeting, email and CRM programmes, campaigns that run all the time, and any budget a finance director wants proved. Three practical points: a bigger holdout gives more precision but forgoes more revenue, so 10% is a common compromise. Holdouts usually run longer than A/B tests, because they measure behaviour over weeks. And the holdout must really be held out: if those people get the same message through another channel, the measurement is spoiled.
The ad platforms build this in. Google's Conversion Lift splits people (or regions) into a group that sees the ads and one that does not, and reports incremental conversions, incremental cost per action and incremental return on ad spend. Google notes it is not available for every account, and you ask your Google representative to use it.11 A platform measuring its own ads deserves the same scrutiny as any other report: check how the groups were split and what counts as a conversion before you trust the number.
Worked example: retargeting at a Kilkenny furniture shop
Thomastown Oak (thomastownoak.example) is an invented Kilkenny furniture shop spending €50,000 a month on retargeting. The question from the top is simple: would these people have bought anyway?
- It holds out 10% of the 200,000 retargeting eligible visitors a month for eight weeks. 180,000 a month see the ads, 20,000 do not.
- Retargeted: 3.2% buy, at €180 on average, so €5.76 per visitor. Holdout: 2.1% buy, at €175, so €3.675 per visitor.
- Incremental revenue per visitor: .
- Per month: of revenue the ads caused.
Incremental return on ad spend is that revenue over the spend:
Here is the incremental revenue, the revenue the treated group earned above what the holdout's rate predicts, and is the ad spend in the same period. Foundations: ratios and rates
- .
- Had every purchase by a retargeted visitor been credited to the ads, the figure would be . The holdout shows almost two thirds of that was going to happen anyway.
Retargeting still pays here, but at 7.5 in revenue, before margin, not 20.7. (The original version of this example multiplied by all 200,000 visitors, including the holdout who never saw an ad.)
Worked example: trial emails at a Galway software company
Oranmore Ledger (oranmoreledger.example) is an invented Galway bookkeeping app with a 12 email sequence for trial users. It holds out 15% of 4,000 new trial users for 60 days.
- Emails: 3,400 users, 286 pay (8.4%). Holdout: 600 users, 31 pay (5.2%).
- Absolute lift: points. , .
- Relative lift: .
- Share of the email group's conversions the emails caused: , about 109 of the 286.
The original version of this example said 62% of the attributed conversions were incremental. That mixes up the relative lift with the incremental share. The sequence works, and 38% is the number to put in front of the finance director.
Geographic tests work when you cannot randomise people
A geographic test randomises places instead of people. One set of towns or regions gets treatment A, a matched set gets B or nothing. Google has written up how it uses these geo experiments to measure search ads, with non overlapping regions randomly assigned to control and treatment.12
They suit media that cannot be aimed at individuals (radio, posters, leaflets, TV), prices or ranges that differ by region, and cases where people talk to each other, so a person level test would leak.
Places differ in ways that have nothing to do with the test, so a geographic test needs care:
- Matched pairs. Pair towns with similar history, size and make up, then randomly treat one of each pair.
- Difference in differences. Compare the change in each group, before against during, not the levels.
- Synthetic control. Build a weighted blend of untreated areas that tracked the treated area before the test, and compare the treated area with that blend during it. Alberto Abadie's review sets out when it works and when it does not.13 Meta's open source GeoLift package does this for ad campaigns.14
The difference in differences is:
Here is the outcome in the treated areas and in the control areas, each measured before and during the test. Subtracting the control's change removes what would have happened anyway, such as a good summer for everyone. Foundations: indexing and base rates
Worked example: local radio for a garden centre chain
Knockmealdown Garden Centres (knockmealdowngardens.example) is an invented chain with stores in market towns across Munster and Connacht, from Co. Waterford to Co. Galway. It wants to know what advertising on the local radio station in each town's county does for sales.
- It forms 20 pairs of similar store towns, the two towns of each pair served by different local stations, matched on sales per head, local population, nearby competitors and past growth.
- In each pair, a coin decides which town gets 12 weeks of radio.
- Sales against the same weeks last year: radio towns up 14.2%, the others up 6.8%.
- percentage points of growth the radio caused.
Add the margin on those sales and the chain knows whether radio pays.
Worked example: a flat delivery fee
An invented takeaway delivery app, active in 10 Irish cities and large towns, wants to compare a flat €2.99 fee with its current fee of €1.99 to €4.99 by distance. A person level test would have neighbours paying different fees for the same restaurant, so it tests by town.
- Five towns switch to the flat fee, five matched towns keep the old one, for eight weeks.
- Flat fee towns: orders per customer up 8.2%, average order value down 3.1%. Revenue per customer: , up 4.8%.
- Comparison towns: orders up 1.4%, order value up 0.8%. , up 2.2%.
- The difference: about 2.6 points in favour of the flat fee, before fee income.
With five towns a side, the noise between towns can be as large as that gap. Before rolling it out, the app checks how much these towns' growth normally varies against each other, and adds the change in fee income.
Audience splits test different approaches for different segments
An audience split runs a separate test inside each segment, because segments may respond differently. Discounts may win with bargain hunters while a premium message wins with loyal customers.
Segments can be fixed in advance (new against returning, industry), found by a model, or taken from context such as device.
The risk is a loop that confirms itself. Label someone "price sensitive", show them only discounts, and you never learn that the premium message would have worked too. From time to time, show each segment the other segment's winner.
Worked example: new and returning visitors at a Galway fashion shop
Shop Street Threads tests three homepage banners for new visitors (brand story, new arrivals, 15% off a first order) and three for returning visitors (recommendations, arrivals since the last visit, the loyalty scheme). Each test is planned and read on its own, with its own . New visitors respond best to the discount, returning visitors to the recommendations, so the homepage now differs by group.
Worked example: industry pages at a Limerick software company
An invented Limerick marketing software company tests industry pages against its general page for healthcare, financial services and retail prospects. The industry pages win in all three, by 40% to 62%, with healthcare at the top, where regulation weighs most on buyers. (The original version said "40% to 60%" and then quoted 62% for healthcare.) Three segments means three comparisons, so each is read at the Bonferroni bar of 0.0167.
Time based tests swap versions over time
A time based test shows version A for a period, then version B, and compares the periods. The original version of this article called it a sequential test, but statisticians use that name for the methods that let you look at a running test safely, so I call this one time based.
It avoids splitting traffic but makes time a rival explanation. If B's week does better, was it B, or did a competitor run out of stock that week?
The question is when it is worth that price. Low traffic alone is not a reason: splitting each day's visitors 50/50 gives the same sample with no time confound. The real reason is a technical one, a system that cannot show two versions at once. Then protect yourself:
- Alternate several times. A, B, A, B, not A then B, so one odd week cannot carry the result.
- Adjust for known changes. Ad spend, traffic sources, promotions.
- Compare with something untouched. If a metric the change cannot affect moved too, adjust for it.
- Know your normal. A long baseline shows how much the metric moves week to week on its own.
Worked example: onboarding at a Cork productivity app
Cobh Tasks (cobhtasks.example) is an invented Cork app whose onboarding is built into the app release, so the old and new flows cannot run side by side. It gets about 50 new users a day.
- Weeks one and three run the old flow, weeks two and four the new one. Each gets about 700 new users.
- Old flow: 238 activate (34%). New flow: 287 activate (41%).
- , , with the caveat that the weeks were not randomly assigned.
- The new flow won in both of its weeks, and nothing else changed in spend or sources. The team ships it.
The original article used a 5,000 person email list as its example here. Splitting each send in half gives the same sample with no time confound, so for email that is the better design.
Choosing the method
Read it from the top: whether a test is worth it, whether people can be randomised (if not, places or time are your units), whether you want incrementality (only a holdout answers that), then versions, segments and bandits. Every route ends the same way: the plan is written before the data arrives.
Before any of it, run the sample size formula. If the traffic cannot reach the for the effect you care about, accept a larger minimum detectable effect, test something bolder, or ask customers instead.
The mistakes that undo good tests
- Stopping early. The first significant day is not the result. Fix or use a method built for looking.
- Fishing. Running many tests or slicing one ten ways and reporting the significant ones turns noise into findings. Name the primary metric and the analysis in advance.
- Significant but small. A 0.1% lift can be real and still not worth building. Put the effect next to its cost.
- Overlapping tests. Two tests on the same page and the same people can interfere. Someone has to keep a list of what is running where.
Testing is a discipline, not a feature
Testing is not a switch in a tool. It is a set of habits: pick the method from the question, size it before it starts, read it once, and believe the answer even when it disappoints.
The costly mistake is rarely the wrong method. It is not testing, or testing badly and trusting the result.
I have implemented testing programmes across eCommerce, SaaS and B2B businesses. The statistics matter, but so does the habit of running tests properly and acting on the results honestly. Start with an A/B test on your busiest page, get the discipline right, and widen the methods as the questions grow.
Footnotes
-
Evan Miller, How Not To Run an A/B Test, evanmiller.org, 2010, https://www.evanmiller.org/how-not-to-run-an-ab-test.html
-
David Robinson, Is Bayesian A/B Testing Immune to Peeking? Not Exactly, Variance Explained, 2015, http://varianceexplained.org/r/bayesian-ab-testing/
-
Ramesh Johari, Leo Pekelis and David J. Walsh, Always valid inference: bringing sequential analysis to A/B testing, arXiv 1512.04922, 2015 (revised 2019), https://arxiv.org/abs/1512.04922
-
Google, [Sunset September 2023] Google Optimize, Analytics Help, https://support.google.com/optimize/answer/12979939
-
NIST/SEMATECH, e Handbook of Statistical Methods, section 7.4.7.3 Bonferroni's method, National Institute of Standards and Technology, 2012, https://www.itl.nist.gov/div898/handbook/prc/section4/prc473.htm
-
Wikipedia, Holm Bonferroni method (Sture Holm, Scandinavian Journal of Statistics, 1979), https://en.wikipedia.org/wiki/Holm%E2%80%93Bonferroni_method
-
Wikipedia, False discovery rate (Yoav Benjamini and Yosef Hochberg, Journal of the Royal Statistical Society Series B, 1995), https://en.wikipedia.org/wiki/False_discovery_rate
-
Apple, Apple advances its privacy leadership with iOS 15, iPadOS 15, macOS Monterey, and watchOS 8 (Mail Privacy Protection), Apple Newsroom, 7 June 2021, https://www.apple.com/newsroom/2021/06/apple-advances-its-privacy-leadership-with-ios-15-ipados-15-macos-monterey-and-watchos-8/
-
Daniel Russo, Benjamin Van Roy, Abbas Kazerouni, Ian Osband and Zheng Wen, A Tutorial on Thompson Sampling, Foundations and Trends in Machine Learning 11(1), 2018, https://arxiv.org/abs/1707.02038
-
NIST/SEMATECH, e Handbook of Statistical Methods, section 5.3.3.4 Fractional factorial designs, National Institute of Standards and Technology, 2012, https://www.itl.nist.gov/div898/handbook/pri/section3/pri334.htm
-
Google, About Conversion Lift, Google Ads Help, https://support.google.com/google-ads/answer/12003020
-
Jon Vaver and Jim Koehler, Measuring Ad Effectiveness Using Geo Experiments, Google, 2011, https://research.google/pubs/measuring-ad-effectiveness-using-geo-experiments/
-
Alberto Abadie, Using Synthetic Controls: Feasibility, Data Requirements, and Methodological Aspects, Journal of Economic Literature 59(2), pages 391 to 425, 2021, https://www.aeaweb.org/articles?id=10.1257/jel.20191450
-
Meta Open Source, GeoLift: an end to end geo experimental methodology based on synthetic control methods, GitHub, https://github.com/facebookincubator/GeoLift