GDPR and Episerver: Honoring the Do Not Track browser setting in Google Tag Manager
To comply with users' privacy preferences, your Episerver site (and all the plugins you use for tracking) needs to honor the Do Not Track browser setting.
Chances are, your Episerver site is using several third party plugins and scripts (collectively called tags in Google Tag Manager) for tracking user behavior, site performance and device statistics. Some users don't want to be tracked, so they signal this by activating the Do Not Track setting that's built-into most modern browsers.
Your site should honor that setting and disable site-wide tracking accordingly. Unfortunately, this does not happen automagically - you need to tweak your Google Tag Manager configuration a little.
It's a 3-step process:
- Detect whether Do Not Track is activated
- Make a trigger that is invoked when Do Not Track is activated
- Prevent tracking plugins from firing when Do Not Track is activated
Creating a custom JS variable that detects whether Do Not Track is activated
Log into your GTM account and go to your site's main workspace.
- Click Variables, then create a new User-defined Variable called "CustomJS - Do Not Track" or something similar.
- The variable type should be "Custom Javascript".
- Paste the following script:
function () {
if (navigator.doNotTrack == "1" || window.doNotTrack == "1") {
return true;
}
return false;
}
- Save your new variable.
You only have to create this variable once (we'll reuse it for all our tags).
This will detect if the Do Not Track browser setting is activated (true) or deactivated (false). To test it, use the Preview button at the top of your workspace:
Go to your browser settings and switch Do Not Track on (example here is from Chrome):
Now open a new browser tab with your site - when in Preview mode, the GTM console should appear, showing you which tags and variables are currently loaded. Refresh the page (F5) and the value of your variable in the GTM preview console should read "true" or "false" accordingly:
Create a custom trigger that is invoked when Do Not Track is activated
Now that we can detect the Do Not Track setting, we need to configure a trigger (exception) that we can use to disable tracking plugins.
- From your workspace, create a new Trigger called "Exception - Do Not Track" or something similar.
- Trigger Type should be "Custom event".
- Use regex matching for .*
- The trigger should fire on "Some custom events", namely when your "CustomJS - Do Not Track" variable equals true.
- Save your new trigger.
You only have to create this trigger once (we'll reuse it for all our tags).
Applying the trigger (exception) to your tags
Normally, most of your tags will fire on all pages your users visit. We need to create an exception to this rule.
- From your workspace, click Tags, then click one of the tags your site is using. (This could be Hubspot as in my example, Google Analytics or any other.)
- Notice the tag is set to fire on All Pages. Click the little pencil icon, then "Add Exception".
- Select the "Exception - Do Not Track" trigger that we created earlier.
- Save the tag.
- Repeat this step for all your tracking tags.
Important: When done, click "Submit" at the top of your workspace to publish your new configuration:
To verify, go to Preview mode and toggle Do Not Track on/off in your browser settings. When activated, your "CustomJS - Do Not Track" variable should read "true":
... and the tags should not fire on the page:
That's it - the GTM tags on your site now honor the Do Not Track browser setting. For any additional tags you add later, just add the exception from Step 3.