'GA4 Conversion tracking using Measurement Protocol

[Edited. Added code sample and more explanations]

Is anybody familiar with the GA4 Measurement Protocol?

We are sending events from our backend servers to the server-side GTM container using the GA4 Measurement Protocol. Everything works fine except for conversion tracking. The events marked as conversion are not counted as conversions if we send those via MP (except for the default "purchase" event, it works perfectly). The same event with the same parameters counts as a conversion if we send it from the browser (client-side GTM). As I couldn't find anything about this issue online, the only thing left was to debug parameter by parameter using the server-side GTM preview mode. Here I discovered, that if I send events from the browser, the requests for events I mark as conversions in GA have "&_c=1" in their query string.

That means, as far as I understand it, that in order to get conversion events via MP, the event request needs to have "_c" query string parameter. I tried adding "_c" as an event param, but that didn't work. Is there a designated JSON parameter to mark the event as a conversion?

------------MORE INFO--------------

Here is an example of an event "Experts". This event gets sent from both the client-side and the server. As you can see in the screenshot, this event is marked as a conversion.

"Configure > Conversions" page

As you can see on the second screenshot, the actual events (137) are much more than the conversions detected (48). The difference are exactly the ones sent from the server-side.

"Configure > Events" page

Here is the request body of the server call:

    {
    "client_id":"Z9TLWnyVC2UK4UssPIVk8J+2n5BZhgWLtWSlFYYSwlg=.1642076344",
    "user_id":"119412",
    "events": [{
        "name": "Experts",
        "params": {
            "tenweb_action": "[Test action]",
            "tenweb_info": "[Some more info]",
            "debug_mode":1,
            "page_location": "https://10web.io/[some-test-page]"
            
            }
          }]
      }


Solution 1:[1]

@Jan, @DaImTo, and everyone else that might have this issue in the future.

I think I've found a solution. Although it's unofficial and might break at any moment, it's the best one I've found so far. Here is what I ended up doing. While debugging via GTM preview mode I noticed, that in Event Data tab of conversion events there is an object "x-ga-system_properties", that, among other system variables, contains c:"1" . So I tried adding

            "x-ga-system_properties":{"c":"1"}

to the event parameters JSON that we send to the Measurement Protocol endpoint of our server-side GTM.

IT WORKED. The events sent that way were registered as conversions by GA4.

Would be great to hear your thoughts on this. Do you think it's a stable solution? Do you think there will be official documentation on this from Google?

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Armen Saghatelian