Skip to content

How to run Google Meridian for your store, step by step

Build one weekly table from Shopify, Google Ads and Meta. Install Meridian in a GPU notebook, load the table and set ROI priors. Fit the model, pass its health checks, then run the budget optimizer with your break-even as the target marginal ROI.

By , Founder & CEOUpdated 8 min read

Run the numbers for your store: the free discount and promotion profit calculator.

To run Google Meridian, you usually build one weekly table first. It holds orders and average order value from Shopify, plus cost and impressions from Google Ads and Meta. Then install the library in a GPU notebook, set priors, fit the model and pass its health checks before you optimize a budget.

Keep the plain answer open for what Meridian is and where it misleads. Here is the work, in order: four data pulls, then the model, then the budget.

Step by step

  1. Check whether Google already runs it for you. Meridian-based budgeting in Google Analytics 360 is a limited alpha. It needs Google Ads linked, at least 2 years of imported cost data and 2 years of conversion and revenue data. Path: GA4 > Advertising > Budgeting > Scenarios > Create plan.
  2. Pull weekly orders from Shopify. Orders make a good KPI, because Meridian needs one that adds up across weeks and regions. Average order value then serves as revenue per KPI, or you use revenue itself and skip that column. Path: Shopify admin > Analytics > Reports > Orders > Orders over time > Dimensions menu > week > Export.
  3. Pull Google Ads cost and impressions by week. Segment the campaigns table by week, and download a report if the range is too big. Path: Google Ads > Campaigns > segment icon > Time > Week.
  4. Pull Meta spend and impressions by day. Google's own import guide gives the Meta route: Ads Reporting, a breakdown by day, then export. Sum the days into the same weeks as your Shopify rows. Path: Ads Manager > Ads Reporting > Breakdown by date, by day > Total Spend and Impressions > Export icon.
  5. Add what else moved sales. Promotions and price changes go in as non-media treatments. Holiday flags are optional, since Meridian adjusts for seasonality and trend on its own. Give every source the same week start. Path: Meridian docs > Pre-modeling > Collect and organize your data.
  6. Open a GPU notebook and install Meridian. Google's demo runs in Google Colab, where the free T4 GPU runtime is enough for its sample data. Install the latest google-meridian package and confirm a GPU shows up. Path: Colab > Runtime > Change runtime type > T4 GPU, then the getting started notebook.
  7. Load your table. Build the input from a DataFrame with your KPI, revenue per KPI, spend and media columns, plus population for regions. Media and spend must share the same dimensions. Path: Meridian docs > Use the Meridian library > Load the data.
  8. Replace default priors where you know better. Left alone, each channel starts from LogNormal(0.2, 0.9), which puts half of ROIs above 1.22. Set channel-level ROI priors from past tests, and feed experiments through the CalibrationBuilder, which reads Meridian GeoX results directly. Path: Meridian docs > Priors > Set custom ROI priors using past experiments.
  9. Fit the model. Call sample_prior() and then sample_posterior() to draw from the model. Google's demo says this step may take about 25 minutes on the T4 runtime for its sample data. Path: Meridian docs > Configure and run the model > Run the model.
  10. Pass the health checks first. Meridian runs six checks, from convergence to ROI consistency, and rolls them into a score from 0 to 100. Google treats 90 or more as usable for decisions and 70 or less as a sign of systematic errors. A model that has not converged scores zero. Path: Meridian docs > Post-modeling > Model health checks.
  11. Read the two-page report. The Summarizer writes an HTML summary of ROI, marginal ROI and response curves for the dates you pick. Read ROI for what happened, and marginal ROI for what the next euro would do. Path: Meridian docs > Analyze the model results > Generate model results output.
  12. Optimize against your break-even. The default run keeps the budget fixed and keeps each channel between 70% and 130% of its historical spend. A flexible budget with a target marginal ROI instead finds how far each channel can grow before its next euro stops paying. Google's Scenario Planner turns the same model into a shareable report. Path: Meridian docs > Customize the optimization > Budget optimization scenarios.

A worked example

Start with one store's export. Its Break-even sheet sets the target for the last step: at a 40% margin, 1 divided by 0.40 gives 2.5x.

