Conversions from Google Ads send via Measurement Protocol (Google Analytics 4) API are not shown on Google Ads as conversions
M

2

7

I have followed the guidelines described on Measurement Protocol (Google Analytics 4) to send purchase events from server.

I have verified that logging of this event works on GA4. I even see source and medium values that come from Google Click ID (GCLID) from Google Ads for purchase conversion.

I have imported this conversion to Google Ads (waited for about a week). I have many conversions logged to Google Analytics 4, but on Google Ads conversions page I get No recent conversions. Let me also add that other conversions from the client are shown, only this from the server.

How can I make it so that events send via Measurement Protocol (Google Analytics 4) API that are shown on GA4 and are show source/medium/campaign values from Google Ads to be shown on Google Ads as conversions?

Perhaps I should change attribution model on Google Ads?

Muskogean answered 21/8, 2022 at 9:36 Comment(0)
T
2

There are a few good ways to debug it. And a likely reason for this to happen.

The likely reason for the conversions not getting to Google Ads are issues with GCLID. MP may be butchering it, so Google can't map it to any of the GCLIDs it has recorded on its side. Therefore, it can't productively attribute the conversions you're trying to feed it.

The fact that you see your conversions nicely in GA4, but not in ads only supports the idea of GCLID tracking malfunction. GA4 doesn't attempt to look too deep into GCLID. It's usually satisfied by having that query parameter set to attribute the traffic to paid. Ads, however, need to read into it.

The two good ways to debug it are:

  • Comparing the network conversion hits in MP to the same hits in the front-end. See how GCLID gets tracked right in the Network. Pay attention to whether it's being truncated. One single character missing from GCLID will make it useless. It's a long string. It's also a base64-like string, which is meant to stay as such.
  • Another approach is to export your data from GA4 to BQ (There are free options and you don't need much there really), then find two conversion hits and compare one to another: one made via front-end, hence being counted in Ads and one being made via MP, hence not being counted in Ads. Then if you don't see any red flags in any of the dimensions, start comparing other hits in the same sessions. See if maybe initial MP pageview is missing, hence breaking the funnel or something akin to that.

Now, I would do both checks in that order. Looking at conversion network requests is just faster. If I still don't see the difference between the calls (which is truly unlikely), I would start investigating all network requests fired on the front-end conversion tracking that include the gclid. See if maybe it lacks a dedicated call into some of its endpoints, but that's quite unlikely given how Google aims to make conversion tracking as painless as possible. It still gives options to offline conversion tracking.

Do the debugging, see if GCLID is malformed in MP. That would be the most likely issue from how it looks.

There's still a chance that something else is malformed like client ids, session ids and such, but you would likely have noticed that in GA4. Or you will definitely notice that when exploring user sessions in BQ.

Trike answered 6/3, 2023 at 5:36 Comment(1)
Unfortunately the issue is that MP GA4 API does not accept a field called gclid, not that gclid value is malformed. It's not even mentioned in the GA4 docs, as it was in old UA docsVarletry
E
0

I was struggling with a similar problem. Traffic source attribution works when I started using the session_id measurement protocol. Unfortunately, this is not mentioned in the general documentation, but it is said here https://developers.google.com/analytics/devguides/collection/protocol/ga4/changelog?hl=ru#2022-05-23

Expostulatory answered 17/9, 2023 at 14:49 Comment(2)
I have tried adding the gclid as a session_id put the data still isn't passed to Google Ads.Creswell
I also confirm that passing session_id to MP solved the issueMuskogean

© 2022 - 2024 — McMap. All rights reserved.