Skip to content

Campaign attribution: from UTM tags to a budget decision

Fix the tags first, then read the Unassigned share, then ask whether the campaign's order count is big enough to act on. GA4 treats UTM values as case sensitive and sorts channels by fixed rules.

By , Founder & CEOPublished 4 min read

Run the numbers for your store: the free UTM builder.

A campaign-level number is only as good as its tag, and GA4 treats parameter values as case sensitive, so utm_source=google and utm_source=Google are different rows. Fix the tags first, read the Unassigned share second, and only then ask whether the number is big enough to act on: in 25 field experiments with major US retailers and brokerages, the median confidence interval on return on investment was over 100 percentage points wide (Lewis and Rao, Quarterly Journal of Economics, 2015).

What makes a UTM tag reliable?

Google's guidance is short. Always use utm_source, utm_medium and utm_campaign; missing UTM parameters result in (not set) values in reporting. Keep one unique medium per channel, such as paid_social, and one unique campaign name that matches the exact campaign name, which stops a single effort from splitting into several rows. Use lowercase as a standard, because SpringSale and Spring_Sale are considered distinct.

Auto-tagging adds a wrinkle. If you use manual and auto-tagging together, GA4 uses the auto-tagged values for source, medium and other traffic-classification dimensions, and where the click ID can't be used but any UTM parameter is present, it derives all source dimensions from the UTM parameters alone. So if you set one UTM parameter, set all the relevant ones.

Which channel does a tag land in?

GA4's default channel group sorts traffic by rules that aren't case sensitive and can't be edited. Paid Social needs a social source and a medium matching ^(.*cp.*|ppc|retargeting|paid.*)$, which cpc and paid_social satisfy. Organic Social accepts a social source or a medium of social. An ad tagged utm_medium=social therefore lands in Organic Social, whatever was spent on it.

How much of your traffic lands in Unassigned?

Google defines Unassigned as the value used when no channel rule matches the event data, and it describes (other) as an aggregated row caused by cardinality limits. Read both: open Reports, Acquisition, Traffic acquisition, divide Unassigned sessions by total sessions, and open the row to see which source and medium sit behind it. A clean scheme leaves little to explain.

When is a campaign number too noisy to act on?

A campaign number is too noisy to act on when its normal week-to-week swing is larger than the change you want to detect. Lewis and Rao also report that individual-level sales are very volatile, with a coefficient of variation of 10 common, and that informative experiments can easily require more than 10 million person-weeks. For illustration: if orders arrive at random, a campaign credited with 16 orders a week has a typical swing of about 4 orders from chance alone, because the square root of 16 is 4, and 4 is 25% of 16. The smaller the count, the larger that share, and real order counts swing more than chance alone.

How do you audit your tags in one sitting?

  1. Export. Take the last full quarter of session source, medium and campaign from Traffic acquisition.
  2. Sort. Put campaign names in order and mark names that differ only by case, separators or spelling.
  3. Land. Paste each paid link into the UTM builder and GA4 channel checker, or click it once and read the channel GA4 assigns.
  4. Count. List weekly credited orders per campaign from Shopify's Performance by UTM campaign report, then divide each campaign's highest week minus its lowest week by its average week.

Pass: one name per campaign, every paid link in the channel you intended, and a weekly range smaller than the change you want to detect. Fail: variants of one campaign, rows in Unassigned, or a range larger than the change, in which case the campaign number can't carry the decision and you step up to the channel level.

Sources, 30 September 2026: URL builders: Collect campaign data with custom URLs, Traffic-source dimensions, manual tagging, and auto-tagging and Default channel group (Google, Analytics Help); Marketing reports (Shopify Help Center); The unfavorable economics of measuring the returns to advertising (Lewis and Rao, Quarterly Journal of Economics, 2015, peer-reviewed).

Frequently asked questions

  • Are UTM parameters case sensitive in GA4?
    Yes. Google says parameter values are case sensitive, so utm_source=google and utm_source=Google are different values, and SpringSale and Spring_Sale are distinct campaigns. Google's guidance is to use lowercase as a standard.
  • Why is my paid social traffic showing as Organic Social?
    GA4's default channel group counts traffic as Paid Social only when the medium matches its paid pattern, such as cpc, ppc, retargeting or paid_social. A medium of social lands in Organic Social. Retag the ad links, then check the channel column.
  • How much Unassigned traffic is acceptable?
    Treat any fixed target with suspicion. Unassigned means no channel rule matched the event data, so aim to name the source and medium behind every Unassigned row and fix the tags behind the largest ones first.

Go deeper: Incrementality testing, 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.