Track and Categorize All Link Clicks on the Site With Google Analytics 4

This is a guest post by Sebastian Pospischil, Evangelist Digital Analytics at TRKKN. All credit for the solution goes to him. The Summary section is the only one authored by Simo Ahava. You know the deal. Each and every day, clients reach out to you asking for custom click tracking for this call-to-action on that slider, or that button in this section of a page. They reach out to you because such things cannot be answered out of the box in Google Analytics 4. Read More…

Agency, Transparency, and Control: Unsolved Problems With Server-Side Tagging

I have been a strong supporter of server-side tagging, in particular Google’s server-side tag management solution. I admire the way it seeks to readjust the balance of control that typically has been in favor of the marketing vendors whose JavaScript libraries have been free to wreak havoc in the user’s browser. By inserting a buffer between the user and the vendor, the owner of the server-side tagging setup can take control over what data the marketing vendors can actually process of the user. Read More…

#GTMTips: Use GA4 Schema in Universal Analytics Ecommerce

With the sunset announcement of the Universal Analytics service, it certainly does seem like a waste of time to write articles about it. However, a recent update to Google Tag Manager is an interesting one and should provide relief to those Google Analytics users who are set on double-tagging their sites for both Universal Analytics and Google Analytics 4 and who want to make use of GA4’s new Data Layer schema. Read More…

One Tag to Rule Them All: Introducing the New Google Tag

For the longest time, Google has been working towards consolidation of their products to build a unified tagging platform. Products that are instrumented (or associated) with “tags” would fall under this umbrella. These comprise tools like Google Tag Manager, Google Ads, Google Optimize, and, of course, Google Analytics. If you’ve been peeking under the hood, you might have noticed how all the tools listed above already run through the gtag.js library. Read More…

#GTMTips: Preflight Requests in Server-Side Google Tag Manager

With certain types of HTTP requests, the web browser might first dispatch a request with the OPTIONS method, also known as a preflight request. The purpose of the preflight request is to “check” with the web server that it’s equipped to handle the type of cross-origin request the browser wants to dispatch. If the server doesn’t handle this preflight request, or if it returns a response that doesn’t agree with what the web browser wants to actually dispatch, the check fails and the browser refuses to send the actual request. Read More…

#GTMTips: Preview Requests in Server-Side Google Tag Manager

Server-side Google Tag Manager has an excellent Preview mode, which lets you inspect incoming requests, monitor the event data object, view console messages, and identify outgoing requests, among other things. To enable this Preview mode on the web, you simply need to click the Preview button in the container, after which any requests sent from the same browser instance will be automatically shown in the Preview mode window. However, what about if you want to send requests from another browser? 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…