Easy methods to Keep away from Duplicate Conversions and Recreating the Conversion Funnel for GA4

The writer’s views are fully his or her personal (excluding the unlikely occasion of hypnosis) and will not at all times mirror the views of Moz.
As you’re most likely all too conscious at this level, GA4 is coming. Outdated variations of Google Analytics will probably be switched off for just about everybody come June 2023.
Whereas GA4 is enhancing on a regular basis, there are fairly just a few issues that individuals are used to seeing in outdated variations of Analytics which, on the very least, take a little bit of creativity within the new world.
One instance is how conversions are dealt with. Within the outdated variations of Google Analytics, a conversion might solely hearth as soon as per session. In GA4 conversions are simply one other type of occasion, so it’s attainable for a conversion to fireplace a number of occasions in a single session.
Downside is, you could be very if somebody indicators up through your contact-us kind as soon as. However that particular person may reload the thank-you web page, or join one thing else through a distinct kind on the positioning. That doesn’t imply you essentially need to observe two conversions.
Talking of signing up through totally different types, on some web sites, customers could wind up on the identical thank-you web page having taken very totally different routes to get there. If we don’t have that a lot management, and we’re having to depend on thank-you web page views to trace conversions, it may be exhausting for us to separate out totally different varieties of conversions.
In outdated variations of GA you may use funnels with a “required” step. You may need one aim with a funnel requiring your occasion web page, one other aim with a funnel requiring a distinct web page, and depend on them to offer you totally different conversions. There additionally isn’t an apparent approach to do that in GA4.
On this submit, I’m going to take you thru the right way to:
-
Keep away from double counting in GA4.
-
Routinely ignore suspicious conversions (like individuals touchdown direct on the conversion web page).
-
Recreate the type of funnels we anticipated in Common Analytics (in actual fact we’ll make them higher).
I’ll take you thru just a few bits in GA4 and others utilizing Google Tag Supervisor. The GA4 strategy is extra easy, however the Tag Supervisor is extra sturdy and can assist you guarantee that all of your conversion pixels are displaying roughly the identical info (as a result of we’re gone the purpose the place GA is the one place we’re recording conversions).
Managing conversions in GA4
This part is about modifications we are able to make purely by the GA4 interface. So long as you’re sending your web page views conversion occasions to GA4 it’s best to have the ability to use these techniques with none code modifications.
Nonetheless: There are some limitations of doing issues by GA4, for instance it could imply that your GA knowledge doesn’t line up with conversions recorded through different platforms.
Avoiding double-counting
Julius Fedorovicius (of Analytics Mania fame) has produced a fantastic guide to making sure that conversions are only recorded once per session.
It’s best to have a learn however broadly:
-
You create a customized viewers based mostly on a sequence that begins with “session_start”
-
You hearth an occasion when somebody enters that viewers
-
You utilize that occasion as your conversion.
No shock that Julius has provide you with a very sensible approach to deal with the issue of double-counting:
For those who’ve created Segments in Common Analytics Viewers sequences in GA4 look very just like the sequences we used to create for Segments. Nonetheless, the outdated Segments have been only a approach of visualizing knowledge, whereas Audiences in GA4 are a approach of grouping knowledge. We will use Audiences to create one thing new.
That distinction is vital as a result of we are able to do cool issues like hearth customized occasions when somebody enters an viewers (which Julius makes use of on this answer).
Common Analytics Phase sequence creator
GA4 Viewers sequence creator
The restrictions of utilizing Google Analytics audiences
This isn’t actually a limitation so far as GA goes but it surely’s a consideration nonetheless. Julius’ answer is nice for ensuring we’re not double-counting conversions in GA, however GA most likely isn’t the one approach we’re recording conversions.
The common web site most likely has a bunch of separate conversion monitoring pixels and people might find yourself double-counting conversions.
For instance: Facebook and Google each describe how they keep away from double-counting conversions, however their options largely depend on precisely matching transaction IDs, and even when they’re dealing with it okay, there’s a bunch of smaller fish on the market which might be additionally providing conversion monitoring and might want a bit extra hand-holding.
If we need to guarantee that we’re solely recording one conversion per session, it’s helpful to ensure all of our conversion monitoring is working in the same approach. Tag Supervisor is a superb answer for that (I describe an answer within the Tag Supervisor part under).
You too can run into issues if, for instance, your affirmation web page is someway listed or bookmarked by customers — individuals touchdown instantly on it could result in bizarre sudden conversions. We will additionally use Tag Supervisor to protect towards that just a little bit.
Recreating the conversion funnel
Sticking with the GA4 interface for now, we are able to additionally adapt the AnalyticsMania strategy to create our funnel-based conversions too by including further steps to the sequence.
For what it’s price, conversion funnels are not the perfect approach to categorize conversions. If you should utilize something extra direct (just like the id of the shape they’ve stuffed out, a separate thank-you web page) then that’s a a lot extra dependable approach to categorize conversions. That stated, we don’t reside in an ideal world, and generally there isn’t the choice to fully rebuild your conversion course of.
In Fedorovicius’ instance we simply have two steps in our viewers sequence:
-
Session_start
Not directly adopted by -
Conversion
Which mainly means “somebody lands on the positioning after which at any level throughout their session, they convert”.
To recreate the aim funnels you could be utilizing in Common Analytics – we are able to simply add one other step to the sequence. As an illustration:
-
Session_start
Not directly adopted by -
Visiting our event_page
Not directly adopted by -
Touchdown on our thanks web page/changing
That ought to imply we are able to create one conversion which is: Customers who went by our occasion web page after which transformed.
And one other conversion which is: Customers who went by our sponsorship web page after which transformed.
There are some limitations right here although, for instance, what if somebody:
-
Landed on the positioning
-
Visited our occasion web page
-
Then visited our sponsorship web page
-
Transformed utilizing the shape on both.
They might fulfill the factors for our occasion conversion and the factors for our sponsorship conversion. We’d document a conversion for every and we’d find yourself double-counting in spite of everything.
That is additionally a limitation of the outdated Common Analytics funnels: Simply because a step within the funnel was required doesn’t imply the consumer can’t get lost across the web site between that step and their ultimate conversion. So, if it’s any comfort, this isn’t any worse than outdated Common Analytics funnels (however we are able to nonetheless do higher).
The issue with utilizing “instantly adopted by”
You may say “effectively that’s simply solved — for the time being the sequence says is not directly adopted by and we are able to simply change that to is instantly adopted by”.
Absolutely that might imply that somebody is on the sponsorship web page and goes instantly from the sponsorship web page to the thanks web page, proper?
Sadly that’s normally not what “instantly adopted by” means as a result of there’s every kind of issues that may get recorded in analytics which aren’t web page views.
For instance if somebody lands on the sponsorship web page, after which scrolls down and lands on the thanks web page, the thanks web page view doesn’t instantly comply with the sponsorship web page view. It goes:
-
Web page view: sponsorship
-
Scroll
-
Web page view: thanks
So “instantly adopted by” isn’t a straightforward answer.
How about “inside x minutes”?
GA4 has a very cool function within the sequence builder the place we are able to set a timer in-between steps. Even exterior of monitoring conversions inside a session we are able to use it to maintain observe of cool issues like individuals who got here to our web site, didn’t convert that point, however got here again and transformed throughout the subsequent couple days.
Jill Quick has been speaking a bunch about how highly effective these choices are.
We might use this to say one thing like: particular person landed on our occasion web page after which landed on our thanks web page inside 10 minutes.
However as I’m positive you’ve guessed, that finally ends up being a type of arbitrary minimize off, perhaps somebody spends a while serious about the right way to fill out our kind, or perhaps somebody actually rapidly goes to one among our different pages and converts there. This might be higher than the essential funnel, however we might additionally find yourself ignoring fully reliable conversions.
So what can we do?
Utilizing GA4 sequences for that is type of effective, as I say above it’s definitely not worse than Common Analytics, however we might do higher with Google Tag Supervisor.
Managing conversions in Google Tag Supervisor
These approaches require you to run all of your monitoring through Tag Supervisor. Although even apart
from this, when you’re not already utilizing Tag Supervisor, I’d advise you to look into it!
Since we have to hold observe of what’s occurred to a consumer throughout a number of pages, these options are additionally going to utilize cookies. In case that fills you with dread, don’t fear:
-
I’m going to stroll you thru the right way to create and delete these cookies (it takes just a little Javascript but it surely’s copy-paste and simpler than you assume!)
-
These aren’t the sorts of cookies designed to offer away individuals’s info to different companies.
To reiterate what I say above: Whereas this strategy takes a bit extra effort than simply doing issues by Google Analytics it permits us to do two issues:
-
Ensure that all of our varied monitoring tags are firing in the identical approach
-
Have extra effective grained management, significantly if we’re attempting to classify totally different paths to conversion.
Avoiding double-counting
To recap what we need to do right here, we need to guarantee that if somebody visits our web site and converts we hearth a conversion. Nonetheless, in the event that they revisit a thanks web page, or undergo a distinct conversion, we don’t hearth a second conversion that session.
To do this, we’re going to:
-
Set a cookie when a consumer converts.
-
Guarantee that the cookie robotically disappears after half-hour of inactivity (this is the default timeout for GA4 sessions however when you assume that’s too quick you may set it to no matter you need).
-
Each time we go to fireplace a conversion, verify if that cookie is current and, whether it is, don’t hearth the conversion.
That ought to imply that if somebody involves our web site and converts, we’ll set the cookie, and that can cease us from firing any extra conversions (GA4 or in any other case) till the consumer has taken just a little time away from the positioning.
Setting a cookie in JavaScript
The very first thing it’s essential know is that we are able to use Tag Supervisor to run any JavaScript we would like. The second factor to know is that we are able to use JavaScript to set cookies.
So first: Go to Google Tag Supervisor, create a brand new Tag and choose the Customized HTML sort
Give the tag the identify “[Tag] setCookieConverted” and within the html content material paste:
<script>
// Get time half-hour from now (it’s because the default GA session day out
// is half an hour and we would like our cookie timeout to match)
var minutesToAdd = 30
var currentTime = new Date(); // Get present time
var newDateObj = new Date(currentTime.getTime() + minutesToAdd*60000); // Add our minutes on
// Set the area your’re engaged on, it’s because we would like our cookies to be
// accessible in subdomains (like check.instance.com) if wanted
var yourDomain = “instance.com”
// Set a cookie known as ‘transformed’ with the worth being ‘true’ which expires in half-hour
doc.cookie = “transformed=true; path=/; area=”+yourDomain+”; expires=”+newDateObj+”;”
</script>
It ought to seem like this:
The customized HTML tag will add the content material there to the web page, and as quickly because the web page detects a brand new script (the one we’ve written) it’ll run that script.
What our script does is:
-
It finds the present time, and what time it’ll be in half an hour.
-
It makes use of that, and your area, to set a cookie known as “transformed” which could be learn by any web page in your web site.
While you go to avoid wasting your tag it’ll most likely say “No Triggers Chosen”.
For now we’re going to click on “Add set off” and select the “All Pages” set off.
That is purely in order that whereas we’re placing this collectively we are able to simply check it..
Studying our cookie worth
Tag Supervisor has a built-in approach to learn cookie values utilizing variables. So go to the variables part, create a brand new variable known as “convertedCookie” and set the Cookie Title as “transformed”.
Now, when you click on the “Preview” button and open up your web site we are able to begin to have a look at what worth the convertedCookie variable pulls by for you.
Click on into the “Variables” tab and it’s best to see convertedCookie someplace within the checklist. Right here’s an instance with different cookies blocked out so you understand what to search for.
So now we are able to use the worth of that variable in Tag Supervisor as a part of our logic.
Utilizing conversion cookie in our conversion logic
Everybody’s conversion setup would be the totally different so this may not match what you’re doing precisely however when you’re contemplating utilizing GTM I’m assuming you might be firing conversions one thing like this:
-
You will have a set off based mostly on some situation (most likely both a customized occasion or a pageview)
-
You will have a tag (or a number of tags) that ship your conversion info every time that set off is activated.
What we’re going to do is tweak your set off so as to add one other situation.
Think about that your set off was beforehand firing on each thank-you web page go to:
What we’re going to do is add a second situation to the set off:
convertedCookie doesn’t include true
Whereas this instance makes use of the thanks web page path, it doesn’t must, it may be something.
When you make this alteration, you may go and check your conversion. As a result of you’ve gotten one other tag including the transformed cookie on every web page view, your conversion shouldn’t hearth when it usually would.
Now we simply want to alter our transformed cookie in order that it solely seems after somebody has transformed.
In the intervening time we’re setting the “transformed” cookie on each web page view, so we’ll by no means get any conversions.
We have to replace that so:
-
We set a cookie when somebody converts.
-
Each time we load a web page, if the particular person is marked as “transformed” we reset the cookie (I‘ll clarify).
Setting a cookie solely when somebody has transformed
First: we have to take away the set off from [Tag] setCookieConverted so it doesn’t hearth in any respect.
Then we go to no matter tag we’re utilizing to ship our conversion, open up “Superior Settings”, click on “Tag Sequencing” and choose “Fireplace a tag after”.
Then we choose our setCookieConverted tag and verify “Don’t hearth if conversion tag fails”.
This could imply that every time we ship our conversion, we’ll robotically then activate our cookie tag and mark the consumer as transformed.
So now our logic is:
-
If somebody converts, we verify if there’s a cookie saying they not too long ago transformed already.
-
In the event that they don’t have that cookie we ship a conversion.
-
Then we robotically set that cookie.
To check this, you may both clear the cookie or await it to run out. Here are instructions for how to clear cookies in Google Chrome (which you’re most likely utilizing when you’re working with tag supervisor).
Now, when you acquired into GTM preview and click on round it’s best to have the ability to take a look at your variables and see that convertedCookie is again to being ‘undefined’.
For those who convert, it’s best to see that each tags hearth — your conversion tag and your setCookieConverted tag.
However when you convert once more (reload the web page, re-fill the shape, no matter you’ve acquired to do) it’s best to see that neither tag fires.
Congratulations! You’re filtering your conversions to keep away from recording a conversion greater than as soon as for somebody in a 30 minute window.
We simply need to make one final tweak now.
Refreshing the cookie if it has been set
Our cookie has a 30 minute expiration. Which means it’ll stick round for half-hour after which robotically be deleted from the browser. However what if somebody hangs round on our web site for greater than half an hour, studying a weblog submit or one thing, and converts once more?
To assist cope with that, we’re going so as to add one other set off which checks if the consumer has not too long ago transformed, and if they’ve, refreshes the cookie with every new web page load.
Head again to [Tag] setCookieConverted
At this level it should not have any firing triggers. We’re going so as to add one again in.
Click on the blue plus signal on this display, and once more within the subsequent display that comes up, we’re going to create a brand new set off.
Within the new set off, we set it to fireplace solely on web page views the place convertedCookie comprises true.
So this will get just a little bit round, however mainly:
-
When somebody converts we set a “transformed” cookie for the subsequent half hour.
-
Each time somebody hundreds a web page, if they’ve a “transformed” cookie we reset that cookie for one more half-hour.
-
If at any level the consumer doesn’t load a brand new web page for half-hour, the cookie will expire, which implies our refresh received’t be triggered.
You possibly can check this by clicking round your web site with the GTM preview. When you’ve transformed, the [Tag] setCookieConverted ought to hearth on each new web page load.
Wrapping up
All it’s essential do now’s guarantee that all of your conversion tags use that very same set off (the one which has the situation that convertedCookie isn’t “true”). As soon as that’s arrange, they need to all behave the identical — solely recording one conversion per session except somebody clears their cookies or simply hangs round on one web page for a very very long time.
What if we discover we’re getting bizarre conversions the place customers haven’t visited another pages on the positioning?
I’ve labored with websites up to now the place:
-
There’s helpful info on the thank-you web page and customers have been maintaining it open/coming again to it.
-
Affirmation pages have been listed in Google or individuals are discovering their approach to the conversion web page another approach.
That may result in bizarre tracked conversions that don’t correspond to precise conversions. Whereas these issues ought to be solved at supply, we are able to additionally clear up our analytics utilizing the steps in “Making a conversion funnel” under.
Making a conversion funnel
This builds on the cookie meddling we’ve carried out within the final part, so when you haven’t learn that bit, it’s price having a look!
For those who’re right here not since you need a particular funnel however since you need to cope with bizarre conversions the place customers simply land straight on the conversion web page – don’t fear you comply with these directions precisely the identical, you simply set the set off for each web page besides your conversion web page (I’ll take you thru that).
Setting a “path” cookie
Identical to the “transformed” cookie earlier than, we’re going to create a brand new cookie that data the situation of the present web page.
Create a brand new Tag known as [Tag] setCookiePath, select “Customized HTML” and add the next JavaScript
<script>
// Get time half-hour from now (it’s because the default GA session day out
// is half an hour and we would like our cookie timeout to match)
var minutesToAdd = 30
var currentTime = new Date(); // Get present time
var newDateObj = new Date(currentTime.getTime() + minutesToAdd*60000); // Add our minutes on
// Set the area your’re engaged on, it’s because we would like our cookies to be
// accessible in subdomains (like check.instance.com) if wanted
var yourDomain = “therobinlord.com”
var pagePathName = window.location.pathname // Get location of present web page
// Set a cookie known as ‘transformed’ with the worth being ‘true’ which expires in half-hour
doc.cookie = “conversionPath=”+location+”; path=/; area=”+yourDomain+”; expires=”+newDateObj+”;”
</script>
It ought to seem like this:
This may save a cookie that data the situation of the web page. The primary time it’s loaded it is going to create a brand new cookie with that info, each time after it’ll substitute the worth.
We’ll use this to guarantee that whichever funnel web page our consumer interacted with final is the one we document.
Triggering in your funnel pages
In creating our “funnel” we’re assuming that there are particular pages a consumer passes by to be able to convert. So we’re going to set this to set off solely when a kind of funnel pages is concerned.
In your [Tag] setCookiePath tag – click on so as to add a brand new set off and create a brand new set off.
We’re going to configure our tag to activate on each consumer click on. Which means if a consumer is hopping between totally different funnel pages, every one will overwrite the cookie as they click on round however solely the one they interacted with final would be the one which sticks round within the cookie worth.
Getting our funnelCookie
As within the double-counting directions, create a brand new variable. However this time, name it funnelCookie and set the “Cookie Title” to conversionPath.
When you’ve carried out that it’s best to have the ability to check by utilizing preview, going to any outdated web page of your web site (so long as it’s not one among your funnel pages) and checking funnelCookie within the Variables (it ought to be undefined).
Then go to one among your funnel pages, it’s best to have the ability to see the cookie change.
As you go to different pages on the positioning, funnelCookie ought to keep the identical, except you go to one other funnel web page.
Altering our conversions based mostly on the funnelCookie
Now, there are sensible issues you may do right here with extracting the worth of funnelCookie and placing that right into a variable in your conversion tag however the setup for each tag will probably be totally different and I need to offer you an possibility for when you’re not ready to try this.
This may create a little bit extra mess in your Tag Supervisor account since you’ll be duplicating a few of your set off and conversion tags.
First, let’s return to the conversion set off we have been engaged on earlier than. It regarded like this after we left it:
We’re going so as to add in one other situation:
funnelCookie comprises event-page
This implies now that this conversion will solely hearth if the final funnel web page our consumer handed by was the event-page.
After this we are able to duplicate this set off, our conversion tags, and, for our different set of conversions, change the funnelCookie worth for the set off.
Perhaps as an alternative we make it:
funnelCookiecomprises form-page
Now you’ve gotten two units of conversions, every of which can hearth based mostly on which funnel web page the consumer handed by. From there you may edit the values despatched.
A pair caveats
As a substitute of duplicating our conversion tags it could be a lot higher to drag within the worth of the funnelCookie variable and use that to simply dynamically change a number of the values we’re sending as a part of the conversion.
With this strategy, you additionally run the chance of not recording any conversions in any respect if a consumer hasn’t handed by one among your funnel pages. That could be what you need, but it surely’s price bearing that threat in thoughts in case you assume individuals may take legitimate-but-unusual routes to conversion.
Whereas I can’t take you thru the method of updating all your conversion tags, one choice to make this info extra prepared for filling out conversion tags (and to optionally set a fallback in case you need to keep away from shedding conversions) is to make use of a lookup desk like this, the place you’re taking the funnelCookie worth and categorise the values.
Then as an alternative of including the funnelCookie worth in your set off, you retain the set off the identical and pull within the lookup desk worth.
Triggering on any web page besides your conversion web page
For those who’re not involved about setting up web page funnels however you need to guarantee that customers have visited no less than one web page earlier than changing. There are a pair modifications:
-
You don’t hassle creating totally different conversion flows, you simply have one stream, however you continue to add a funnelCookie requirement which says that your funnelCookie must be some web page quite than undefined
Conclusion
Hopefully this has helped you get an concept of the right way to get extra management of the conversions being recorded in your web site, whether or not that’s fully by GA4 or utilizing the facility of Tag Supervisor.
Joyful monitoring!