Sprites LogoSprites.ai
CustomersPricing
Sign in
Get a demo
Start 7-day trialโ†’โ†’
Start 7-day trialโ†’โ†’
Sprites LogoSprites.ai
  • Run adsMeta AdsFacebook and Instagram, scaledGoogle AdsSearch, PMax and ShoppingLinkedIn AdsB2B targeting and ABMTikTok AdsShort-form video that convertsReddit AdsReach communities by intentGoal OptimizationHit your ROAS or CPL target
    Create & researchAd GeneratorOn-brand ads for any channelCreative AnalyticsThe hooks and angles that winCompetitor IntelligenceRivals' ads, SEO and AI reachMarket ResearchAudience insight, with sources
    SEO & AI visibilityAI SEO ContentArticles written and publishedAI VisibilityGet cited in AI answersSEO Site AuditPrioritized fixes, site-wideKeyword & Traffic ResearchWhere the searches and gaps are
    Meet SpritesYour AI ads team, on every channelResearches, builds and launches campaigns, then optimizes them daily. You approve every change.Scale the winner +$600/dayApprovePaused 14 wasted keywords+ SEO & AI searchStart 7-day trial
  • By teamStartups & SMBsSenior marketing, no headcountMarketing teamsMore campaigns, same teamAgenciesEvery client, one workspaceEnterpriseApprovals, governance, scale
    By businessB2B & ABMPipeline from target accountsEcommerce & D2CProfitable ROAS at scalePLG SaaSSignups and trials, not clicksMobile appsInstalls that become usersFintechCompliant growth for financeHealthtechCareful, compliant growth
    Helghardt Avenant68% lower CPL in 6 weeksCustomer storyHow Rehive took its ABM playbook back from two agenciesHelghardt Avenant ยท Founder & CEO, RehiveRead the story
  • Ads LibraryReal ads from Meta, Google, LinkedIn, TikTok, Reddit and moreBlogIdeas and playbooks for modern marketingPrompt GalleryReady-to-run prompts for your next campaign
    Free toolsGlossaryReviewsCompare Sprites
  • Customers
  • Pricing
Sign in
Get a demo
Start 7-day trialโ†’โ†’
  1. Home/
  2. Attribution/
  3. utm parameters being stripped

Attribution ยท Sprites diagnoses this

UTM parameters being stripped

When paid traffic shows up as direct in GA4 and PostHog, something between the ad and your analytics tag removed the UTMs. The usual suspect is a redirect that forwards the path but not the query string, followed by a client-side route change that rewrites the URL before the tag reads it. Trace one tagged link hop by hop and you will find it.

Start 7-day trial โ†’Do it by hand

$1 today. Cancel anytime before day 7.

What Sprites checks

5 checks
  • !Paid sessions tagged with UTMs58% in GA4
  • !Direct traffic on ad landing pagesUp 41% since launch
  • !PostHog signups with utm_source1 in 3 missing
  • ?Ad final URLs that redirect2 of 9
  • ?Clicks vs tagged sessionsGap of 31%
Illustration of a typical broken account. Your own readout comes from your account.

Why it happens

A redirect forwards the path only

  1. A redirect forwards the path only

    A 301 or 302 written as a path rule drops everything after the question mark. Vanity URLs, trailing slash rules and http to https hops are the usual culprits.

  2. The app router rewrites the URL on load

    A single-page app, a locale redirect or a login wall that navigates in JavaScript can replace the URL before the analytics tag fires.

  3. The tag loads after the URL changes

    A consent banner or tag manager that loads the tag late reads the cleaned URL, not the one the visitor landed on.

  4. Cross-domain hops without linking

    A checkout or booking tool on another domain starts a new session with no UTMs unless cross-domain measurement is set up.

  5. Malformed UTMs

    A second question mark, an unencoded space or a # before the parameters makes the analytics tag ignore them.

