The data used in Meridian GeoX are daily time series of spend and response, such
as conversion counts or revenue, for each geo respectively.

In the following graphs, the x-axis corresponds to the dates, and the y-axis
represents the metric value, which is response and spend. Each line corresponds
to one geo. The vertical dotted lines represent the split between pretest and
test periods, and the intervention on ads happens in the test period.

![An example showing a visual representation of Meridian GeoX response and spend data using graphs](https://developers.google.com/static/meridian/images/meridian-geox-response-spend-data.png)

## General data requirements

Refer to the following sections for information on the data requirements for
your geo experiments.

### Spend data

For experiments involving go-dark or heavy-up designs---including treatment cells
within multi-cell studies assigned to these types---the provision of spend time
series data is mandatory. For holdback experiments, or holdback cells in
multi-cell studies, spend is not required.

### Conversion metric

Identifying an appropriate conversion metric is a fundamental requirement for
the effective configuration and evaluation of geo experiments. A suitable metric
should adhere to specific commercial and methodological standards:

- **Business criteria**: Your selected conversion definition should closely align with the primary KPI that informs strategic actions. This metric should reflect the specific influence of the media channel being evaluated. For example, prioritizing upper-funnel indicators when testing brand awareness tactics.
- **Technical criteria**: Conversion data must be accessible at the geographic level utilized for the experiment. It's advisable to exclude metrics with significant sparsity or large proportion of null entries, as these can complicate the statistical modeling process.
- **Metric type and attribution**: The conversion metric must be absolute, such as revenue or conversion count. Ratio metrics such as ROAS aren't supported by GeoX. Additionally, you should use raw, unfiltered conversion time series instead of attributed conversions. This prevents the results from being skewed by predefined attribution logic, which can misrepresent the actual causal incrementality.

### Geo-level data

You should create a pretest geo-level time series data before designing a geo
experiment. At this step, you'll provide a minimum of 3\*N days worth of
response data, such as revenue or conversion counts, where N is equals to the
duration of the actual test period of your experiment. If your business
experiences strong seasonality or cyclical patterns, you should prepare a longer
historical period---such as one year or more---to train the model effectively and
avoid introducing bias in the counterfactual estimation.

For experiment types that involve existing campaigns, such as go-dark or
heavy-up, it's necessary to prepare daily geo-level spend series data as well,
since they'll be used to calculate the required experiment budget with your
existing campaign stats. This spend data can usually be retrieved from the
Google Ads account or from publisher APIs.

### Data structure

Your pretest dataset must be a Pandas DataFrame, and should contain the
following columns:

- **date**
- **location**: Different market areas.
- **conversions**: Recent conversion data is usually raw unfiltered conversions or revenue data typically from the advertiser's CRM. The conversion data should reflect a business-as-usual (BAU) situation.
- **spend**: Spend data for campaigns included in the study. This is an optional column.

For multi-cell studies, you should provide separate spend columns mapped to each
cell's specific intervention. Use cases include:

- **Testing different strategies on the same channel or campaign**: Compare different strategies---such as pausing ads completely versus heavily increasing spend---within the exact same platform, like YouTube. Because both cells modify the same underlying campaign pool, the spend cells such as spend_cell_1 and spend_cell_2 will have identical values.
- **Testing different channels or tactics**: Compare entirely separate approaches, such as YouTube ads versus Demand Gen ads, or prospecting versus retargeting. Since each cell is linked to a distinct campaign, the spend values will be different. Cell 1 should reflect the spend for the first tactic, while cell 2 should reflect the spend for the second.

> [!NOTE]
> **Note:** For automated or large-scale data pulls, you can [pull the cost and spend
> data through Google Ads API](https://developers.google.com/google-ads/api/docs/experiments/pull-geo-data). You can also use [MMM Data Platform](https://developers.google.com/meridian#use-mmm-data-platform-to-gather-google-data) to leverage cost data by DMA in the US for Google Media as a design input. To request data for Meridian GeoX using MMM Data Platform, see [How to request
> data](https://developers.google.com/mmm-data-platform/guides-v1/report-types/meridian-geox/how-to-request-data). To grant or request access to MMM Data Platform, [follow these
> instructions](https://developers.google.com/mmm-data-platform/guides-v1/report-types/meridian-geox/overview).

Responses such as columns transactions or revenue data, plus spend data, should
be prepared in the following format. Within the range of the pre-test period,
each pair of date and location would appear exactly once in this table.

Here's an example of data upload for designing a single-cell go-dark experiment:

| date | location | conversions | spend |
|---|---|---|---|
| 2026-01-01 | LOC1 | 1104.88 | 142.55 |
| 2026-01-01 | LOC2 | 242.24 | 210.18 |
| 2026-01-01 | LOC3 | 339.95 | 325.25 |
| 2026-01-01 | LOC4 | 60.99 | 95.62 |
| 2026-01-01 | LOC5 | 173.20 | 178.62 |
| ... | ... | ... | ... |

Here's an example of data upload for designing a two-cell experiment. The first
treatment cell should be go-dark, while the second treatment cell should be
heavy-up during the experiment period:

| date | location | conversions | spend_cell_1 | spend_cell_2 |
|---|---|---|---|---|
| 2026-05-01 | Region_A | 45 | 120 | 150 |
| 2026-05-01 | Region_B | 30 | 80 | 100 |
| 2026-05-02 | Region_A | 50 | 125 | 155 |
| 2026-05-02 | Region_B | 35 | 85 | 105 |
| 2026-05-03 | Region_A | 48 | 122 | 152 |

## Best practices

Follow these best practices to ensure your geo experiment is statistically
robust.

### Metrics with negative values

Don't use metrics that can contain negative values, such as net revenue after
refunds. Negative values disrupt the design randomization and statistical
modeling.

You should always use non-negative, absolute values like gross revenue or gross
conversion counts. If refunds are significant, run the design and analysis on
gross sales, and apply a historical net-to-gross ratio post-test.

### Daily data volatilty

Don't aggregate your data weekly. GeoX strictly requires daily time-series
and weekly data isn't supported. If your daily data is highly volatile:

- Extend the test duration---such as changing from four weeks to six or eight weeks---to accumulate more data.
- Use a shallower KPI such as add-to-cart instead of purchase to increase volume and reduce zero-count days.
- Increase the target treatment group size or adjusting `max_conversions_percent` in design constraints.

### KPI optimization

The library supports only one primary conversion KPI per run. You can't optimize
a design for multiple metrics simultaneously, such as new buyers and returning
buyers.

Run the design engine and optimize your primary KPI to ensure the study is
sufficiently powered. You may proceed cautiously to analyze secondary KPIs
post-test by running the `analyze` function on their respective data.

> [!NOTE]
> **Note:** Power for the secondary metrics is not guaranteed.