Sometime you want to generate UUID for visitors on your web property and set UUID as cookie. I want to show how easy it is to set your own visitor UUID cookie using Google Tag Manager(GTM). Once visitor UUID cookie is set you can pass this UUID to other tags. Normally most of tags set tag specific UUIDs but by setting your own UUID you can manage your own cookie match table with your own UUID as primary key.
So lets get started. We are gone create a custom HTML tag visitorUUID
in GTM using custom HTML tag and following template.
<script type="text/javascript">
(function() {
// UUID generator
// Private array of chars to use
var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
// RFC4122v4 compliant uuid generator
Math.uuid = function() {
var chars = CHARS, uuid = new Array(36), rnd=0, r;
for (var i = 0; i < 36; i++) {
if (i==8 || i==13 || i==18 || i==23) {
uuid[i] = '-';
} else if (i==14) {
uuid[i] = '4';
} else {
if (rnd <= 0x02) rnd = 0x2000000 + (Math.random()*0x1000000)|0;
r = rnd & 0xf;
rnd = rnd >> 4;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
return uuid.join('');
};
})();
function createCookie(name,value,days) {
// Cookie setter function
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
// Generate and set visitorUUID cookie with expiry after 1 year i.e. 365 days
createCookie("visitorUUID", Math.uuid(), 365);
</script>
This template has 3 key components,
- RFC4122v4 compliant uuid generator
Math.uuid
(Adopted from work of Robert Kieffer) - A generic cookie setter function
createCookie
- Finally, expression to generate UUID and set
visitorUUID
cookie with expiry after 1 year (i.e. 365 days)
Set the priority for the tag higher using advanced settings in case other tags rely on the visitorUUID
cookie.
Now lets create a macro visitorUUID
which reads first party cookie visitorUUID
and set value in the macro. We are going to use this macro for the firing rule. Please note other tags can use this macro to get value of our UUID cookie.
Now it is time to set the firing rule for this tag. This tag should fire,
- On all pages, after DOM is ready, and
- Only when UUID cookie is not set
To find if UUID cookie is not set or not - we are looking for -
character in the visitorUUID
macro. If visitor UUID cookie is not set then condition visitorUUID
macro does not contain character -
will be true and hence tag will fire and set the cookie. Create the rule as illustrated below and attach it to our tag.
That's it, your visitor UUID tag is ready for action.