Google Tag Manager on ExpressionEngine | OpsBlu Docs

Google Tag Manager on ExpressionEngine

How to install and configure Google Tag Manager on ExpressionEngine. Covers installation method, container setup, verification, and...

For general GTM concepts, see Google Tag Manager Overview

Overview

ExpressionEngine uses its own template engine with template groups. Add GTM in your site's header template or global embed.

Prerequisites

Installation

Where to Add GTM Code

Developer → Templates → edit your _layout or _header template (or global embed). Add head snippet in the <head> section and body snippet after <body>

GTM Head Snippet

Add this in the <head> section:

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- End Google Tag Manager -->

GTM Body Snippet

Add this immediately after the opening <body> tag:

<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

Replace GTM-XXXXXXX with your actual Container ID in both snippets.

ExpressionEngine-Specific Considerations

ExpressionEngine's template engine uses { curly braces } for its own tags. The GTM JavaScript snippet's curly braces won't conflict because they're inside <script> tags, but if you use EE tags near the GTM code, ensure proper escaping.

Template System

ExpressionEngine uses EE's tag-based template system with template groups. When editing templates directly, note that the GTM JavaScript snippet (inside <script> tags) will not conflict with the template engine's syntax.

Verification

After installation, verify GTM is working:

  1. GTM Preview Mode — In GTM, click Preview, enter your site URL, and verify the container loads.
  2. Browser Console — Open DevTools (F12) and run console.log(window.google_tag_manager). You should see an object (not undefined).
  3. Network TabFilter for googletagmanager.com and verify gtm.js loads with a 200 response.
  4. Data Layer Check — Run console.log(window.dataLayer) to verify the data layer array exists.

Next Steps