What GA4 defaults get wrong for B2B
GA4's default channel groupings use a set of rules to categorize sessions by their source and medium. These rules were designed with a particular traffic mix in mind — one that includes Google Ads, Facebook Ads, organic search, and direct visits. For a consumer e-commerce company, they are a reasonable approximation.
B2B traffic looks different. A substantial share of B2B site visits come from sources the defaults handle poorly: links shared in Slack workspaces (no referrer, lands as Direct), LinkedIn posts and newsletters (often miscategorized or unassigned), internal sales team email follow-ups with missing UTMs (Direct), and social content shared in community forums (Direct or Referral, not Social).
The result is that "Direct" in GA4 for most B2B sites is not people who typed your URL — it is a catch-all for traffic Google cannot attribute. Treating it as such produces meaningfully wrong conclusions about which channels are driving results.
The dark social problem
Dark social is traffic from private channels — Slack, Teams, WhatsApp, email — where the referrer is stripped before the click reaches your site. From GA4's perspective, this traffic arrives with no source information and gets classified as Direct.
For B2B SaaS and professional services companies, dark social is often the largest driver of high-quality traffic. Word-of-mouth recommendations shared in Slack workspaces or forwarded emails convert at high rates because they come with implicit endorsement. But if that traffic is all landing in "Direct," you cannot measure it, optimize for it, or make the case for investing in the communities and content that generate it.
How to identify misattribution in your data
Open GA4's Acquisition report and look at the Direct channel's share of total sessions and conversions. If Direct is driving a disproportionately high share of conversions relative to total sessions — more than 1.5 to 2x its traffic share — you have significant dark social traffic landing in Direct.
Also look at your Unassigned channel. Any sessions in Unassigned represent a failure of either UTM tagging (campaigns that were not properly tagged) or GA4's ability to categorize the traffic. Unassigned converting sessions are particularly problematic — they represent real business outcomes you cannot attribute to any source.
How to build custom channel groupings
Custom channel groupings in GA4 live under Admin → Data Display → Channel Groups. You can create a new channel group with custom rules that override or supplement the defaults. The rules are evaluated in order — the first match wins.
For a typical B2B site, a useful custom channel grouping includes:
- LinkedIn Organic: Source contains "linkedin" AND medium is (none) or referral
- LinkedIn Paid: Source contains "linkedin" AND medium contains "cpc" or "paid"
- Email — Internal: Medium exactly matches "email" AND source contains your company domain
- Email — Newsletter: Medium exactly matches "email" AND UTM campaign contains "newsletter" or "digest"
- Community/Dark Social: Source exactly matches "(direct)" AND medium exactly matches "(none)" AND landing page is NOT your homepage (indicating the visitor knew the exact URL they wanted — often from a shared link)
- Partner Referral: Source matches specific partner domain list
UTM discipline is the foundation
Custom channel groupings can only categorize traffic that arrives with source and medium information. Traffic that arrives without UTM parameters and without a referrer will always land in Direct regardless of how sophisticated your channel groupings are.
The necessary infrastructure: a company-wide UTM naming convention documented and shared with everyone who sends links — marketing, sales, customer success, founders. A UTM builder spreadsheet or tool that enforces the convention. A quarterly audit of UTM usage to catch sources that have slipped back into untagged links.
This is operational discipline more than technical configuration. The technical setup is straightforward; getting consistent UTM usage across a company is the hard part.
What better attribution actually enables
The goal of fixing channel groupings is not perfect attribution — multi-touch B2B buying journeys cannot be perfectly attributed with client-side analytics regardless of how sophisticated your configuration is. The goal is attribution that is accurate enough to make better decisions.
Specifically: knowing whether LinkedIn content is driving site visits, knowing whether your newsletter is producing trial signups, and knowing which channels are contributing to pipeline at each funnel stage. These decisions cannot be made confidently from data where 40% of your conversions sit in an opaque "Direct" bucket.
Want GA4 attribution that reflects your actual traffic?
I set up GA4 with custom channel groupings, UTM governance frameworks, and the event tracking needed to make attribution data useful.
Get a quote