← Back to blog

    GA4

    Why 25-30% of Your Traffic Shows as "Direct" in GA4 (And How to Fix It)

    9 min readBy Kozan Editorial TeamAnalytics & Growth

    GA4 direct traffic attribution guide: why "(direct)/(none)" is inflated and how to fix UTM tracking

    You open GA4, pull up Traffic Acquisition, and there it is: a swollen (direct) / (none) row sitting at the top of your report. It looks like your users are loyally typing your URL into their browser. But they're not. Most of that traffic came from somewhere else - your email campaign, a paid ad, a LinkedIn post - and GA4 has no idea.

    Missing UTM parameters cause 25-30% of campaign traffic to appear as "Direct" in GA4, hiding your true campaign performance and making accurate ROI calculation impossible. Performance advertising decisions made on corrupted data aren't just inaccurate - they're actively misleading.

    This guide explains exactly why it happens, what the eight most common culprits are, how to diagnose them, and how to fix each one. If you want to skip straight to the fix: our free UTM Link Builder generates GA4-ready tracking links in seconds.

    Quick CTA: Build clean tracking links now Stop manual UTM errors before they hit GA4.
    Open the Free UTM Link Builder | See all free tools

    What "Direct" Traffic Actually Means in GA4

    Before diagnosing the problem, it helps to understand what GA4 means when it labels a session "Direct." It does not mean the user typed your URL. It means GA4 processed the session and could not find reliable source information - no UTM parameters, no recognised referrer, no Google Ads ID, no known search engine.

    Direct is GA4's fallback. When it loses the trail, it defaults to (direct) / (none).

    Direct vs Unassigned: (direct) / (none) means GA4 received the session but found no source data. (Unassigned) means GA4 received event data but could not map it to a known channel group. Both indicate attribution issues, but the causes differ.

    StatWhy it matters
    25-30%Typical share of campaign traffic that appears as "Direct" due to missing or broken UTMs
    81.4%GA4 adoption across tracked websites, while UTM misuse still causes major attribution errors
    20-70%Range of accounts with hidden tracking issues, based on CampaignTrackly diagnostic patterns

    The 8 Reasons Your Traffic Is Showing as Direct

    These are the most common culprits we see in client accounts:

    1. No UTM parameters on campaign links

    If you send an email, publish a social post, or run an ad without UTMs, GA4 cannot attribute the source and will often mark it as direct.

    2. URL redirects stripping UTM parameters

    Shorteners and redirect layers can drop query strings. If UTMs disappear before the final landing URL loads, attribution breaks.

    3. HTTPS -> HTTP transitions losing referrer data

    Referrer data can be stripped when users move from secure to non-secure pages. Any HTTP step in your funnel can erase source context.

    4. UTMs on internal links overwriting attribution

    Adding UTMs to links within your own site can overwrite the original source mid-session, corrupting conversion reporting.

    5. Inconsistent casing fragmenting data

    GA4 is case-sensitive. Email, email, and EMAIL are different values. Standardise naming and force lowercase.

    6. Non-standard utm_medium values causing "Unassigned"

    If medium names do not match GA4 channel logic, traffic can be dumped into Unassigned. See GA4 channel rules.

    7. GA4 tag firing too late

    If the tag loads late, it may miss parameters that are stripped by app routing or scripts after initial load. Prioritise early GA4 initialization in GTM.

    8. AI-driven traffic being classified as direct

    Some AI assistant click paths do not reliably pass referrer data, which can inflate direct unless links are tagged.


    What UTM Parameters Are (And the 5 You Need)

    UTM parameters are URL tags that tell GA4 where traffic came from.

    ParameterRequired?What it tracksExample
    utm_sourceYesPlatform/sourcenewsletter, linkedin, google
    utm_mediumYesChannel typeemail, paid_social, cpc
    utm_campaignRecommendedCampaign namespring_launch_2026
    utm_contentOptionalCreative/link varianthero_cta, sidebar_banner
    utm_termOptionalPaid keyworddigital+agency+us

    Critical: Use utm_source and utm_medium at minimum. Using utm_campaign alone is not enough for reliable channel attribution.


    How to Diagnose the Problem in GA4

    1. Check direct traffic share

    In Reports -> Acquisition -> Traffic Acquisition, inspect Session source / medium. If direct is unusually high while campaigns are active, investigate attribution quality.

    2. Test UTMs in DebugView

    In Admin -> DebugView, click a tagged link in incognito and confirm source, medium, and campaign values are present in the session.

    3. Audit redirect chains

    Use browser network tools to follow each redirect and confirm query parameters survive every hop.

    4. Find internal UTM contamination

    Search your site and CMS for internal URLs containing ?utm_. Remove them and use events for internal click tracking.

    CTA: Run a fast attribution health check Want to verify if your setup is clean beyond UTMs?
    Take the Digital Marketing Scorecard | Contact our team


    How to Fix Each Culprit

    1. Tag every external campaign link

    Use a strict rule: every off-site marketing link gets UTMs. Build consistent links instead of manual string editing.

    2. Validate redirects before launch

    Test every campaign link end-to-end. If your redirect tool strips parameters, change tooling or append UTMs to final URLs.

    3. Move all funnel pages to HTTPS

    Ensure every landing and conversion page is HTTPS for data integrity and SEO performance.

    4. Remove UTMs from internal links

    Track on-site behavior with GA4 events, not UTMs on internal navigation.

    5. Enforce one naming convention

    Use lowercase, standard separators, and approved source/medium values.

    6. Use GA4-compatible medium values

    Prefer common values such as cpc, email, social, paid_social, referral, display, affiliate, or define a Custom Channel Group.

    7. Prioritise GA4 tag timing

    Configure GA4 to fire early in GTM so parameters are captured before any cleanup scripts alter URLs.

    8. Create AI referral tracking standards

    For links you control in AI-distributed contexts, consider consistent conventions like utm_source=chatgpt and utm_medium=ai_referral.

    CTA: Need this implemented for your team? We can standardise UTMs, fix GA4 channel mapping, and clean attribution end-to-end.
    Book a strategy call | Explore Performance Advertising | Explore SEO


    Recommended UTM Naming Convention

    Channelutm_sourceutm_mediumutm_campaign format
    Email newsletternewsletteremailtopic_month_year
    Google Search Adsgooglecpccampaign_name
    Meta Adsmetapaid_socialcampaign_name
    LinkedIn Adslinkedinpaid_socialcampaign_name
    LinkedIn organiclinkedinsocialpost_topic_date
    AI-cited contentchatgpt / perplexityai_referralcontent_name

    UTM Fix Checklist: Do This This Week

    • Audit GA4 acquisition reports for direct and unassigned anomalies
    • Test your latest campaign links through full redirect chains
    • Remove internal links containing ?utm_
    • Confirm full HTTPS coverage across the funnel
    • Standardise naming conventions for source/medium/campaign
    • Validate GA4/GTM firing order and parameter capture
    • Switch to a consistent UTM process using the UTM Link Builder
    • Run a broader analytics health check using the Digital Marketing Scorecard

    The Bottom Line

    For active marketing accounts, "Direct" traffic in GA4 is often inflated by attribution leakage - not brand intent. The fix is operational discipline: consistent UTMs, clean redirects, HTTPS continuity, and correct tagging setup.

    The longer this stays broken, the more budget decisions are made on distorted data. If you want a quick baseline check, run a free Digital Marketing Scorecard, then standardise links with the free UTM Link Builder.


    Frequently Asked Questions

    Why does GA4 show so much direct traffic when campaigns are running?

    Usually because campaign links are missing UTMs or parameters are dropped before landing. When GA4 cannot determine source, it falls back to (direct) / (none).


    Is some direct traffic normal?

    Yes. A portion is expected from bookmarks, typed URLs, and some app environments. Large spikes or high direct share on deep pages often indicate tracking issues.


    What is the difference between direct and unassigned in GA4?

    Direct means no source could be identified for the session. Unassigned usually means data exists, but it did not map to a recognised default channel rule.


    Should I use UTMs on internal links?

    No. Internal UTMs can overwrite original attribution and corrupt reporting. Use events for internal click tracking.


    Does Google Ads auto-tagging replace UTMs?

    For Google Ads, auto-tagging is primary. For non-Google channels (email, social, affiliates, other paid placements), UTMs remain essential.


    How often should I audit UTM setup?

    At least monthly for moderate campaign volume, and weekly for high-volume teams or after major funnel/tag changes.


    How can I track AI assistant traffic in GA4?

    Use consistent UTM conventions for links you control and group those sources in reporting so AI-driven visits are separated from generic direct traffic.


    Need help cleaning up attribution fast? Start with the UTM Link Builder, review your baseline with the Digital Marketing Scorecard, or contact our team.

    Engage with us

    Questions about this article or your campaigns? Leave a message—we reply within 24 business hours.

    Related posts

    More from the Kozan blog.