Which Traffic Source Is Actually Making You Money?

April 17, 2026
by Cherry Rose

Google Ads claims 40% of your revenue. Facebook claims 35%. TikTok says 15%. They add up to more than 100% — and the true number underneath them all is something different from any of those. GA4 last-click under-reports conversions by 30-50% compared with server-side first-party capture, and every ad platform counts conversions in its own favour. The only attribution signal that doesn’t lie is UTM data captured server-side at purchase time and stored in your own BigQuery — where one query via Claude can tell you which channel is actually making you money.

Why Every Ad Platform Reports a Different Number

Ad platforms don’t lie exactly. They count. But they each count with their own incentive structure, their own attribution window, and their own definition of “conversion.”

  • Google Ads credits itself for any sale within a 30-90 day click or view-through window.
  • Facebook Ads credits itself for any sale within a 7-day click or 1-day view window (or whatever you’ve configured).
  • TikTok, Bing, Pinterest — each applies its own rules to the same customer journey.

If a customer sees a Facebook ad, clicks a Google ad three days later, reads a blog post from an organic search, and finally purchases after a retargeting impression on TikTok — every platform claims credit. Summed, platform-reported totals routinely exceed actual revenue by 2-3x.

Platform-reported ROAS is the least reliable number in marketing — and it’s the number most WooCommerce store owners still make budget decisions from.

Why GA4 Doesn’t Fix This Either

GA4 is supposed to be the neutral arbiter. In practice, it’s a crippled one. Its last-click attribution misses 30-50% of conversions compared with server-side first-party tracking, for three reasons:

  1. Ad blockers: GA4’s JavaScript never loads for roughly 31.5% of global users (Statista, 2024).
  2. Safari ITP: Cookies expire after 7 days, breaking attribution for cross-session journeys.
  3. Consent rejection: In the EU, 40-70% of users reject tracking consent, and GA4 data isn’t captured for them at all.

The result: GA4 sees a narrow slice of reality, weighted heavily toward users on Chrome without blockers who accepted consent. That’s not your whole customer base — and the attribution distortion that creates is invisible until you compare it to something better.

You may be interested in: The Single Source of Truth Problem: Why WooCommerce Stores Have Three Versions of Every Number

What First-Party Server-Side Attribution Actually Captures

First-party attribution works differently. Instead of relying on browser cookies or platform APIs, the UTM parameters on a visitor’s first session are captured on your own server, stored against their customer record, and preserved across sessions indefinitely. When that customer finally purchases — a week, a month, or six months later — the original source is still attached.

Because the capture happens server-side on your own subdomain, it isn’t affected by:

  • Ad blockers — the requests are first-party, not third-party.
  • Safari ITP — first-party cookies have full lifespan.
  • Consent rejection — essential first-party tracking can operate under legitimate interest (GDPR-dependent).
  • Platform lies — your data, your schema, your truth.

First-party UTM captured server-side at purchase time is the most reliable attribution signal available to a WooCommerce operator in 2026.

The Question That Changes Everything: ROAS vs. LTV

Once first-party attribution is in place, the question nobody asks because nobody can answer it suddenly becomes trivially answerable:

“Which of my traffic sources brings customers who buy once and disappear, versus which brings customers who come back?”

The answer is almost always counterintuitive. The channel with the highest first-purchase ROAS is rarely the channel with the highest 90-day LTV. A Facebook interest-targeting campaign might look like a winner on ROAS and turn out to bring low-LTV bargain hunters. A Google branded-search campaign might look weak on ROAS and turn out to bring your most durable repeat customers.

The channel ranked #1 by ROAS is rarely the channel ranked #1 by profit. Budget allocation changes the moment that gap becomes visible.

This is the highest-leverage analytics insight a store can get. It’s also trivially answerable once first-party UTM data is in BigQuery — and it’s essentially impossible without it.

How It Actually Works in Practice

With events flowing correctly into BigQuery, the workflow collapses to this:

  1. Open Claude.
  2. Ask: “From my BigQuery data, rank traffic sources by total revenue, 90-day LTV, and repeat-purchase rate for customers who first purchased between [date] and [date].”
  3. Read the answer.

No SQL, no custom report, no data analyst. One question, one answer, one decision. The same model can follow up with “now filter to customers who spent over $100 on first purchase” or “show the same breakdown for customers who used a discount code” — each a separate question a dashboard could not have anticipated.

You may be interested in: Your WooCommerce Affiliate Program Is Paying Commission on Sales Your Google Ads Already Claimed

The Prerequisite: Getting UTM Data to BigQuery Correctly

All of this breaks if the UTM capture layer is wrong. Client-side-only tracking loses parameters to ad blockers. GTM-based server-side pipelines still depend on browser execution for the first capture and often miss the first-touch source. WooCommerce’s built-in source tracking is incomplete and doesn’t persist across sessions.

Transmute Engine™ is Seresa’s Node.js server that runs first-party on your own subdomain, captures UTM parameters server-side at the moment of session creation, persists them across sessions, and writes a clean customer-to-source mapping to BigQuery in parallel with routing events to GA4, Facebook CAPI, Google Ads, and TikTok. The attribution layer is the product. Once it’s in place, every downstream question — ROAS by source, LTV by source, repeat-purchase rate by source — is a single conversation with your own data.

Key Takeaways

  • Platform-reported ROAS is fiction. Every platform counts in its own favour; summed totals routinely exceed actual revenue by 2-3x.
  • GA4 sees a narrow slice. Ad blockers, Safari ITP, and consent rejection cut 30-50% of conversions from its last-click view.
  • First-party UTM captured server-side is the reliable signal. Your subdomain, your schema, your truth.
  • ROAS winner ≠ LTV winner. The most important attribution insight is invisible until first-party data is clean.
  • One query gets the answer. Once events are in BigQuery, conversational AI like Claude collapses the attribution question to plain English.

Frequently Asked Questions

Why does my Google Ads ROAS look great but profit feels low?

Because Google Ads’ platform-reported ROAS counts every conversion it can plausibly claim — often including sales that would have happened anyway or were actually driven by another channel. Profit reflects reality. When you measure ROAS using your own first-party data joined to actual revenue and LTV, the gap between platform-reported and real performance becomes obvious.

What is the difference between last-click attribution and first-party attribution?

Last-click attribution credits the final referring source before a purchase, as recorded by whichever tool saw it. First-party attribution captures UTM parameters server-side at the moment of purchase, stores them in your own database (typically BigQuery), and lets you attribute revenue, profit, repeat purchases, and LTV to the original source over any time window. It’s more accurate because it’s not dependent on cookies, browsers, or platform honesty.

How do I get Claude to tell me my real best-performing channel?

You need three things: first-party UTM parameters captured server-side at purchase, event data flowing into BigQuery, and Claude connected to that BigQuery instance. Then you can ask in plain English: “Which UTM source had the highest ROAS last quarter? Which had the highest 90-day LTV? Show me the difference.” The answer is one query.

Why does Facebook claim credit for sales that Google also claims?

Because each platform attributes any sale that occurs within its own attribution window — typically 7 to 28 days after a click or view. If a customer saw a Facebook ad, clicked a Google ad, then purchased, both platforms claim credit in their own reports. Summed, platform-reported totals routinely exceed actual revenue by 2-3x. First-party data sees one source of truth.

Do I need to stop using platform reporting?

No — platform reporting is still useful for in-platform optimisation (what the ad algorithm saw and responded to). But you should never use it as your source of truth for budget allocation or profit decisions. Your BigQuery first-party data is the source of truth. Platforms are one input among many.

Stop trusting the platforms. Start trusting your own data at seresa.io.

Share this post
Related posts