Conversion tracking setup for Plexus RS

The client, a talent agency based in London, was preparing to launch Google Ads. A fellow freelancer working with them referred the client to me as a GTM expert. Additionally, the client wanted to stay on top of all the inquiries they received by setting up a custom report in GA4.

This implementation was fairly simple, but has its own peculiar details, which is why I have it posted on my website.

Here are the key details about this project:

  • The website is running on WordPress.
  • Contact forms are powered by the Contact Form 7 plugin.
  • The client is from the UK, so they have a Cookie Management Platform.

Usually, when it comes to tracking the CF7 forms, it’s not a challenge. There are two viable solutions for that:

  1. Use a custom JS listener.
  2. Use the GTM4WP plugin.

I went with the second option, as this very plugin is also used for placing the GTM script, and, what is more important, GTM4WP sends the value of the form fields, which we are using for some of our GTM variables.

Implementation

Initially, the client had a CookieYes script hard-coded in the WordPress template files. So I began by removing the script from there and installing it using a corresponding tag in Google Tag Manager. In my experience, when CMP is installed directly, bypassing GTM, the consent mode doesn’t work properly.

The tags section is extremely concise, as you can see:

The key part is our variables section:

Constant variables

I have two constant variables: one for Google Ads conversion ID and one for GA4 stream ID.

Data layer variables

I’m using another couple of data layer variables:

  • DLV – cf7_form_id
  • DLV – cf7_department_selector

DLV – cf7_form_id

This variable stores the formid variable, pushed to the data layer by GTM4WP. I use it in a lookup table (see the next section).

DLV – cf7_department_selector

This variable stores the value of the first input, which is used in one of the forms on the website. It’s also used in another lookup table.

Lookup table variables

LT variables are what enabled a quite lean tag section in this container. Here’s what I’m using:

  • LT – form_name
  • LT – department_selector
  • LT – GAds – Conversion Labels 1 (form_name)
  • LT – GAds – Conversion Labels 2 (department_selector)

LT – form_name

I have this lookup table variable to have a form name at my disposal. Depending on the value of the DLV - cf7_form_id, the corresponding form name is inserted. The value of this lookup table variable is sent to GA4 as a custom parameter.

LT – department_selector

This variable is needed to set the other GA4 custom event parameter to “n/a” for the other forms submissions, where there is no department selector dropdown. Otherwise, if I used DLV - cf7_department_selector, it would have inserted the value of the first input of the form, which wouldn’t make sense for the forms without that dropdown.

LT – GAds – Conversion Labels 1 & 2

These lookup table variables store the Google Ads conversion labels, which enable having only a single Google Ads conversion tracking tag that powers five conversion actions.

Tags

As I mentioned, the tag setup is quite lean. Since I have pretty much the main things configured on the variable level, it was sufficient to have only one event tag each for Google Ads and GA4:

And since I’m using a custom event parameter, to make it available in GA4 reports, I’ve created two custom definitions: department_selector and form_name:

Results

After the implementation part was done and everything was tested, the client requested a report to stay on top of key events. Since I have all those variables in place, it is fairly easy to separate form by type now. I came up with a three-page custom report in Google Analytics:

And here’s how Google Ads conversion view looks like in the account: