Skip to content
← Back to Blog

Tracking Outside GTM: What 2,000 B2B SaaS Sites Load Independently

47% of B2B SaaS sites with GTM also load tracking scripts independently. 26% run two copies of Google Analytics. Here's the full breakdown of what's loading outside the tag manager.

Tracking Outside GTM: What 2,000 B2B SaaS Sites Load Independently

The tag manager doesn't manage all the tags.

Nearly half the B2B SaaS sites in our dataset load tracking scripts independently of GTM: directly in the page source, through CMS plugins, or via platform integrations that bypass tag management entirely. One in four sites runs two copies of Google Analytics.

This is a companion to our State of GTM in B2B SaaS research, going deeper into the tracking fragmentation data.

What's loading outside GTM

We scanned 2,081 homepages alongside their GTM containers. 977 (47%) had tracking scripts loading independently.

ScriptSitesShare
gtag.js (Google Analytics)54026%
HubSpot36417%
Microsoft Clarity1728%
LinkedIn (lintrk)1718%
Meta Pixel (fbq)1387%
Hotjar1276%
Segment553%
Twitter/X (twq)502%
TikTok (ttq)121%

gtag.js at 26% is the most common. But HubSpot at 17% tells you the most about how tracking fragmentation happens in practice.

The double gtag.js problem

26% of B2B SaaS sites with GTM also load gtag.js directly on the page. Two Google Analytics implementations, running simultaneously.

How this happens

Before September 2023, Google maintained two separate deployment paths: gtag.js for direct implementation (paste this snippet in your HTML) and GTM for tag management (configure everything in the GTM interface). A developer would add the gtag.js snippet to the site template. A marketing team would configure GA4 inside GTM. Both worked. Neither team checked for the other.

In September 2023, Google introduced the Google Tag as a tag type inside GTM, merging the two paths. But the old hardcoded scripts were never removed. Three years later, both are still running on 1 in 4 B2B SaaS sites.

What it produces

Duplicate page views. Two GA4 streams firing page_view on the same page load. Session counts inflate. Bounce rates drop artificially (two events per session means the session registers as engaged even if the visitor left immediately).

Conversion attribution confusion. If both streams track conversions, you get double-counted conversions or misattributed sessions depending on which stream the user's consent applies to.

Consent fragmentation. If a CMP manages consent for GTM, it may not cover the independently loaded gtag.js. One stream respects consent. The other fires unconditionally.

Smaller containers are more likely to double-load

Container sizeDouble gtag rate
1-25 tags40%
26-50 tags26%
51-100 tags17%
101+ tags14%

This inverts the usual pattern. 40% of small containers double-load gtag.js vs only 14% of large ones.

Smaller containers usually indicate less mature measurement setups. A CMS plugin loads gtag.js. Someone sets up GTM. Nobody audits whether Google Analytics is already running. Larger containers, typically managed by dedicated analytics teams or agencies, are more likely to have caught and removed the duplicate.

Containers with double gtag.js actually score higher on average (79.8 vs 75.5) because they're smaller (41 vs 68 mean tags). The double loading is a coordination problem that correlates with simplicity, not complexity.

HubSpot and the parallel tracking stack

17% of GTM sites also load HubSpot's tracking script independently. This is different from the gtag.js pattern because it's often intentional.

HubSpot's CMS deploys its tracking code automatically through the platform integration. It's not someone pasting a snippet; it's the platform itself adding tracking to every page. If the company also uses GTM (common in B2B SaaS), you get two tracking systems running in parallel.

HubSpot appearing alongside GTM is valid when HubSpot is used for form listeners, lead scoring, chat, pop-ups, or CTA tools that depend on its tracking code. It's a problem when HubSpot is also configured as a tag inside GTM (redundant tracking), when the CMP manages consent for GTM but not for HubSpot's independent script, or when two attribution systems are counting the same conversions differently.

74 sites load both HubSpot and gtag.js outside GTM alongside their GTM container: three tracking layers on one website.

The tracking sprawl spectrum

Most sites with tracking outside GTM have one independent script (541 sites). But the long tail is real.

