How to check if MMM is worth it for your brand, step by step
Count your weeks of sales in Shopify, check each channel's spend moved in Google Ads and Meta, count inputs against rows, and price the decision. If your brand fails a step, run a holdout or a lift test on one channel first.
By Joris van Huët, Founder & CEOUpdated 7 min read
To check if MMM is worth it, count your weeks of sales, check that each channel's spend moved, and count your inputs against your rows. Then price the decision: a better split must be worth more than the work. If your brand fails a step, usually start with a holdout test on one channel instead.
This is the scorecard behind Is MMM worth it for a small brand?. Each step ends with a pass mark, so you can stop at the first fail and save yourself the weeks.
Step by step
- Count your weeks of sales. In your Shopify admin, go to Analytics > Reports, filter the Category to Sales and open Total sales over time. Pick week in the Group by drop-down and count the rows. Pass mark: two years of weeks, the minimum Robyn's guide sets for weekly data.
- List each paid channel's weekly cost. In Google Ads, go to the Campaigns table, select the segment icon, then Time and Week. In Meta Ads Manager, select your campaigns, click the Breakdown icon, then By time, and pick weeks. Pass mark: a cost for every channel in every week.
- Drop channels too small to read. Ask of each one what Robyn's guide asks: could it move total sales enough for a model to see? If not, leave it out or merge it with a similar channel, as Meridian's docs suggest when data runs short. Pass mark: every channel left could move weekly sales on its own.
- Count inputs against rows. Add up the channels you kept, plus one column for each promotion, price change and holiday you track. Robyn's guide recommends 1 independent variable to 10 observations. Pass mark: your inputs times ten come to no more than your weeks.
- Check that each channel's spend moved. In the weekly costs from step 2, mark weeks well above or below the usual level. Mark the weeks it paused, too. Meridian's docs say insufficient variation in media spend hurts national models. Pass mark: every kept channel has several marked weeks.
- Check your channels did not move in lockstep. If Google Ads and Meta always rose together, a regression cannot tell which one moved sales. Robyn's guide calls this multicollinearity and warns the model can struggle to calculate each input's impact. Pass mark: some weeks where one channel rose and the other did not.
- Price the decision. Add up last year's spend on the channels you kept, and ask what a modestly better split would be worth. Set that against the work: Robyn's guide says to allocate at least 4 weeks for data collection alone. Pass mark: the likely gain clearly beats the hours.
- See which lift tests you qualify for. In Google Ads, go to Lift measurement within the Goals menu and select the plus button. User-based Conversion Lift needs at least 1,000 observed conversions and a minimum campaign budget of $5,000 USD. Pass mark: you qualify, so one study can later calibrate a model.
- If you do not qualify, plan your own holdout. In Google Ads, go to Campaigns, select Settings and expand the Locations section. Search for a region, click Exclude, then Save. Pass mark: you can name a similar region that keeps the ads, to compare sales against.
- Score it. Pass every step and a model is worth building. Fail steps 1, 4, 5 or 6 and you need more history or fewer inputs, so test while you collect. Fail step 7 and the answer is no for now, whatever the data says.
A worked example
Start with one store's export: Store A, 1 January 2024 to 21 August 2026, about 137 weeks. Step 1 passes on length alone. Step 2 fails at once, because the Channels sheet holds shares of revenue, not cost. No amount of history makes up for a missing spend column.
The Channels sheet still shows what a model could add. Paid Social holds 0.0% of revenue on the Channels sheet, in last click, first click and touched alike. If social ads ran in those weeks, the path report gave them nothing. Only their weekly cost, run through a model or a test, could say what they did.
Now a made-up brand, for illustration. Say the brand spends €6,000 a month: €4,000 on Meta and €2,000 on Google Ads, both flat all year. Say the brand has two years of weekly sales: 104 rows.
Steps 1 and 3 pass. If the brand models two channels, a promotion flag and a holiday flag, that is four inputs. If the ratio is 1 to 10, four inputs want 40 rows. Step 4 passes easily.
Step 5 fails, because neither channel's spend ever moved. Step 7 looks thin as well. If the split improved by a tenth, it would move €600 a month, against weeks of data work.
Verdict: not yet. Pause Meta in one region for a few weeks, as in step 9, and keep logging weekly cost. Revisit the scorecard in a year, when the history includes the test.
What should you check when the scorecard looks wrong?
- You only have monthly numbers. Robyn's guide says monthly data needs more than two years, such as four to five, for enough data points.
- Lift measurement is missing from Goals. Conversion Lift is not available for all Google Ads accounts. Google's help sends you to your Google account representative.
- A channel ran in only a few bursts. That is variation without volume. Robyn's guide wants both before an input earns a place in the model.
- Sales spike in weeks when no channel changed. A promotion, launch or holiday is missing from your log. Each one needs its own column, which costs rows in step 4.
- The money test passes only on next year's budget. Score the spend you actually had. A model learns from history, not from the plan.
- Your history spans a tracking change. A mix model reads Shopify's sales, not GA4's labels, so a tracking change hurts it less than attribution. A change in prices or range still needs its own column.
- A channel passes every step but costs almost nothing. Recheck step 3. A model can only find an effect large enough to show in weekly sales.
What to do this week
- Fill in steps 1 and 2. Count your weekly rows in Shopify's Total sales over time report. Then pull weekly cost per channel from Google Ads and Meta Ads Manager. Pass: two years of weeks, with a cost for every channel and week. Fail: gaps or a short history, so jump to the holdout.
- Exclude one region for four weeks. In one Google Ads campaign, add the region under Settings, Locations, and save. Pass: after four weeks you can compare that region's sales with a similar region's. Fail: regional sales are too thin to compare, so run it on a bigger channel or for longer.
- Start a weekly log of what else moved sales. Write down every promotion, price change, launch and stockout with its week. Pass: you can date last year's promotions from the log. Fail: you cannot, so start now, because a future model needs them.
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: Sales reports (Shopify); Use segments in your tables (Google); Navigate to breakdowns in Meta Ads Manager to understand ad performance (Meta); About breakdowns, metrics and filtering in Meta Ads Reporting (Meta); An Analyst's Guide to MMM (Meta); Amount of data needed (Google); Set up Conversion Lift based on users (Google); Set up Conversion Lift based on geography (Google); Exclude ads from geographic locations (Google)
Related answers
Frequently asked questions
What if my Google Ads account cannot run Conversion Lift?
Run your own holdout. Exclude one region in a campaign's location settings for a few weeks, and compare its sales with a similar region that kept the ads. It is rougher than a platform study, and it costs only the sales you forgo in that region.How do I know if a channel's spend varied enough?
Look at its weekly cost. If it ran at one level for months, the model has little contrast to learn from, which Meridian's docs say hurts national models. Pausing it in some weeks or regions creates the variation a model, or a test, needs.Should I model monthly data instead of weekly?
Only with a longer history. Robyn's guide says that with monthly data you should collect more than two years, such as four to five, to get enough data points. Weekly data reaches the same count in less calendar time.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Holdout TestA holdout test is an experiment where a portion of the audience does not see a campaign. This measures the campaign's true incremental impact.
- IncrementalityIncrementality measures the true causal impact of a marketing campaign. It quantifies the additional conversions or revenue directly from that activity.
- Incrementality TestingIncrementality Testing measures the additional impact of a marketing campaign. It compares exposed and control groups to determine causal effect.
- Lift MeasurementLift Measurement: A method to determine the incremental impact of a marketing campaign by comparing exposed and control groups.