Google rolled out Scenario Planner and Projections inside GA4, and the reaction split predictably down the middle. Half the analysts I talk to are already pasting forecast screenshots into client decks like they’re gospel. The other half dismissed it after one look because the confidence bands looked too wide. Both groups are about to lose their clients money.
The truth sits in the middle, and it requires actually understanding what GA4 is doing under the hood, where the model breaks, and how to validate its outputs against your BigQuery export before you bet a media budget on it. This is the guide I wish existed when I started stress-testing the feature against real client data.
Where Scenario Planner Lives and What It Actually Wants From You
Scenario Planner sits inside the Advertising workspace in GA4, under Advertising → Planning → Scenario planner. If you don’t see it, you’re either in a property without a Google Ads link, or your property has too little conversion data for the model to bother. The minimum bar I’ve observed is around 1,000 key events over the lookback window. Below that, the UI loads but the projections come back with confidence intervals so wide they’re meaningless.
The four inputs the planner needs:
- Conversion goal — one or more key events. Pick the event closest to revenue. For Shopify, that’s
purchase. For lead gen,generate_leador whatever you’ve marked as a key event. - Time horizon — 7 to 90 days. The model degrades hard past 60 days.
- Channel mix and budget split — you allocate spend across the Google-paid channels (Search, Display, YouTube, Demand Gen, PMax) and the model projects conversions for each.
- Baseline window — the historical period used to train the projection. Default is the last 90 days, but you can change it. Always change it if you had a promo, a tracking outage, or a seasonality spike in that window.
The output is a forecast curve with a 90% confidence band, plus an aggregate projected conversion count and CPA per channel. That’s it. No causal claims, no incrementality measurement, no cross-device adjustment beyond what GA4 already does in its identity space.
How the Projection Model Actually Works
Google hasn’t published the full model architecture, but based on the API behaviour, the marginal CPA curves, and how the bands respond to historical variance, here’s what’s happening:
The model takes your data-driven attribution (DDA) outputs as the conversion signal per channel. That’s the Shapley-value-based credit assignment GA4 has been running for a while. Then it fits a response curve per channel (diminishing returns at higher spend) using your historical spend-to-conversion pairs from the connected Google Ads account. Finally, it wraps the point estimate in a Bayesian-style credible interval driven by historical variance and sample size.
Three implications you need to internalise:
- The model only “knows” channels with sufficient historical spend variation. If you’ve spent $200/day on YouTube for six months straight, the model has no idea what happens at $500/day. The confidence band on that scenario will be enormous, and rightly so.
- DDA is the upstream truth. If your DDA model is broken (consent mode gaps, missing UTMs, server-side tags overwriting
source/medium), Scenario Planner inherits every flaw and amplifies it. - Low-conversion properties get punished. Bayesian models with weak priors and small samples produce wide posteriors. If you’re under ~50 conversions per channel per week, the projections will be technically honest but practically useless.
This is why I tell clients: Scenario Planner is a tool for properties with mature measurement, not a shortcut for fixing one that isn’t. If your GA4 setup has consent mode gaps or UTM hygiene problems, fix those first.
Building a Real Scenario: Shopify Store Reallocating From Paid Search to Paid Social
Let me walk through the exact scenario I ran for a mid-size Shopify apparel client last quarter. They were spending roughly 70% of paid budget on Google Ads (Search + PMax) and wanted to test shifting 25% of that to Meta. The question: what does GA4 think happens to total purchases?
Step 1: Verify the baseline.
Before touching Scenario Planner, I pulled the last 90 days of purchase events by session_default_channel_group from BigQuery and reconciled them against the GA4 UI. They matched within 1.5%. Good. If your numbers diverge more than 5%, stop and fix that first.
Step 2: Open the planner and lock the baseline window.
I set the baseline to the 60 days preceding their last promo (the Black Friday spike would have poisoned the response curves). The planner lets you exclude specific date ranges, which most guides skip mentioning.
Step 3: Set the conversion goal to purchase only.
Resist the urge to include add_to_payment_info or other funnel events. Multi-goal scenarios blur the response curves because each goal has a different conversion rate elasticity.
Step 4: Adjust the channel sliders.
I dropped Paid Search budget by 25% and added a new Paid Social allocation. Here’s where the model gets interesting: GA4 doesn’t have spend data for non-Google channels by default. You need to either upload cost data via the Data Import feature or connect through Google Ads Data Manager. Without cost data, the planner can model Paid Social conversions based on historical organic-social-style behaviour, but the CPA estimate will be a guess.
Step 5: Read the output critically.
The model returned a projected 8% drop in total purchases with a confidence band of -18% to +3%. That band crossing zero is the headline. The model is telling you: this might be a wash, or it might be a disaster. It is not telling you the reallocation is a good idea. Most analysts read the point estimate and ignore the band. Don’t.
Validating Projections Against BigQuery
Here’s the part nobody else is writing about. The only way to know if Scenario Planner is useful for your specific property is to backtest its projections against what actually happened. You need the BigQuery export turned on (free tier is fine for most properties).
The validation workflow:
- Save the planner’s projection on day 0 (export the CSV).
- Wait 30, 60, and 90 days.
- Query actual conversions in BigQuery for the same channel mix.
- Compare actual vs. projected, channel by channel.
Here’s the SQL I use to pull the actuals for comparison. Adjust the dataset name and date range:
WITH channel_conversions AS (
SELECT
PARSE_DATE('%Y%m%d', event_date) AS conversion_date,
traffic_source.source AS source,
traffic_source.medium AS medium,
session_traffic_source_last_click.manual_campaign.source_platform AS platform,
CASE
WHEN traffic_source.medium IN ('cpc', 'ppc', 'paid')
AND traffic_source.source LIKE '%google%' THEN 'Paid Search'
WHEN traffic_source.medium IN ('cpc', 'paid')
AND (traffic_source.source LIKE '%facebook%'
OR traffic_source.source LIKE '%instagram%') THEN 'Paid Social'
WHEN traffic_source.medium = 'organic' THEN 'Organic Search'
WHEN traffic_source.medium = 'email' THEN 'Email'
WHEN traffic_source.medium IS NULL
OR traffic_source.medium = '(none)' THEN 'Direct'
ELSE 'Other'
END AS channel_group,
COUNT(DISTINCT CASE
WHEN event_name = 'purchase'
THEN CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING))
END) AS purchases,
SUM(CASE
WHEN event_name = 'purchase'
THEN ecommerce.purchase_revenue
ELSE 0
END) AS revenue
FROM `your-project.analytics_XXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY))
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY 1, 2, 3, 4
)
SELECT
channel_group,
SUM(purchases) AS actual_purchases,
SUM(revenue) AS actual_revenue,
ROUND(SUM(revenue) / NULLIF(SUM(purchases), 0), 2) AS aov
FROM channel_conversions
GROUP BY channel_group
ORDER BY actual_purchases DESC;
Then drop both into a comparison sheet. For the apparel client above, after 60 days of running the reallocation, here’s what we saw:
| Channel | GA4 Projected Purchases | Actual Purchases | Variance |
|---|---|---|---|
| Paid Search | 1,840 | 1,720 | -6.5% |
| Paid Social | 620 | 410 | -33.9% |
| Organic Search | 2,100 | 2,180 | +3.8% |
| Direct | 1,500 | 1,890 | +26.0% |
| 740 | 760 | +2.7% |
Paid Search and Organic were within tolerance. Paid Social was wildly over-projected because GA4 had no historical Meta spend response curve to fit against. And Direct ballooned because last-click attribution dumped the post-iOS Meta traffic into Direct, inflating that bucket. The total picture: the reallocation looked worse in GA4 than it actually was, because conversions were being misattributed, not lost.
This is the whole game. The projection is one data point. The BigQuery actuals plus a clear-eyed read on attribution leakage tell you what really happened.
Five Situations Where Scenario Planner Will Lie to You
After running this across maybe 30 properties, I’ve catalogued the failure modes. If any of these describe your setup, treat projections as directional only.
1. Consent Mode v2 with low consent rates. If your EU traffic is bouncing the consent banner at 40% acceptance, the model is fitting curves to consented behaviour only and extrapolating to the full population. The modelled conversions GA4 adds back don’t make it into Scenario Planner’s training cleanly. Projections skew low for high-EU-traffic properties.
2. Heavy direct traffic from iOS/Safari. Post-ATT, a meaningful chunk of Meta and TikTok traffic lands as Direct because the click identifiers get stripped. The model treats Direct as a free channel with infinite supply, which it isn’t. Reallocate away from paid social and the planner will tell you Direct stays flat. In reality, Direct shrinks too because much of it was paid social wearing a disguise.
3. Seasonal businesses outside the baseline window. If you sell ski gear and you’re planning Q4 spend from a Q2 baseline, the response curves are fit to demand that doesn’t exist anymore. Always extend the baseline to cover at least one full seasonal cycle, or pick a comparable prior-year window.
4. New channels with no historical spend. Launching a new channel (TikTok, Reddit, retail media) means there’s no response curve. The planner will either refuse to project or invent something. Both are useless. Run a 4-week test at flat spend, then revisit.
5. Sub-threshold data. Properties under roughly 1,000 conversions per 90 days will get projections with bands so wide that any decision based on them is gambling. The model isn’t broken; it’s being honest about uncertainty. You just can’t use it yet.
Combining Scenario Planner With Cross-Channel Budgeting
The real workflow most guides miss: Scenario Planner is one input into a media plan, not the plan itself. I pair it with the Cross-Channel Budgeting view (also in the Advertising workspace) and an external incrementality reference.
My standard process:
- Pull the Scenario Planner projection for the proposed allocation. Note the point estimate and the bounds.
- Cross-reference Cross-Channel Budgeting for actual recent CPA and conversion rate per channel. If the planner’s projected CPA diverges from the Budgeting view’s trailing CPA by more than 20%, something is off. Investigate before trusting either.
- Layer in incrementality data from geo holdouts, conversion lift studies, or MMM if you have it. GA4 measures attribution, not incrementality. The two are not the same. A channel with great attribution can have terrible incrementality.
- Build the defensible plan as a weighted blend: GA4 projection for short-term tactical shifts, MMM or incrementality for strategic budget allocation.
For Shopify clients specifically, I also pull post-purchase survey data (“How did you hear about us?”) and reconcile it against GA4 attribution. The gap between the two is your attribution leakage estimate. If you need help wiring that into a clean reporting layer, that’s exactly the kind of work our Shopify analytics team does.
Common Mistakes and Troubleshooting
Mistake: Using the default 90-day baseline blindly. If your last 90 days include a promo, a tracking outage, or a seasonal spike, your response curves are corrupt. Always inspect the baseline window before accepting projections.
Mistake: Treating the point estimate as the forecast. The confidence band is the forecast. The point estimate is the centre of a probability distribution. If the band crosses zero (or crosses your break-even CPA), the model is telling you it doesn’t know.
Mistake: Ignoring non-Google channel cost data. Without cost data uploads from Meta, TikTok, and other platforms, Scenario Planner can’t compute true cross-channel CPA. Connect Google Ads Data Manager or upload cost data via Data Import.
Mistake: Running scenarios on a property without a Google Ads link. The feature technically works, but the spend-to-conversion response curves degrade badly. You’re better off in this case using BigQuery directly.
Mistake: Forecasting too far out. Past 60 days, drift in seasonality, ad auction dynamics, and creative fatigue makes projections unreliable. If you need a longer horizon, use MMM, not Scenario Planner.
Troubleshooting empty projections: If the planner returns blank or “insufficient data,” check (a) your key event has enough volume, (b) DDA is enabled on the property, and (c) the channel you’re modelling has at least 30 days of spend history with some variance.
Troubleshooting wildly wide bands: Almost always a sample-size problem. Extend the baseline window or aggregate to a higher level (e.g., Paid vs. Organic rather than individual channels).
Key Takeaways
- Scenario Planner is a Bayesian forecast layered on top of GA4’s data-driven attribution. It inherits every flaw in your DDA setup, so fix tracking hygiene before trusting projections.
- The confidence band is the actual output. If the band crosses zero or your break-even CPA, the model is admitting it doesn’t know, and you shouldn’t pretend otherwise.
- Backtest every projection against BigQuery actuals at 30/60/90 days. Without that loop, you’re flying blind on whether the model works for your property.
- Five conditions break the model: consent mode gaps, iOS-driven direct traffic inflation, seasonality outside the baseline, new channels with no history, and sub-threshold conversion volume.
- Pair Scenario Planner with Cross-Channel Budgeting and external incrementality data. Attribution is not incrementality, and GA4 cannot tell you the difference.
- For low-data or heavily seasonal properties, skip the planner entirely and build your own forecast from BigQuery. The feature is built for mature measurement setups, not as a shortcut to one.
Share this article