Your GA4 channel grouping shows 40% of traffic as “Direct” — but you know that’s not real. Direct traffic in GA4 doesn’t just mean someone typed your URL; it also catches all sessions where source/medium is missing or lost. This guide explains the technical reasons direct traffic is overinflated, how GA4’s default channel grouping works, and how to customize it to get accurate channel attribution.
What GA4 Really Means by “Direct”
GA4 labels a session as “Direct” when it can’t determine the source. This includes untagged email links (email clients strip referrer), links from PDF documents, HTTPS to HTTP transitions that strip referrer headers, browser extensions that block referrers, shortened URLs without UTM parameters, WhatsApp and Slack links (dark social), and internal redirects that lose UTMs.
Diagnosing Overinflated Direct
-- Find what's causing direct sessions
SELECT
traffic_source.source,
traffic_source.medium,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') as landing_page,
COUNT(DISTINCT CONCAT(user_pseudo_id, '_',
CAST((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS STRING)
)) as sessions
FROM `project.dataset.events_*`
WHERE event_name = 'session_start'
AND (traffic_source.source = '(direct)' OR traffic_source.medium = '(none)')
AND _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAYS))
GROUP BY source, medium, landing_page
ORDER BY sessions DESC;
-- If direct sessions land on /blog/ → dark social
-- If direct sessions land on /checkout/ → untagged email
Fixing UTM Tagging
- Email campaigns: Add utm_source=email, utm_medium=email, utm_campaign= to every link
- WhatsApp/Slack: Use utm_source=whatsapp or utm_source=slack when sharing links
- PDF documents: Tag all URLs with utm_source=pdf, utm_medium=document
- Internal tools: If CRM or internal apps link to your site, tag those URLs

Custom Channel Grouping Rules
In GA4 Admin → Channel Groups, create custom rules to reclassify incorrectly-direct sessions. Example rules: “If source CONTAINS ‘mail’, assign to Email (Untagged)”; “If source = ‘(direct)’ AND landing_page CONTAINS ‘/blog/’, assign to Dark Social”; “If source CONTAINS ‘google’ AND medium = ‘(none)’, assign to Paid Search (No UTM)”.
Realistic Direct Traffic Benchmarks
- Pure e-commerce: 10-20% Direct is normal
- B2B sites: 25-35% Direct is normal
- Content/media sites: 15-30% Direct
- If Direct exceeds 40%: investigate — something is leaking UTMs
Reducing direct traffic inflation is an ongoing process requiring consistent UTM discipline across your entire marketing team. Set up UTM governance policies and audit them quarterly.
Related guides: GA4 Cross-Domain UTM Tracking, GA4 Session Timeout, Google Ads Conversion Lag.
