Yireo - Developer training

Open main menu
GoogleTagManager 2

Magento 2 Extension

GoogleTagManager 2

Add GTM to Magento including e-commerce dataLayer and FPC

  • 100% open source and well-written
  • compliant with modern Magento standards
  • Free with no strings attached
  • Community collaboration via GitHub

Latest release: 2.1.8

Jisse Reitsma

This extension has been created by Jisse Reitsma

This extension has been written - with love - by Jisse Reitsma, founder of Yireo, three times Magento Master, partner of ExtDN, trainer and author. Jisse has been in the Magento ecosystem for many years and has created numerous Magento extensions. He also has been pushing better coding practices, like CI/CD, clean coding, coding standards and testing.

Packages & pricing

This extension is hosted on GitHub:

Usage after installation


Login to your Google Tag Manager account. Follow the Google instructions to create a new Google Tag Manager container. Extract the Container Public ID from your new container. Configure your new ID in Magento through Store> Configuration> [Sales] Google Tag Manager.


The extension has the following configuration options:

  • Enabled: When this is set to No, the extension does not work.
  • Container Public ID: The ID of your Google Tags container
  • Insertion Method: A technical thing which is either set to Observer or to XML Layout. If the one does not work for you, try the other one instead.
  • Debug: For developers.

Data layer attributes

This extension adds the following attributes automatically to the data layer. There is no backend option to tune this, so if you want to make changes, change the PHTML templates in your own theme.

  • customerLoggedIn = Whether the customer has logged in
  • customerId = ID of the customer
  • customerGroupId = Customer group ID
  • customerGroupCode = Customer group code
  • categoryId = Category ID
  • categoryName = Category name
  • categoryProducts = Listing of top 3 products
  • productId = Product ID
  • productName = Product name
  • productSku = Product SKU
  • productPrice = Product price
  • transactionId = Order ID
  • transactionDate = Order date
  • transactionAffiliation = Website name
  • transactionTotal = Order total
  • transactionTax = Order tax
  • transactionShipping = Shipping amount
  • transactionPayment = Payment method
  • transactionCurrency = Currency of website
  • transactionPromoCode = Promotional code used for order
  • transactionProducts = Listing of all
    • sku = Item SKU
    • name = Item name
    • price = Item price
    • category = Listing of category IDs
    • quantity = Item quantity

Note that on a product page with an URL that also identifies a category, both the product attributes and the category attributes are added.

Technical details

This module does not use XML rewrites to change core classes. It uses two insertion modes - one using the XML layout, one using an observed event core_block_abstract_to_html_after.


When you want to track conversions in your Magento checkout, our extension helps out as well: It adds the relevant information to all your checkout and cart pages. Do you want to know which variables are on the success page? Use the Yireo CheckoutTester extension to preview that page and view its HTML source.

Bring your towel.

Quick Start

Get up and running with your Yireo extension

Installation via composer URL

We recommend to install Magento 2 extensions via composer. See the Composer project for instructions on how to get composer up and running. Once composer is installed, use the following command to install our extension.

composer require yireo/magento2-googletagmanager2

This will make composer download the package from Packagist. After the composer installation has finished, use the following commands to enable the module within Magento:

bin/magento module:enable Yireo_GoogleTagManager2
bin/magento cache:clean
bin/magento setup:upgrade

After these commands, the extension is ready for use in Magento. If you were already logged into the Magento Admin Panel, make sure to logout and log back in again, before proceeding. Do not forget to grab yourself a manual copy of our extension as a backup.

Manual installation

Please note that we strongly recommend using composer instead. If you bump into issues with this manual procedure, the first thing we need to ask is whether you have installed all dependencies, as mentioned in the composer.json file of this extension. If the composer.json file of this extension mentions requirements, you need to fulfill these requirements. This could involve checking for PHP requirements but also installing third party add-ons. Sounds difficult? Yes! That's why we can only recommend you to use composer. The manual installation does NOT make your life easier, even if you think it does.

Do use composer: It allows for dependency tracking and in the end, prevents breaking your site. However, in some cases, it might be required to do a non-composer installation. For these exceptional situations, download the module ZIP from our site (under the tab File Downloads). Next, create a folder with the following name and copy to the ZIP contents to it:


After the files have been uploaded, confirm that all files are in place. For instance, you should have a file like app/code/Yireo/GoogleTagManager2/etc/module.xml. Next, use the following commands to enable the module within Magento:

bin/magento module:enable Yireo_GoogleTagManager2
bin/magento cache:clean
bin/magento setup:upgrade

After these commands, the extension is ready for use in Magento. If you were already logged into the Magento Admin Panel, make sure to logout and log back in again, before proceeding. Do not forget to grab yourself a manual copy of our extension as a backup.


Head over to the GitHub repository for downloads: https://github.com/yireo/Yireo_GoogleTagManager2

Frequently Asked Questions

Yes. The community of Hyvä has created a Hyvä compatibility module for our Yireo GoogleTagManager2 module. See the compatibity project for details on the module.

No, it is not. As a policy, all our Yireo software is unencrypted - we do not make use of technologies like ionCube or ZendOptimizer. All PHP-code is open source, but for commercial extensions the code is only given to paying customers.

You probably would like to know if this extension is working under a specific Magento version 2.X.Y. However, from a technical point of view, the question is wrong: The major Magento version 2.X.Y is not semantical but instead used for marketing purposes. It doesn't give any guarantees.

Instead, we maintain compatibility with the actual modules that lie underneath (like Magento_Catalog or the Magento Framework). And version management for these dependencies is handled via composer. We strongly advice you to rely on composer to answer the question whether our extension works under a specific Magento version. This is the only way to guarantee compatibility in a professional way.

Alternatively, study our CHANGELOG for details on the progress we made.

This extension is offered for free. Feel free to go the GitHub repository (see the link under Quick Start> Downloads) and open an Issue there. Please note that this is a voluntary open source project. The more helpful you are in describing the issue at hand, the more likely volunteers can come in to help you with the issue.

No, currently it is not. This is a voluntary project that never needed this. If you want this to be included, either create and send a Pull Request to share this with the community. Or send a mail to info@yireo.com so we can discuss to start a custom project (paid per hour) for this.


Getting support

If you run into problems, we are happy to help you out with the following resources:

  • Check FAQ on this page
  • See our Quick Start on this page
  • Open an Issue in the GitHub repository
    • Be as descriptive in your issue as possible
    • Do everything you can to troubleshoot the issue yourself
    • Understand that you are asking others to give up their free time

We usually respond in 24 hours but understand this is all done on a voluntary basis. Also note that we require you to collaborate together with us. Interpret errors as best as you can, before claiming our time. Free software does not automatically lead into free support as well.


Unit testing

This extension ships with PHPUnit tests. The generic PHPUnit configuration in Magento 2 will pick up on these tests. To only test Yireo extensions, simply run PHPUnit from within this folder. Note that this assumes that the extension is installed via composer. For instance:


Also note that Mockery (mockery/mockery) is used for the integration tests. If you want to test this module, you need to install its dev-dependencies:

composer require yireo/magento2-googletagmanager2 --dev

The JavaScript code ships with MochaJS unit tests. To install the stuff, simply run (within this extension directory) the following:

npm install
npm run mocha

Or just use yarn:

npm run mocha

Supported Magento versions

  • 2.2 (2.2.5, 2.2.6, 2.2.7, 2.2.8, 2.2.9, 2.2.10)
  • 2.3 (2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.3.5-p1, 2.3.5-p2, 2.3.6, 2.3.7, 2.3.7-p1, 2.3.7-p2)
  • 2.4 (2.4.0, 2.4.1, 2.4.2, 2.4.2-p1, 2.4.2-p2, 2.4.3, 2.4.4, 2.4.5)
The supported PHP versions equal the versions supported by Magento itself

Requirement details

  • magento/framework: ^101.2|^102.0|^103.0
  • magento/module-catalog: ^100.1|^101.0|^102.0|^103.0|^104.0
  • magento/module-checkout: ^100.1
  • magento/module-cookie: ^100.0
  • magento/module-customer: ^100.1|^101.0|^102.0|^103.0
  • magento/module-directory: ^100.1
  • magento/module-quote: ^100.1|^101.0
  • magento/module-sales: ^100.1|^101.0|^102.0|^103.0
  • magento/module-store: ^100.1|^101.0
  • php: >=7.2.0
  • ext-json: *
  • ext-pcre: *


All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


[2.1.8] - 1 July 2022

  • Update ecommerce attributes #95 (@BorisovskiP)

