Magento 2 Extension
GoogleTagManager 2
Add GTM to Magento including e-commerce dataLayer and FPC
Add GTM to Magento including e-commerce dataLayer and FPC
This extension is hosted on GitHub:
https://github.com/yireo/Yireo_GoogleTagManager2
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 Admin Panel> Stores> Configuration> Yireo> Yireo GoogleTagManager.
The extension has the following configuration options:
GTM-
).Use the DataLayer Checker for Chrome to easily see what kind of data is sent from Magento to Google Tag Manager.
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.
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.
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:
app/code/Yireo/GoogleTagManager2
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
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.
Yes, this extension ships with native JavaScript code that works with Hyvä. Additionally, the module ships with Hyvä-specific XML layout handles. Note that this applies to the Yireo GoogleTagManager2 version 3. With version 2, you will still need the compatibility module.
Currently, Luma-based checkouts work without an issue, but for using the React-based checkout or the MageWire-based checkout, more work is needed.
Yes, version 3 does. Version 2 is no longer maintained, but you could use the following composer patch with vaimo/composer-patches
: bash { "patches": { "yireo/magento2-googletagmanager2": { "Fix PHP 8.2 error": { "source": "https://patch-diff.githubusercontent.com/raw/yireo/Yireo_GoogleTagManager2/pull/136.diff", "link": "https://github.com/yireo/Yireo_GoogleTagManager2/pull/136", "level": 1 } } } }
Yes, this extension works nicely together with onestepcheckout.com
Make sure that both Google Analytics and Google Tag Manager are properly configured. See our tutorial for additional guidance. Make sure the module settings in Magento are properly configured: The flag Enabled sets to be set to Yes. The Container Public ID needs to start with GTM-
(unless you are testing in the Developer Mode). Optionally debugging can be enabled, which should print various messages in the Console of your browser. Refresh all Magento caches. Within the Network tab of your browsers Developer Tools, you should be able to see an outgoing request to https://www.googletagmanager.com/
.
Sometimes it is reported to us that with our module, revenue does not show up properly in the GA panel. With all reports so far, this turned out to be an incorrect revenue setting in GA panel, instead of something related to this Magento module. Note that the responsibility of this module is to deliver a purchase
event. If that purchase
event is showing in GA properly, then the job of this module is done. However, it is the responsibility of GA to calculate the right revenue from all purchases.
The main methodology for this module to generate its Data Layer by using the XML layout. The block with name yireo_googletagmanager2.data-layer
contains a data-layer
argument that could be modified and extended with other XML layout files.
A separate class \Yireo\GoogleTagManager2\DataLayer\Mapper\ProductDataMapper
is used to supply the fields per product impression dynamically. You can create a DI plugin to intercept the return value of the method mapByProduct()
(by creating a DI plugin method afterMapByProduct()
): Each entry in the returned array has a key that refers to the data property of the product (EAV attribute) and a value that refers to the Data Layer field (or impressionField
).
For example, you could declare a DI plugin within your own di.xml
, create a DI plugin class and use a method like the following: php public function afterMapByProduct(ProductDataMapper $productDataMapper, array $productData, ProductInterface $product): array { $productData['foo'] = 'bar'; return $productData; }
If you run into problems, we are happy to help you out with the following resources:
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.
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:
phpunit
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
:
yarn
npm run mocha
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
) magento/framework
: ^102.0 || ^103.0
magento/module-backend
: ^100.0 || ^101.0 || ^102.0
magento/module-catalog
: ^100.0 || ^101.0 || ^102.0 || ^103.0 || ^104.0
magento/module-checkout
: ^100.1
magento/module-config
: ^100.0 || ^101.0
magento/module-cookie
: ^100.0
magento/module-customer
: ^100.0 || ^101.0 || ^102.0 || ^103.0
magento/module-eav
: ^100.0 || ^101.0 || ^102.0
magento/module-quote
: ^101.0
magento/module-sales
: ^100.0 || ^101.0 || ^102.0 || ^103.0
magento/module-store
: ^100.0 || ^101.0
psr/log
: ^1.0
php
: ^7.4|^8.1
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.
$scopeConfig
in PHP 8.2magento_sku
and magento_id
to products$html
argument in plugin to cause Fatal Error, not reported here, not duplicatedMagento\Checkout\Model\Cart
instead of CartInterface
#122view_item_list
event #119 (@samicoman)sku
instead of id
as item_id
#114 (@samicoman)Fix duplicate product loading #85 (@sprankhub)
Amasty_Xlanding
gooogletagmanager_container
for most datalayer blocksCategory
block to no longer depend on onLoadedProductCollection
Script
, Category
, Product
, Generic
, Custom
)\Yireo\GoogleTagManager2\Util\GetCurrentProduct
\Yireo\GoogleTagManager2\Util\GetCurrentCategory
Re-add CSP whitelisting
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.
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