A geo experiment is the most accessible incrementality test there is, and you don't need a paid platform to run one. If your outcome data lands in BigQuery, you already have the measurement half.
Here's how to design, run, and measure a geo test yourself, and the parts where the rigor has to come from you, not a tool.
What a geo experiment is
You split the country into regions, run a channel in some (test) and hold it back in others (control), then compare outcomes. Because the split is geographic, it doesn't need any user-level tracking, so it survives every privacy change.
The whole game is building a credible counterfactual: what the test regions would have done if you hadn't changed anything.
Designing the test
- Pick an outcome you can measure by region and week, like revenue or conversions from your GA4 export.
- Choose test and control regions that behaved similarly before the test, not just similar in size.
- Estimate how big a lift you could even detect with your volume, before you spend anything.
- Run long enough to clear noise, usually four to eight weeks, and don't peek and stop early.
Measuring it in BigQuery
The raw measurement is a regional time series you can build from your export. Aggregate the outcome by region and week for the pre-period and the test period.
SELECT
geo.region,
DATE_TRUNC(PARSE_DATE('%Y%m%d', event_date), WEEK) AS wk,
SUM(ecommerce.purchase_revenue) AS revenue
FROM `project.analytics_123.events_*`, UNNEST([geo]) AS geo
WHERE event_name = 'purchase'
GROUP BY region, wk
ORDER BY region, wk
From there, the naive read is test minus control after the change. The honest read compares the test regions to a counterfactual built from the control regions' trend, which is where method matters.
Where the rigor has to come from
Raw diff-in-diff is easy to compute and easy to fool. Seasonality, a promo in one region, or badly matched controls will hand you a lift that isn't real.
This is why Meta's open-source GeoLift exists: it uses synthetic control to build the counterfactual properly and power calculators to pick markets before you spend. You can hand-roll the stats in BigQuery, but borrow the method from a tool built for it.
Where it breaks
- Spillover: test regions that border control regions, or national media that leaks across the line.
- Too few regions, so a single odd market swings the whole result.
- Controls matched on size but not on behavior, so their trend doesn't represent the test.
- Stopping the moment the number looks good, which is how noise becomes a decision.
Reading the result honestly
The number you want is the difference between the test regions and their counterfactual during the test window, expressed as incremental conversions with a confidence interval, not a single point.
Report the interval. A lift of "plus 8 percent, but the range spans zero" is not a win, it's an underpowered test, and pretending otherwise just launders noise into a decision.
When a geo test is the wrong tool
- Tiny budgets or few regions, where you can't reach significance no matter how long you run.
- Channels you can't actually target or withhold by geography.
- Fast, tactical questions inside one channel, where a platform conversion lift study is quicker.
Geo tests shine for big, cross-channel questions like whether a channel is incremental at all, and struggle with small, fast ones.
A geo experiment in BigQuery is the cheapest honest incrementality test you can run, because the outcome data is already there. Just remember the tool isn't the measurement, the design is, so borrow a real method for the counterfactual and let the test run its course.
Want a stronger data analyst role or a raise? Grab the FREE Product Analyst Playbook and get the exact roadmap to your next offer.