So run a flexible budget with the target marginal ROI at 2.5. Meridian then grows or trims each channel until its next euro of spend returns about 2.5 in revenue. At that margin, 2.5 in revenue leaves 1 back in margin: the euro pays for itself and nothing more.

For illustration, say the report shows paid search at a marginal ROI of 3.1 and paid social at 1.8. If the margin is 40%, search's next euro returns 1.24 in margin and social's returns 0.72. Search has room to grow, and social is spending past the point where it pays. The optimizer moves both toward 2.5, inside the spend limits you set.

Notice what the target did. Without it, the default fixed budget would only reshuffle today's total within tight limits. With it, the question changes from how to split the money to how much money each channel deserves.

What to check when the model looks wrong

  • The health score reads zero. The chains did not converge, and Google's check wants every parameter's R-hat below 1.2. Try more MCMC iterations first, then look at your priors and at channels that always move together.
  • A channel's posterior looks just like its prior. The data had little to say about it, often because spend was low. Google suggests merging it with a related channel rather than dropping it.
  • Expensive weeks look like busy weeks. That happens when spend stands in for impressions. Google warns that rising costs can then read as more ads, so pull impressions wherever a platform offers them.
  • Last month's code breaks today. Version 2.0 switched the default backend from TensorFlow to JAX and lists breaking changes. Note the version you fitted with and pin it before comparing runs.
  • The optimizer barely moves money. The fixed-budget default keeps each channel between 70% and 130% of its historical spend. Widen the limits, or switch to a flexible budget with a target.

What to do this week

  1. Run Google's demo before your own data. Open the getting started notebook in Google Colab, switch to the free T4 runtime and run every cell. Pass: it produces the two-page HTML summary. Fail: no GPU shows up, so change the runtime type and start again.
  2. Import Meta's cost into GA4. In GA4, go to Admin and, under Data collection and modification, click Data import. Then click Create import source, pick Campaign data and choose Meta. It also tries to pull at least 24 months of Meta history. Pass: Meta cost appears under Reports > Acquisition > Non Google campaign. Fail: nothing shows, so make the source and medium match your Meta ads' UTM tags exactly.
  3. Date your promotions. In GA4, select Reports, then Monetization > Overview, and click View order coupons in the Purchase revenue by Order coupon card. Pass: a dated list of codes that drove purchases, ready to enter as non-media treatments. Fail: no coupon rows, so list promotion dates from your email and discount calendar by hand.

Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework

Sources, 1 October 2026: Meridian-based budgeting (alpha) (Google); About cross-channel budgeting (Google); Order reports (Shopify); Setting and comparing time ranges for your reports (Shopify); Exporting reports (Shopify); Collect and organize your data (Google); Use segments in your tables (Google); Gather campaign data from your advertising platforms to import into Google Analytics (Google); Introduction to Meridian Demo (Google); Install Meridian (Google); Configure the model (Google); Default prior distributions (Google); Calibrate treatment priors (Google); Model health checks (Google); Model health score (Google); Meridian Scenario Planner (Open Beta) (Google); Budget optimization scenarios (Google); Meridian changelog (Google, on GitHub); Connect Meta to Google Analytics (Google); Import campaign data (Google); Order coupons report (Google)

Frequently asked questions

  • Do I need a GPU to run Meridian?
    Google recommends at least one GPU, and its demo asks for a GPU runtime in Google Colab. The free T4 runtime is enough for the demo, where sampling may take about 25 minutes. A CPU-only install exists, but the sampler is compute intensive.
  • Should my Meridian KPI be orders or revenue?
    Either works, as long as it adds up across weeks and regions. Revenue needs no extra column. Orders need average order value as revenue per KPI, so Meridian can still report ROI in money. Pick the one your finance team already trusts.
  • Can I feed my own lift test results into Meridian?
    Yes. Meridian takes experiment results as ROI priors, and its CalibrationBuilder turns incrementality experiments into calibrated priors, with direct support for Meridian GeoX. Google warns the translation adds uncertainty, since experiments and mix models can define ROI differently.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.