How to line them up, step by step

  1. Click a real ad and keep the trail

    Open your browser developer tools, go to Network, turn on Preserve log, and click through a live ad. Read the URL of every redirect.

  2. Find the first hop without UTMs

    The first response in the chain whose Location header lacks the query string is your break. Fix that redirect rule to pass the query string through.

  3. Check what the tag saw

    In GA4 open Admin, then DebugView, and check page_location on the first page_view includes the UTMs. In PostHog open the Activity tab and check the first $pageview carries utm_source.

  4. Set up cross-domain measurement

    In GA4 go to Admin, then Data streams, then your web stream, then Configure tag settings, then Configure your domains, and add every domain in the journey.

  5. Point ads at the final page

    Set each ad final URL to the page that actually loads, so no redirect sits between the click and the tag.

Steps checked against Google Analytics Help: Collect campaign data with custom URLs; Google Analytics Help: Set up cross-domain measurement; PostHog Docs: UTM segmentation.

Sprites diagnoses this

Sprites diagnoses it

Sprites breaks PostHog and GA4 traffic down by UTM and shows which paid clicks arrive with none.

What Sprites does

  • Breaks PostHog visits and signups down by utm_source and landing page, so paid landing pages with no UTMs stand out.
  • Breaks GA4 sessions down by channel, source and medium, and by landing page, so direct traffic on ad pages is visible.
  • Lists every final URL your Google Ads clicks went to and flags the ones off your domain.
  • Puts ad platform clicks next to tagged sessions for the same days.

What it doesn't do

  • It does not change redirects, routers or tags on your site.
  • It does not rewrite ad URLs or URL parameters.
Start 7-day trial โ†’

Questions

Why is my paid traffic showing as direct?

The visit reached your analytics without UTMs or a click ID. A redirect, a client-side route change or a late-loading tag removed them before the tag read the URL.

Does Safari strip UTM parameters?

No. Safari strips known click IDs like gclid and fbclid in Private Browsing, Mail and Messages, but leaves UTMs alone.

Do redirects always remove UTMs?

No. A redirect keeps them if the rule passes the query string through. Path-only rules are the ones that drop them.

How do I check where UTMs are lost?

Click a tagged link with the browser Network panel recording and Preserve log on. The first redirect whose target URL lacks the parameters is the break.

More: Click IDs, UTMs and models

  • UTM parameters not showing in GA4
  • PostHog UTM tracking
  • gclid missing from your URLs
  • What is fbclid?
  • What is gclid?
  • Multi-touch attribution
  • PostHog vs Google Analytics for paid ads
  • Attribution window
  • Cross-channel attribution
  • Google Ads attribution model
  • Meta ads attribution settings

Hubs

  • Why your tools disagree on conversions
  • Fix your ad account
  • Fix Google Ads problems
  • Fix your Meta ads
  • Fix your LinkedIn ads
  • Fix your Reddit ads
  • Fix Microsoft Ads problems

Reference

  • Attribution, defined
  • PostHog MCP server
  • Google Analytics MCP server
  • Google Ads MCP server
  • Incrementality
  • Marketing mix modeling
  • Ad specs

See where it breaks

Connect your accounts. Sprites reads them side by side and shows you exactly where the numbers split.

Start 7-day trial โ†’Get a demo

Get the free AI-First Marketing Playbook

Packed with proven tactics, creative inspo, and automation tips to help you grow faster with less guesswork.

By clicking send you agree to the Terms and Conditions

Pillars

AI Marketing AgentVibe MarketingAI VisibilityAI Marketing AutomationAI for Meta AdsAI for Google AdsAI for LinkedIn AdsAI SEOAds LibraryChatGPT AdsAI AdsMCP Server

For Teams

For AgenciesFor EcommerceFor FintechFor HealthtechFor EnterpriseFor FreelancersFor Marketing Teams

Prompts Gallery

Marketing Campaign BuilderGoogle Ads Search Campaign BuilderCompetitor Meta Ads AnalyzerSEO Audit + Plan GeneratorGoogle Ads Campaign OptimizerGoogle Ads: PMax Campaign Builder

About

CustomersReviewsBlogTerms of ServicePrivacy PolicyDPACareersSitemap
Sprites TextWizard