Resolving GA4 Google Ads attribution data in Pipeline

Last updated on November 13th, 2022 at 06:24 pm

GA4 attributing an enormous amount of conversions, mostly from paid traffic, to the direct acquisition channel, consequentially breaking our Google Ads Goals Tracking, relying on GA4 Conversion data.

Case assessment: GA4 Google Ads attribution problems in cross subdomain tracking

We have started migrating to GA4 our customers and all of our properties fairly early when the retirement of Universal Analytics was announced in mid 2022. Actually a good part of our UA accounts have been migrated to GA4 right away when the platform was released, and only when we all learnt about the mandatory switch to Google Analytics 4, have we started studying the Data Model and a correct pathway to successfully porting UA accounts to GA4, while enriching data collection.

By default, we always used to import Universal Analytics Transaction data do Google Ads, especially in the case I’m about to cover in this issue documentation. The client is a large organization which has a large part of its business coming through e-commerce.

68% of the revenue is generated by the paid search channel.

So, with the doom of Universal Analytics at our doors (and the customer refusing to pass to Server Side Tracking, at the moment), we wanted to import GA4 Purchase data into Google Ads and gradually, after a testing period on a campaign or two, when we were confident with the results and data, to move all of the conversion trough GA4 on the account.

The purchase journey

It’s important to state how the traffic moves between different websites for this specific configuration. We have 2 different websites involved in the purchase journey:

  • website.it : the actual e-commerce where the purchase happens and the products sit
  • promo.website.it : the paid traffic acquisition channel, where we have non-indexed landing pages, differentiated per search intent, keyword, and what not; plus, it helps us keep the traffic on the main website “clean” from all the high bounce rate traffic typical of paid traffic.

So, the traffic moves this way: Google Ads -> Promo Site -> .it website

Initially it seemed to me that the data was correct; after all, we have been monitoring the revenue and events between the two platforms (Universal Analytics and Google Analytics 4) in the past moths, and we have verified that the amount of transaction data and revenue data (what we care about, right now, for this case study) were correct.

Yet, yesterday I was checking at how the campaign was going, and I have noticed an extremely poor conversion rate, and only 10 sales generated trough the campaign in one month (which is extremely unusual for these campaigns). So I went to GA4 to match this conversion data with both standard reports and explorations, and I’ve noticed something even stranger.

In GA4, we had double the sales attributed to that campaign; still unlikely, because we normally generate hundreds of sales per month with one campaign, but yet, a different result from the one reported in Google Ads. So now we had three problems:

  • Broken Google Ads reporting of transactions?
  • Broken Google Analytics reporting of transactions?
  • Broken Google Analytics attribution data?
  • Or all of the three, maybe?

Google Ads Conversion Data (GA4 native)

So, here are two screenshots. The top one shows the campaign performance (Google Ads reported) before we switched to the GA4 Purchase event conversion.

google ads conversions attribution without GA4 tracking, showing 405 conversions in one month
google ads conversions attribution without GA4 tracking, showing 405 conversions in one month
google ads conversions attribution with GA4 tracking, showing 10 conversions in one month
google ads conversions attribution with GA4 tracking, showing 10 conversions in one month

As you can see, on an average month, we would get roughly 405 conversions with this campaign, on this budget. Yet, in a month tracked with GA4, only 10 conversions were attributed, with a considered slowdown in spend as a result, being the campaign in a Target CPA state.

Google Analytics 4 Conversion Data

The first thing I did was going and verify if Google Ads was reporting the same conversions attributed to its channel in GA4. Much to my surprise, both with the standard reporting and both with a custom exploration, I’ve analyzed a completely different snapshot. In short:

Both the Report and the Exploration show 24 purchases in the set time-frame, for the specified campaign.

GA4 screenshot showing the default attribution to the google ads campaign of the conversions
Traffic Acquisition report in GA4 shows 24 purchases attributed to the campaign, against the 10 reported in Google Ads

The result: I found myself even more confused by not only unreliable conversion data on Google Ads, but moreover different and still unreliable conversion data on Google Analytics.

The next step of my debug, has been to go and verify attribution settings and confronting attribution models between the platforms.

Google Analytics 4 Attribution Data and Settings

I went and check the attribution setting in Google Analytics 4, to make sure it matched the attribution settings in Google Ads. De facto, it was matching. Both platforms were using Google’s Data Driven Attribution method.

So, the problem wasn’t on the attribution level, right? Think again. The problem is exactly related to attribution. Digging deeper into a standard report for Traffic Acquisition intel, I found out an enormous amount of revenue based traffic being attributed to “direct/none”. How did this happen?

Broken Attribution for Paid Advertising in GA4

Screenshot showing lots of GA4 Ecommerce attribution data set to the direct channel
As you can see, an enormous amount of revenue was attributed to the direct / none Source and Medium, which is not normal at all for our Data Quality standards.

This situation gave me the first clear hint about where the problem was sitting; initially I thought at a misconfigured cookie setting in GA4, but first of all I wanted to check the data in Universal Analytics, which is the platform we have always used, and that we are using for all the other campaigns, and which is returning correct attribution.

Here’s a clear indication of why, as we will explain further later, Cross Site + Master Tracking Scheme is beneficial. Without it, we couldn’t have so easily nailed down the problem.

Comparing Universal Analytics and Google Analytics 4 Ecommerce Data

So, I went and check the Google Analytics Property that is passing the “old” purchase data to Google Ads, and right away I have noticed two things: first of all, the major part of the revenue attributed in GA4 to direct/none, is actually to attribute to Paid Search, as expected.

