Skip to content

How to split a marketing budget by channel, step by step

Compare each channel's revenue under two GA4 models and in Shopify. Set a break-even floor from your margin and forecast the next euro in Performance Planner. Test the biggest channel with a heavy-up or go-dark test, then move budget in small steps.

By , Founder & CEOUpdated 7 min read

Run the numbers for your store: the free multi-channel budget calculator.

To split a marketing budget by channel, compare each channel's credit under two attribution models and set a floor from your margin. Then forecast where the next euro still pays, test the biggest channel before a large move, and shift money in steps. If you only have last-click data, treat the split as a draft.

You need four things: spend per channel, revenue by channel, your margin and one honest test. The steps below use GA4, Shopify and Google Ads, with each menu path taken from their help pages. Spend comes from each ad platform's own account, since Shopify leaves some of it out.

The goal is not a perfect pie chart. It is a split where the next euro earns about the same in every channel, and more than your floor. Averages can't show that, which is why the steps end with a test.

Step by step

  1. Pull each channel's revenue under two models. In GA4, open Advertising, then Attribution models under Attribution. Set one model column to data-driven and the other to paid and organic last click. Note the % change for each channel, because a big swing means the credit is soft.
  2. Check Shopify's view of the same channels. In Shopify admin, open the Growth page and select View channel report. Switch the attribution model between last click, first click and last non-direct click. Add the New customers and Returning customers columns while you are there.
  3. Measure how long journeys run. In GA4, open Advertising, then Key event attribution paths under the Key events dropdown. Note Days to key event and Touchpoints to key event. A channel that opens long journeys can pay back weeks after the spend.
  4. Set a floor from your margin. Break-even ROAS is 1 divided by your gross margin. In Shopify admin, go to Analytics, then Reports, and filter by the Sales category. Read gross profit, which Shopify calculates as net sales minus product cost.
  5. Forecast the next euro inside Google Ads. Go to Performance Planner within the Tools menu and select the plus icon. Enter a date range, channel and key metric, then watch where extra spend stops buying extra conversions. Its forecasts are refreshed daily and based on the last 7-10 days, adjusted for seasonality. It plans Google Ads only, so it can't weigh Google against Meta.
  6. Test before a big move. Google's geo guide calls it a heavy-up: extra budget in test regions only, to see if more money still pays. In Google Ads, duplicate the campaign. Point the original at the control regions and the copy at the test regions. In each one's settings, expand Locations, remove country-level targeting and select Presence under Location options. Then raise the copy's daily budget and keep the original's flat.
  7. Move money in steps. In Google Ads, open the campaign's settings and expand Budget under Budget and bidding optimization. Google's geo guide says any budget change greater than 20% necessitates a new learning period. Smaller steps are easier to read.

A worked example

In one store's Channels sheet, Direct holds 57.7% of revenue in all three views and Paid Social holds 0.0%. A split by credit would fund the row you can't buy and starve the one you can't see. A starting split for that store has to come from tests, not from the Channels sheet.

In one store's Journeys sheet, journeys with 1 touch took 0.5 days to buy, while four to nine touches took 16.9 days. A channel that opens those longer journeys can look idle for two weeks after you raise its budget. The Break-even sheet sets the floor at 2.5x for a 40% margin, since 1 divided by 0.40 is 2.5.

Now a made-up month, in round numbers. For illustration, say you spend €10,000: €4,000 on Google Search, €5,000 on Meta and €1,000 on email. Say the platforms report ROAS of 6x for Search, 3x for Meta and 20x for email.

For illustration, a go-dark test then finds Search adds a third of what it claims, which is 2x. If your margin is 40%, that sits below the 2.5x floor, so Search should not get the next euro. If the Meta test finds 2.7x of its 3x is extra, Meta clears the floor and can take more. For illustration, email's 20x may be mostly buyers who were coming back anyway, so it needs its own holdout first. If Shopify's channel report shows email's sales come almost all from returning customers, it belongs in the retention pot, not the growth pot.

The next month, for illustration, moves €800 from Search to Meta: a 20% cut for one and a 16% rise for the other. Nobody's budget lurches, and the next test can check the move.

What to check when the report looks wrong

  • GA4 and Google Ads disagree. GA4 uses last click for Google Ads conversions based on key events, whatever model you choose in GA4. Set GA4 to paid and organic last click before you compare the two.
  • Shopify shows no cost for Meta or Google. Shopify says Facebook and Google campaigns don't display cost, ROAS, CPA or CTR on its Growth page. Pull spend from Meta Ads Manager and Google Ads instead.
  • Shopify and GA4 disagree. Shopify's default model for marketing activity data is last non-direct click, and your GA4 column may be data-driven. Line up the models before you blame either tool.
  • Yesterday is missing. Shopify notes it can take up to 24 hours for report metrics and data to update. Wait a day before you compare.
  • Performance Planner wants to zero a campaign. It may propose a budget of $0 USD for some campaigns. Its forecasts count conversions inside your conversion window, so treat a zero as a reason to test, not a verdict.
  • Your floor looks too kind. Shopify's gross profit is net sales minus product cost. Shipping, payment fees and packaging still come off, so your real floor sits a little higher than 1 divided by that margin.
  • Direct looks enormous. GA4's models credit Direct only when a path is all Direct. A big Direct row is a pile of journeys with no visible source, not a channel to fund.
  • Conversion rate jumped in late September. Shopify's session measurement rollout ran over 21 to 23 September 2026, so session-based metrics changed for a measurement reason. Compare channels on sales, not sessions, across those dates.

What to do this week

  1. Export the two-model table. In GA4's Attribution models report, select Share this report in the top right and download the data. Pass: every paid channel has revenue under both models. Fail: rows read (not set) or Unassigned, so fix your UTM tags before you split anything.
  2. Write a floor next to each channel. In Shopify, filter Analytics, then Reports, by the Sales category and read last quarter's gross profit. Divide 1 by your margin and put each platform's reported ROAS beside it. Pass: every channel has both numbers. Fail: gross profit equals net sales, a sign product costs were never entered.
  3. Cap next month's changes. In Google Ads, open each campaign's settings and expand Budget. Keep each change to 20% or less. Pass: no campaign moves more than that in one go. Fail: a bigger move is planned, so pair it with a heavy-up or go-dark test first.

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: Key event attribution models report (Analytics Help). Measuring marketing performance (Shopify Help Center). Key events attribution paths report (Analytics Help). Sales reports (Shopify Help Center). Create and edit a plan with Performance Planner (Google Ads Help). About Performance Planner (Google Ads Help). Implement campaigns for geo experiments (Google Ads Help). Get started with attribution (Analytics Help). Acquisition reports (Shopify Help Center).

Frequently asked questions

  • What data do I need to split a budget by channel?
    Spend per channel from each ad platform, revenue by channel from GA4 under two attribution models, your gross margin, and how long journeys take. One test result on your biggest channel makes the whole split far easier to trust.
  • Can Performance Planner split my budget between Google and Meta?
    No. Performance Planner plans Google Ads campaigns, shifting budget between them on forecasts from recent auctions. It cannot compare a euro on Google with a euro on Meta, so use it for the Google slice after you set the cross-channel split.
  • How big should each budget change be?
    Small enough to read. Google's geo experiment guide says any budget change greater than 20% necessitates a new learning period. Steps under that size keep cause and effect easier to see.

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.