gatsby-plugin-google-tagmanager-delayed
Fork of gatsby-plugin-google-tagmanager that delays loading of GTM by placing it
at the end of body and adding a half-second delay.
Easily add Google Tagmanager to your Gatsby site.
Install
npm install --save gatsby-plugin-google-tagmanager
How to use
plugins: [
{
resolve: "gatsby-plugin-google-tagmanager",
options: {
id: "YOUR_GOOGLE_TAGMANAGER_ID",
includeInDevelopment: false,
defaultDataLayer: { platform: "gatsby" },
gtmAuth: "YOUR_GOOGLE_TAGMANAGER_ENVIRONMENT_AUTH_STRING",
gtmPreview: "YOUR_GOOGLE_TAGMANAGER_ENVIRONMENT_PREVIEW_NAME",
dataLayerName: "YOUR_DATA_LAYER_NAME",
},
},
]
If you like to use data at runtime for your defaultDataLayer you can do that by defining it as a function.
plugins: [
{
resolve: "gatsby-plugin-google-tagmanager",
options: {
defaultDataLayer: function() {
return {
pageType: window.pageType,
}
},
},
},
]
Tracking routes
This plugin will fire a new event called gatsby-route-change
whenever a route is changed in your Gatsby application. To record this in Google Tag Manager, we will need to add a trigger to the desired tag to listen for the event:
- Visit the Google Tag Manager console and click on the workspace for your site.
- Navigate to the desired tag using the 'Tags' tab of the menu on the right hand side.
- Under "Triggering", click the pencil icon, then the "+" button to add a new trigger.
- In the "Choose a trigger" window, click on the "+" button again.
- Choose the trigger type by clicking the pencil button and clicking "Custom event". For event name, enter
gatsby-route-change
.
This tag will now catch every route change in Gatsby, and you can add Google tag services as you wish to it.
Note
Out of the box this plugin will simply load Google Tag Manager on the initial page/app load. It's up to you to fire tags based on changes in your app. See the above "Tracking routes" section for an example.