Screenshot showing the correct distribution of revenue amongst the channels, with a major part of the revenue attributed to paid search
The situation is almost inverted in Universal Analytics, on the MASTER Property; this is a much better report giving us a clearer attribution distribution of revenue.

The second thing I’ve noticed, and that’s the solution to the problem (or, part of the answer), is that we were using a MASTER Property to pass data to Google Ads.

In fact, confronting then the data with the purchase website Property (the one on website.it, which doesn’t include promo.website.it), we have the same situation as in GA4.

Screenshot showing the same situation in UA that was noticed in GA4 with broken attribution for the paid search channel
As you can see, the situation in the granular Property for the purchase website is almost the same than on GA4 (on GA4 the dev team has messed up a few days adding another website’s tracking to the Italian one, resulting in a slightly inflated revenue).

What is a MASTER Property and what is the difference to a Standard Property? Let’s explain this in the following sections.

Troubleshooting GA4 Configuration

So what happened? In our configuration for this client, we are leveraging the tracking scheme with both the available approaches when configuring properties (both in GA4 and UA). Normally you have two options:

  • Option A: One property installed on all of your websites (be it cross subdomain tracking, or actual cross domain tracking).
  • Option B: One property for each website, and a MASTER property installed on all the websites needing cross domain tracking.

In the case of this customer, we have implemented both the solutions, while also implementing double tracking (or side-by-side tracking) to keep Universal Analytics going as long as possible, while we collect and correct data on GA4.

This is up to date the most solid configuration I feel confident working with, and yet due to its complexity, prone to mishaps.

Cross Site + Master Tracking

What is Cross site plus Master Tracking?

Both the techniques described before come with shortcomings and pitfalls. It’s difficult sometimes to decide which approach is better.

Standard Multisite Tracking Features

Option A is simpler and more elegant; one tag on all of your websites, and Cross Domain tracking enabled if needed. This is great for the speediness but here are the pros and cons resumed:

Supports:

  • Search Console Linker
  • Granular Data Control (if you don’t activate Google Signals)
  • Complete data (if you don’t activate Google Signals)

Can’t have:

  • Cross Domain Tracking
  • Cross subdomain Tracking
Cross Site Tracking Features

Option B is surely “messy” looking if you have a lot of websites to track, but with some naming convention and ruling in place, you’ll unlock much more freedom both in Data Analysis and in Data Processing.

Supports:

  • Cross Domain Tracking
  • Cross Subdomain Tracking
  • Sampled data (because we activate Google Signals)

Can’t have:

  • Search Console Linker (because it tracks multiple websites and domains)
  • Granular Data control
  • Complete data
Benefits of using Cross Site + Master Tracking in UA and GA4

First of all, as stated above, when choosing your implementation, you run several pitfalls and choices to make:

  • Do I want all the data, or capped data?
  • Based on this, how important is to activate Google Signals?
  • What use am I going to make of this property? Am I going to use it more for analysis or more for passing data and machine learning to other platforms?
  • Is your traffic moving amongst domains you own? Is it moving across subdomains?

Eventually, every choice you make will affect the platform. In fact, not many know this:

Here is the link at the original post by Charles Farina on LinkedIn

So, this means that:

  • Enabling Google Signals on a Property will result in capped data for that Property
  • Google Signal is vital to deliver better machine learning and user recognition to the connected platforms (EG, Google Ads).
  • The best idea is to have Cross Site Tracking in place, and not to activate google signals on the granular Properties. You’ll use these properties for accurate on site analysis.
    • Contextually, you can have n-more properties with Google Signals activated, or, much more elegantly, have one MASTER Property in which you track user behavior across sites, connecting it to Google Signals, and advertising platforms.

The Solution

Clearly, the problem was caused by this situation:

We started implementing GA4 site by site, and we started from the website.it one, because once created the proper tagging and event configurations for that main website, it would have been much easier to configure GA4 on the other properties.

But, when we were sure that the ecommerce tracking per se was working correctly, we didn’t consider that for the attribution to be considering the landing website, which is promo.website.it, we had to use the MASTER Property, not the granular one, to pass data to Google Ads.

This way, Google Ads can recognize the session moving between website 1 and website 2, without losing attribution (that for this reason, went to direct. If the acquisition website wasn’t a subdomain, revenue data would have been attributed to “referral” channel – and would have made this debug even quicker -).

Conversions Comparison: GA4 vs Google Ads vs GA4 MASTER

Here is a direct comparison, for the same campaign, of how the conversions were tracked; remember, these conversions are all the same action, just implemented through different paths.

  • GA4: Imported from a GA4 stream installed on the purchase action website -> 4 conversions
  • GA4 MASTER: Imported from a GA4 stream installed on all the websites -> 22,5 conversions
  • Google Tag: Google Ads conversion tracking, on the purchase action website -> 24,5 conversions
Table comparing 3 different conversion implementations and their result for the same action and time frame. Google Tag wins.

Clearly the debug was a success, and yet, there’s still something to learn; Google Tag (Google Ads conversion tracking installed on the purchase page, with Google Tag Manager and conversion linker enabled) reported 2,5 more conversions than GA4 MASTER.

It seems to me that this conversion tag is the most reliable model, while of course the direct GA4 conversion tracking, when the same GA4 tag is not placed on all the websites the user goes trough, is definitely a conversion action to trash.

Final thoughts:

Many today say that GA4 automatically tracks subdomain, and that’s true, as long as you play along its rules: in the case you have the same tracking code (that is, data stream and measurement id) on all of your subdomains, then sure, GA4 automatically tracks subdomains… just like Universal Analytics did.

But, if you are using the Cross Site + MASTER technique, then you need to use the MASTER signals to have correct attribution.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.