10 Truths About Data - Revisited

Seven years ago, I wrote on my former employer’s (the amazing Reaktor) blog a tongue-in-the-cheek article titled 10 Truths About Data. Looking back on it today, I’m still proud of the handiwork, but I can’t help but think that some of the truths were wasted just to reach the magic number 10. So, today, I want to revisit these truths and provide a rehashed version for you, my dear reader. Read More…

10 Truths About Data - Revisited

Seven years ago, I wrote on my former employer’s (the amazing Reaktor) blog a tongue-in-the-cheek article titled 10 Truths About Data. Looking back on it today, I’m still proud of the handiwork, but I can’t help but think that some of the truths were wasted just to reach the magic number 10. So, today, I want to revisit these truths and provide a rehashed version for you, my dear reader. Read More…

#GTMTips: Setup IAM for Manual Installation of Server-Side GTM

If you want to manually install server-side Google Tag Manager on App Engine in the Google Cloud Platform, you are of course welcome to do so. The main benefits of doing this are that you get to choose the region where App Engine is deployed and that you can use existing project resources instead of having a new project automatically created for you. However, to run the script without errors, there are a number of things you need to enable first. Read More…

Enrich Server-Side Data With Cloud Firestore

With asynchronous variables recently released in server-side Google Tag Manager, it’s time to dig into data enrichment flows using another release from the Google team. * drum roll * We have a new Google Cloud Platform API! It’s fast. It’s sleek. It’s beautiful. It’s Firestore! Firestore is a NoSQL, transactional, and scalable database that offers near-real-time write/read and sync operations for data. In practice, it’s a great way to enrich and widen the data that you pass through your Server container. Read More…

Asynchronous Variables in Server-Side Google Tag Manager

OK, that’s one unappealing title for a blog post, but rest assured that the content more than makes up for this obscurity. Recently, my favorite toy in the world, Google Tag Manager’s server container, introduced the capability to handle asynchronous operations in variables. This is done through a JavaScript interface known as Promise. A Promise is a way to run code in JavaScript without knowing what its eventual value will be. Read More…

#GTMTips: Setup a Google Tag Manager Server Using Cloud Run

While Google App Engine, the default implementation pattern of server-side Google Tag Manager, is straightforward to setup with the automatic provisioning steps, it’s certainly not the only way to deploy the server. You can set it up in Amazon AWS (this blog) You can set it up in Microsoft Azure (this blog) You can set it up with Cloud Run (Mark Edmondson’s blog) In fact, the manual setup guide gives you the details on how to deploy a Google Tag Manager Server in any environment that runs Docker. Read More…

Debug Guide for Web Analytics and Tag Management

One of the key skills for anyone working with web analytics and tag management is understanding how to identify where things went wrong, why they went wrong, and ideally how to fix them. There are plenty of excellent browser extensions for helping you debug, and we’ll discuss these in the guide, too. But most of all we’re going to use browsers’ own developer tools, as they are always the best source of truth for anything that happens within the browser window. Read More…

#GTMTips: Manipulate Response Headers in Server-Side Google Tag Manager

Although most of Server-side Tagging in Google Tag Manager revolves, quite rightfully, around Clients, there’s still plenty of value to be derived from tags, too. Naturally, the most common use case for server-side tags is to map the incoming requests to the Server container (filtered through Clients) and dispatch them to their respective endpoints. But in addition to dispatching HTTP requests, tags can do so much more. In this article, I’ll share with you a neat way how to utilize tags to manipulate the HTTP responses the Server container sends back to the request source. Read More…

Server-Side Tagging With Azure App Service

To continue my extensive collection of Google Tag Manager’s server-side tagging articles, in this guide I’ll walk you through how to set up a Server container in Microsoft Azure’s App Service platform. For my previous guides on manually provisioning a Server container, follow these links: Amazon AWS (Elastic Beanstalk): Deploy Server-side Google Tag Manager In AWS Google Cloud (App Engine): Provision Server-side Tagging Application Manually Azure’s App Service is similar to AWS Elastic Beanstalk and GCP App Engine, in that it lets you create a web application from scratch with minimal effort. Read More…

#GTMTips: Cross-Domain Tracking in Google Analytics 4

Setting up cross-domain tracking in Google Analytics 4 has been well-documented. The main departure from Universal Analytics is how cross-domain measurement is something you configure through the Google Analytics user interface rather than through implementation and JavaScript. While this approach is obviously beneficial especially for those who lack the know-how or the resources to configure the JavaScript trackers, it does lead to problems, too. In this article, I want to tackle these edge cases. Read More…

Measure Ad Blocker Impact With Server-Side GTM

For many, it seems, one of the most important justifications for server-side Google Tag Manager is its resilience to ad and content blockers. After all, by virtue of serving the container JavaScript from your own domain, you escape many of the heuristic devices today’s blocker technologies employ. Well, I’ve gone on record over and over again to say how this is poor justification for using server-side GTM. By circumventing the user’s wish to block scripts, you are disrespecting them and forcing their browser to download scripts that they wanted to avoid downloading in the first place. Read More…