Independent scriptsSites
1541
2293
387
4+56

7% of all GTM pages (143) have 3 or more tracking scripts running outside GTM. These are sites where tracking has accumulated through multiple channels (developer-added snippets, CMS plugins, platform integrations, hardcoded vendor scripts) without anyone consolidating them into the tag manager.

The most common combinations

Tracking outside GTMSites
gtag.js only239
HubSpot only145
HubSpot + gtag.js74
Clarity only46
Hotjar only35
LinkedIn + gtag.js34
Meta Pixel + gtag.js29
Segment only27
Clarity + HubSpot + gtag.js13

The "HubSpot + gtag.js" combination (74 sites) is the archetype: a CMS platform adds its own tracking, a developer or plugin adds Google Analytics, and then someone sets up GTM to manage tags. Three layers, no coordination.

What sites without GTM look like

We separately scanned 934 B2B SaaS sites that don't use GTM.

65% have no detectable client-side tracking at all. Many are developer-focused tools that either don't track or use server-side analytics invisible to page-level scanning.

Among the 35% that do track:

ToolSitesShare of non-GTM
gtag.js (direct)27329%
Zendesk12613%
HubSpot829%
LinkedIn515%
Clarity465%
Segment404%
Hotjar394%
Meta Pixel374%
Intercom273%
Tealium212%
PostHog152%
Amplitude141%
Plausible131%
Adobe Analytics121%

gtag.js loaded directly is the most common non-GTM tracking approach. Zendesk (126 sites) is notable: it's customer support tooling, not analytics, but it runs client-side JavaScript on every page.

The alternative TMS segment

Among non-GTM sites that do track, Segment (40 sites), Tealium (21), and Adobe Analytics (12) represent the alternative tag management segment, appearing on about 8% of non-GTM sites with tracking. Segment is the most common, consistent with its positioning as the CDP/data infrastructure layer for B2B SaaS.

PostHog (15), Amplitude (14), Plausible (13), Matomo (8), and Mixpanel (6) represent the privacy-first and product analytics alternatives. Combined they appear on about 7% of non-GTM sites with tracking. A small but visible segment choosing analytics tools outside the Google ecosystem.

Consent implications of tracking outside GTM

Tracking outside GTM creates a consent coverage question. If a CMP manages consent through GTM's Consent Mode framework, it controls which GTM tags fire. But scripts loading independently of GTM aren't governed by GTM's consent infrastructure.

Enterprise CMPs like OneTrust and TrustArc typically address this by intercepting script loading at the page level, blocking third-party scripts until consent is granted regardless of whether they go through GTM. Simpler CMPs may only manage consent for tags inside GTM.

From our consent analysis: 45% of CMP sites also have tracking outside GTM. By CMP vendor, the rate ranges from 31% (OneTrust) to 67% (CookieYes). Even with consent management in place, nearly half of sites have tracking scripts that may fall outside the CMP's control.

What to check

View source on your homepage. Search for gtag, fbq, lintrk, _hsq, clarity. If any appear in your page source and in your GTM container, you're tracking twice.

Check your CMS plugins. WordPress, HubSpot CMS, and Webflow all have integrations that add tracking scripts to the page. If you also use GTM, audit whether the CMS is adding scripts that GTM already manages.

Audit for the September 2023 consolidation. If your site has been running since before Google merged gtag.js and GTM deployment paths, you may have a legacy gtag.js snippet that nobody removed. Search your site template for googletagmanager.com/gtag/js.

Check consent coverage. If you have a CMP, verify it covers scripts loading outside GTM. Test with browser developer tools: block consent, reload the page, and check whether non-GTM scripts still fire.

Consolidate where possible. Every tracking script outside GTM is a script you can't manage, version, or audit through your tag manager. If it can run through GTM, move it there.

Companion to the State of GTM in B2B SaaS. 2,081 page scans. 1,990 GTM containers. 934 non-GTM sites. April 2026. Scanning engine: TagManifest.

See what's in your setup

Enter your URL for a health score, consent check, and prioritized findings.

Scan Now — Free