Marketing lead and engineer reviewing lead source charts on a Looker Studio dashboard after a server-side tagging fix
Case study · Server-side tagging

Enterprise SaaS: direct attribution fixed with server-side tagging

Server-side tagging and Google Tag Gateway cut the share of CRM leads counted as direct from 53% to 38%, comparing the 2 months before the setup with the 2 months after. Blocked GA4 requests had been stripping the source from paid search and organic leads on their way to the CRM.

Direct share of all CRM leads2 months before vs 2 months after
Before53%
After38%
Change-15 pts

Tracking Audit, Build, then Care1.5 months with the client's web team

The attribution table

Server-side tagging results, channel by channel

The case measured one figure, the direct share of all CRM leads: 53% in the 2 months before the setup and 38% in the 2 months after. The other rows show where those 15 points went and which part of the build moved them.

Enterprise SaaS case: CRM attribution in the 2 months before and the 2 months after server-side tagging and Google Tag Gateway went live
CRM channel2 months before2 months afterWhat moved it
DirectMeasured 53%of all CRM leads 38%of all CRM leads Down 15 points. These are leads whose source now survives the trip from the click to the CRM.
Paid searchMechanism Under-credited. Ad clicks whose GA4 request was blocked arrived in the CRM as direct. Took back most of the 15 pointsPaid search and organic together. The published result does not split them. Google Tag Gateway and the server container. The UTM fallback carries the campaign when the GA4 hit still fails.
Organic searchMechanism Under-credited. Search visits from privacy browsers arrived as direct. Google Tag Gateway. The document referrer fallback names the search engine when nothing else does.
Consent choicesOneTrust Each visitor's OneTrust choice decided which tags could fire. Same banner, categories and rules. Nothing. Consent stayed out of scope on purpose.

Measured: the direct share of all CRM leads across the two windows. The paid search, organic and consent rows describe what changed in the setup; they were not measured one by one.

Trace one lead through the old and the new setup

Pick a path. Each lane follows the same lead from the click to its CRM record.

Illustrative mechanism

BeforeTags requested from a Google domain

  1. Ad clickgclid and UTM parameters in the landing URL
  2. GA4 requestSent to a Google domain and blocked
  3. Form submitNo source travels with the lead
  4. CRM recordDirect

AfterTags served from the site's own domain

  1. Ad clickSame URL, same parameters
  2. Google tagLoads from the site's own domain
  3. Server containerForwards the hit to GA4, with the UTM fallback beside it
  4. CRM recordPaid search

This path is why paid search looked weaker than it was. The repair sits at step two, where the request now stays first-party.

Limits

What the 53% to 38% result does not claim

A share of direct leads is easy to over-read. These are the edges of this one.

Metric
Share of all CRM leads counted as direct
Window
2 months before vs 2 months after the server-side setup
Change
53% to 38%, down 15 points
Outside it
The split by channel, and how much of the remaining 38% is true direct
Will server-side tagging recover every lost lead source?
No. It recovers sources lost to blocked requests, and the UTM and document referrer fallbacks catch part of what still slips through. In this project the direct share fell from 53% to 38% and stopped there, because some leads are direct for real and some still arrive with no source attached.
Does server-side tagging bypass cookie consent?
No. Server-side tagging changes where tags load from and where hits are processed. It does not change what a visitor agreed to. Here the OneTrust banner, categories and rules stayed exactly as they were, and the same visitor choices decided which tags could fire before and after the work.
Is the remaining 38% all tracking loss?
Not necessarily. Typed URLs, bookmarks and links opened from apps that strip the referrer are direct for real, and a correct setup leaves them there. The published result covers the direct share of all CRM leads. It does not split the remaining 38% into true direct and leads that still lost their source.
How long did this server-side tagging project take?
The server-side work took 1.5 months with the client's web team, covering Google Tag Gateway, the server container and both fallbacks. A Tracking Audit set the scope beforehand. The 2-month after window began once the setup was live, and the client has stayed on Tracking Care as a monthly retainer since.
The cause

Why did 53% of leads look like direct traffic?

A lead keeps its channel only when the source survives three hand-offs on the way to the CRM. Here the GA4 hit was the weak link. Ad blockers and privacy browsers stopped it, and any lead that reached the CRM without a source was filed as direct.

  1. 1

    The click

    Carries
    gclid and UTM parameters on paid visits, the referrer on organic ones
    Breaks when
    Redirects or link shorteners drop the parameters

    Feeds the UTM and referrer fallbacks

  2. 2Main leak in this case

    The GA4 hit

    Carries
    The session source GA4 attaches to the visit
    Breaks when
    An ad blocker or privacy browser blocks the request to a Google domain

    Repaired by Google Tag Gateway

  3. 3

    The form submit

    Carries
    Whatever source the page still holds when the lead is sent
    Breaks when
    The GA4 hit failed and nothing else on the page recorded the source

    Where both fallbacks attach the source

  4. The CRM record

    A lead that arrives with no source attached is counted as direct. Nothing downstream can put the channel back.

What it cost

Paid search and organic looked weaker than they were, and budget decisions were being made on those numbers.

28-41%

of CRM form leads arrive with no GA4 client ID across Waftr client audits. The audits pass the client ID into the CRM as a hidden field on each form submit, then count the records that land without one. Ad blockers and Reject All are the two main causes.

The build

How it was built: four server-side tagging changes in 1.5 months

A Tracking Audit set the scope first. Four changes then went live with the client's web team, and one part of the stack was left exactly as it was.

Where each part sitsFrom the visitor's browser to the CRM
  1. BrowserOneTrust banner, unchanged
  2. 01Google Tag GatewayTags served from the site's own domain
  3. 02Server containerOwned by the client
  4. GA4Session keeps its source
  5. CRMLead arrives with its channel
03UTM fallback04Document referrer fallbackRun beside the main path and carry the source straight to the lead when the GA4 hit does not arrive
Engineer configuring a server-side Google Tag Manager container, with a data flow from website to server to GA4
  1. 01
    Google Tag Gateway

    Google tags load from the client's domain instead of a Google domain, and ad blockers and privacy browsers stop those first-party requests less often.

  2. 02
    Server-side tagging

    Hits pass through a server container the client owns before they reach GA4.

  3. 03
    UTM fallback

    Paid traffic keeps its UTM parameters with the lead.

  4. 04
    Document referrer fallback

    Organic visits keep the search engine as their source.

  5. Left alone: OneTrust

    Banner, categories and rules unchanged. The project moved where tags load from and left the consent decision with the visitor.

  1. Tracking AuditSet the scope
  2. Tracking Build1.5 months with the web team
  3. Tracking CareMonthly retainer today

“Waftr listened to every team, from marketing operations to web operations, and found the right place to crack our attribution issues. We rely on them completely and work with them on a monthly retainer.”

IT DirectorEnterprise SaaS company (name withheld)
Your next step

Measure your direct share before you change anything

One CRM export gives you the number this case moved, and one test lead shows whether the same leak is open on your site.

  1. 1

    Export 2 months of CRM leads with their source field.

  2. 2

    Count the leads marked direct or left empty, as a share of all leads.

  3. 3

    Open your site from a link with UTM parameters, switch an ad blocker on and submit one test lead. If it lands as direct, you have the leak from the paid search row.

Send us your direct share

Add the share and your site, and we will point to the rows of the table that look broken on your setup.

What happens next: a reply within one business day naming the first check we would run.

Add your name.
That email address looks incomplete.