Guide
Why you should always track campaign traffic
A click that costs money and arrives without tags is a click you cannot defend in a weekly report. This page is about that reporting gap — not a list of “benefits of marketing analytics.”
What “untagged” looks like in GA4
Someone taps a Meta ad, an email button, or a QR on a booth. The site loads. The Google tag fires. If the URL has no campaign parameters and no click ID that GA4 can import, the session often lands in Direct or Unassigned. The ads platform still shows spend. The site report does not show the program. Those two screens then argue with each other, and the cheaper story usually wins: “analytics is broken.”
Google Ads can close that gap with auto-tagging and a linked property (gclid). Meta, most ESPs, affiliates, SMS, and print cannot. For those, a campaign URL is the only record the site has. Auto-tagging vs manual tags is a separate job: UTM vs auto-tagging.
Direct is not always a failure. Typed URLs, bookmarks, and some in-app browsers belong there. The failure is paid or owned media that should have been named sitting in the same bucket as a bookmark. You cannot cut a Meta campaign from a Direct line. You can cut it from facebook / paid_social / retargeting-spring.
Which channels cannot skip tags
| Channel | What the platform already knows | What GA4 knows without a campaign URL |
|---|---|---|
| Google Ads (linked, auto-tag on) | Campaign, ad group, keyword via gclid | Usually enough for Ads reports. Still add UTMs if you need the same campaign name next to email. |
| Meta Ads | Spend, ads, fbclid | Often Direct or Unassigned. fbclid is not a campaign name. |
| Email / ESP | Opens, clicks inside the ESP | Nothing useful unless the button URL is tagged. |
| Affiliates | Network click IDs, publisher payouts | Referral or Direct unless you set medium affiliate. |
| Print / QR | Nothing in an ad UI | Direct, always, if the code is a bare domain. |
If you only remember one row: Meta and email are where teams lose months of mix reporting. How to tag them: Meta Ads and email. Offline: print and QR.
What you can decide once tags exist
- Which channel paid for the session: search, paid social, email, affiliate — if
utm_mediummaps to a channel group. - Which initiative it belonged to, if
utm_campaignis shared across the week’s ads and the newsletter. - Which creative or button, if
utm_contentis unique and you are not minting a campaign per asset. - Whether a partner is sending the traffic they invoiced, if source is the partner slug.
None of that requires a CDP. It requires the same three fields on every external link: source, medium, campaign. Definitions: what UTM parameters are. Spelling rules: best practices.
A worked week
You spend on brand search, a Meta retargeting ad, and a promo email. All three say they drove the sale. Untagged, GA4 shows a lump of Direct plus some google / cpc from auto-tagging. You cannot answer “did the email work on the site?” Tagged with one campaign name — spring-sale-2026 — and three mediums (cpc, paid_social, email), Traffic acquisition can split the sessions. The numbers will not match Ads Manager click-for-click. That gap is expected; see why ads and GA4 numbers differ. The point is you can compare the three programs on the same property.
Build those three URLs in the campaign URL builder or expand them in the bulk generator. Gate them with the launch checklist before the first dollar or the first send.
What this page is not asking you to do
It is not asking you to tag your own navigation. Internal UTMs overwrite the original source and turn a paid click into “homepage.” That anti-pattern has its own article: when not to use UTM parameters.
It is not asking you to invent a new campaign name for every button. Track the program. Put the button in content. The error list: common UTM mistakes.
If Unassigned is already the headline in your property, fix the medium first: Unassigned traffic in GA4.