GA4’s Junk Drawer: Making Sense of Direct Traffic With UTMs

Earlier this month, we spent time recapping and analyzing 2025 data for our clients. One common thing we noticed was that “Direct” traffic, aka GA4’s junk drawer, continues to be the catch-all for unattributed traffic. In this post, we’ll review why GA4 over reports Direct traffic and what to do about it. Let’s dive in!
Why GA4 over-reports Direct
GA4 assigns Direct when it can’t see a referrer. Here are some of the common causes:
- Links in emails (especially non-Gmail clients)
- Slack, Teams, Zoom chat
- PDFs, Word docs, slide decks
- QR codes
- Social apps / mobile browsers
- HTTPS → HTTP transitions
- Some privacy tools & ad blockers
So, the goal of UTMs is not “track everything”, but fill in the biggest attribution blind spots.
Do you need UTMs on everything?
Absolutely not.
This came up just this morning at a client meeting. Not only does over-UTM-ing create noise, breaks attribution, and makes GA harder to trust, it can be challenging to implement across teams. We suggested taking a “just right” Goldilocks approach.
Do NOT use UTMs on:
- Internal links (ever)
- Organic social posts (unless there’s a strong reason)
- Organic search
- Paid ads managed in Google Ads (auto-tagging is better)
- Links you don’t control long-term (e.g., partners reposting)
Where UTMs are most valuable (high ROI)
Think “dark traffic” — places GA can’t naturally identify.
1. Email (highest priority)
- Newsletters
- Drip campaigns
- One-off campaigns
- Internal team emails that drive traffic
Best practice
- Use UTMs on every email link
- Keep naming conventions rigid
Example:
utm_source=newsletter
utm_medium=email
utm_campaign=nutrition_facts
utm_content=cta_button
2. PDFs & downloadable assets
- Whitepapers
- Reports
- Proposals
- Case studies
- Slide decks
If someone clicks from a PDF without UTMs → Direct.
Example:
utm_source=pdf
utm_medium=download
utm_campaign=nutrition_toolkit
3. Social links in “non-public” spaces
- Slack
- Discord
- LinkedIn DMs
- SMS
You don’t need UTMs on public social posts — GA already knows those.
Example:
utm_source=slack
utm_medium=chat
utm_campaign=recipe_launch
4. QR codes (always)
QR traffic without UTMs is basically useless.
Example:
utm_source=qr
utm_medium=offline
utm_campaign=conference_2026
5. Paid media outside Google Ads
- LinkedIn Ads
- Meta
- Programmatic
- Sponsorships
Use UTMs even if the platform reports clicks — GA attribution still needs help.
A manageable & sustainable UTM system
The secret is constraint, not complexity. By limiting variables, you reduce noise and create a simple, sustainable methodology that team members are far more likely to adopt—and stick with.
1. Lock down a naming convention (write it down)
Never improvise UTMs. Ever.
Recommended baseline
| Parameter | Rule |
| utm_source | Where the traffic comes from (newsletter, linkedin, qr) |
| utm_medium | Channel type (email, social, paid, offline) |
| utm_campaign | Organiztion initiative or campaign |
| utm_content | Optional: link or CTA identifier |
Rules
- Lowercase only
- Use underscores, not spaces
- No dates unless meaningful
- Be human-readable
2. Keep your medium list VERY small
If you let mediums explode, GA becomes unreadable.
Good medium list (example):
- paid
- social
- referral
- offline
- download
That’s it. Fight the urge to add more. Remember, less is more.
3. Use the Google URL Builder — but centralize ownership
The URL builder is fine, but the real risk is people using it inconsistently.
Best practice:
- Create a shared UTM spreadsheet
- Include:
- Approved sources
- Approved mediums
- Campaign naming rules
- Copy/paste into Google’s builder
This keeps GA4 clean over time, not just this quarter.
4. Campaigns ≠ dates
This is a common mistake.
❌ utm_campaign=may_newsletter_2026
✅ utm_campaign=sparkle_wednesday
Dates belong in reporting, not UTMs — otherwise you fragment your data.
5. Accept that Direct will never go to zero
Your goal isn’t to eliminate Direct — it’s to:
- Reduce false Direct
- Make intentional traffic visible
- Improve trend reliability
If Direct drops from 35% → 20%, that’s a win.
A realistic workflow
Here’s a sane cadence:
- Always UTMs for:
- Paid media
- QR codes
- PDFs
- Sometimes for:
- Private social / messaging
- Never for:
- Internal links
- SEO
- Public organic social (unless testing)
Remember, a simple, shared approach to UTMs keeps your data clean, your reporting honest, and your team aligned, without adding unnecessary complexity.

