Client-side Google Tag Manager (GTM) is a free tool.
However, Google is intensively encouraging the shift towards server-side GTM. But why?
While server-side GTM remains free, the catch lies in the charges for Google Cloud services based on your data processing volume.

Google Tag Manager: Client-Side vs. Server-Side

Client-Side GTM

The operation of client-side Google Tag Manager is straightforward:

  1. Incorporate all your tags, triggers, and variables into GTM.
  2. Embed the GTM container integration script on your website.
  3. The GTM container integration script activates in the user’s browser upon their website visit, processing the tags, triggers, and variables.

Server-Side GTM

Conversely, server-side Google Tag Manager operates differently:

  1. Begin with a GTM client side containing only a GA4 tag.
  2. Embed the GTM container integration script on your website.
  3. Establish a second GTM server-side containing all tags, triggers, and variables.
  4. Link the GTM server-side container as a destination in the client-side GA4 tag.

Contrary to popular belief, server-side GTM isn’t a replacement but a complement to client-side GTM. It relies on client-side GTM to function, highlighting the necessity for a GTM hybrid solution rather than a standalone server-side solution.

A representation of client-side vs server-side configuration.
Client-side vs Hybrid / Server-side. Adapted from Optmize Smart.

Unveiling the Catch

The catch is Google’s requirement to host the server-side GTM container on Google Cloud, leading to charges based on data processed. While you can opt for other cloud providers like App Engine Standard, the effort is substantial and may not withstand traffic peaks. This almost mandates the use of Google Cloud, incurring inevitable costs.

Advantages of Server-Side GTM

Server-side GTM offers significant benefits, including:

  • Enhanced Privacy: You control the data shared with advertising platforms, preventing indiscriminate data collection in the user’s browser.
  • Improved Performance: Minimizing browser data transfer enhances website loading speeds.
  • Increased Reliability: Advertisers’ tags remain unaffected by ad blockers and don’t cause JavaScript errors, ensuring website integrity.

Budget Considerations

Estimating the cost is challenging due to varying data processing volumes. Insights from Simo Ahava’s blog reveal that Google Virtual Machines may cost around USD 35-40 per instance monthly. Upgrading to three instances might exceed USD 100 monthly, with additional minor costs for network egress and log storage.

While many companies can accommodate this expense, smaller businesses may find the transition from a free to a paid tool daunting, especially without clear benefits.

Transitioning from client-side to server-side GTM is complex, requiring extensive work and testing – another cost factor. Additionally, server-side GTM, being newer and less user-friendly than its client-side counterpart, may demand more management time.

Adblocker Proofed You Say?

Claims of server-side GTM’s adblocker resistance are overstated. Since it depends on client-side GTM and operates in the visitor’s browser, adblockers can still block the client-side container script and the browser’s GA4 request to the server-side container.

Conclusion

With server-side GTM maturing and the EU advocating for enhanced privacy, Google and others like Commanders Act, Tealium, and Adobe see an opportunity to advocate for server-side solutions – albeit at a cost. Unlike Google, these companies already charged for their tools, so the shift isn’t as pronounced for their users.

Playing devil’s advocate, Google has provided a free TMS for years, covering hosting and data processing costs. Twelve years post-GTM launch, Google seeks a sustainable economic model for GTM. Given Google’s history of discontinuing unprofitable services (RIP Google Reader, Google+, Google Site Search, Google Wave, etc.), paying for a valuable tool seems preferable to losing it entirely.

Join "TGIF 🙌" newsletter for your weekly digital news recap!