[2.1.7] - 31 March 2022

  • Prevent adding quote data to success page #91
  • Add additional field for ecommerce push #93 (@sprankhub)
  • Prevent adding quote data to success page #91
  • Add additional field for ecommerce push #93 (@sprankhub)

[2.1.7] - 31 March 2022

  • Prevent adding quote data to success page #91
  • Add additional field for ecommerce push #93 (@sprankhub)

[2.1.6] - 23 March 2022

  • Add ecommerce push on checkout success #90 (@sprankhub)

[2.1.5] - 21 March 2022

  • Fix Duplicate Product Tracking #88 (@sprankhub)
  • Add parent SKU #89 (@sprankhub)

[2.1.4] - 17 February 2022


Fix duplicate product loading #85 (@sprankhub)

[2.1.3] - 23 September 2021

  • Prevent Fatal Error with Amasty_Xlanding

[2.1.2] - 29 July 2021

  • Fix error on cart configure page (@Irinina)

[2.1.1] - 10 July 2021

  • Make sure \Yireo\GoogleTagManager2\ViewModel\Product::getProductPrice() always returns float

[2.1.0] - 10 July 2021

  • Various styling issues (PHPCS, PHPStan)
  • Increase framework requirement to 101.2 because of ViewModel bug
  • Enabled debugging in JS (dumping attributes and config)
  • New Attributes ViewModel to collect data after initialize output
  • Add API interfaces to guarantee backwards compatibility in future
  • Added XML layout container gooogletagmanager_container for most datalayer blocks
  • Added debug utility class
  • Renamed existing plugin interceptors
  • Rewrite x-magento-init into simple require() for performance
  • Refactored Category block to no longer depend on onLoadedProductCollection
  • Removed all block classes (Script, Category, Product, Generic, Custom)
  • Remove \Yireo\GoogleTagManager2\Util\GetCurrentProduct
  • Remove \Yireo\GoogleTagManager2\Util\GetCurrentCategory
  • Remove helper
  • Remove container model
  • Remove entire observer-based input method
  • Remove ViewModelFactory

[2.0.5] - 5 May 2021


Re-add CSP whitelisting

[2.0.4] - 30 April 2021

  • Fix block retrieval with Layout instead LayoutFactory (@sprankhub)
  • Make sure view model is set correctly (@sprankhub)

[2.0.3] - 29 October 2020

  • Fix error when block is not present

[2.0.2] - 28 October 2020

  • Category Sort By not working properly with 2.4.X because of weird product loading (70)
  • Refactored legacy Registry into request
  • Move Config class to new namespace
  • PHPCS fixes for Magento Marketplace compliance

[2.0.1] - 29 July 2020

  • Magento 2.4 support

[2.0.0] - 2020-07-21

  • Legacy CustomerData class
  • Dev dependency with Mockery
  • Upgrade PHPUnit to be 2.4 compatible
  • Bumped minimum PHP to 7.2

[1.1.3] - 2020-05-30

  • Add a new CSP whitelist for M2.3.5+

[1.1.2] - 2020-03-31

  • Some small code quality things

[1.1.1] - 2020-02-10

  • Add ACL file for configuring access to config

[1.1.0] - 2019-11-23

  • Major rewrite to remove custom sections in favor of DI plugin
  • No more reloading of sections

[1.0.3] - 2019-08-07

  • Use currency code instead of currency symbol (@nicolas-medina)

[1.0.2] - 2019-06-15

  • Move cookie-restriction-mode to JS to work with FPC

[1.0.1] - 2019-03-13

  • Fix duplicate code
  • Add compatibility with Magento 2.2 again (2.1 is dropped permanently)
  • Fix invalid template path
  • Fix reloading issues with quote

[1.0.0] - 2019-02-26

  • First release with Changelog
  • See GitHub commits for earlier messages

We are a proud member of ExtDN

ExtDN forms a network of Magento extension developers, that strive for a better extension quality - both on a technical level and from an end-users point of view. With industry leaders like Fooman and aHeadworks, ExtDN lifts up the Magento extension space to a new level. And Yireo is proud to be part of this.

Do not miss out on what we say

This will be the most interesting spam you've ever read

We don't write too commercial stuff, we focus on the technology (which we love) and we regularly come up with innovative solutions. Via our newsletter, you can keep yourself up to date on all of this coolness. Subscribing only takes seconds.

Sign up for the Yireo newsletter



GitHub organizations

Legal information

Other Yireo sites

Get Social

About Yireo