Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Build Statusnpm versionnpm downloads

react-gtm-module

React Google Tag Manager Module

This is a Javascript module to React based apps that implement Google Tag Manager. It is designed to use GTM snippet.

You can easily use custom dataLayer, multiple dataLayers and additional events.

Installation

npm:

npm install react-gtm-module --save

Usage

Initializing GTM Module:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

DataLayer

Custom dataLayer example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayer: {userId: '001',userProject: 'project'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Multiple dataLayer example:

If you need send multiple custom dataLayer you can initialize GTM Module on different components sending different dataLayers

You can initialize it normally:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',dataLayerName: 'PageDataLayer'}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

And send your data in each page you want

importReactfrom'react'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={dataLayer: {userId: '001',userProject: 'project',page: 'home'},dataLayerName: 'PageDataLayer'}...constHome=()=>{
...
TagManager.dataLayer(tagManagerArgs)...return(<divclassName='home'>
//your component code
</div>)}exportdefaultHome

Events

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',events: {sendUserInfo: 'userInfo'}}TagManager.initialize(tagManagerArgs)...constapp=document.getElementById('app')ReactDOM.render(<Routerroutes={routes}/>,app)

Environments

Configure how Tag Manager will works between development and production server environments.

Example:

importReactfrom'react'importReactDOMfrom'react-dom'importRouterfrom'react-router'importroutesfrom'./routes'
...
importTagManagerfrom'react-gtm-module'consttagManagerArgs={gtmId: 'GTM-000000',auth: '6sBOnZx1hqPcO01xPOytLK',preview: 'env-2'}TagManager.initialize(tagManagerArgs)
How can I find auth and preview?

Go to Google Tag Manager -> ADMIN -> Environments -> Actions -> Get Snippet. Look for gtm_auth and gtm_preview

Don't know to use GTM environments?
ValueTypeRequiredNotes
gtmIdStringYesGTM id, must be something like GTM-000000.
dataLayerObjectNoObject that contains all of the information that you want to pass to Google Tag Manager.
dataLayerNameStringNoCustom name for dataLayer object.
eventsObjectNoAdditional events such as 'gtm.start': new Date().getTime(),event:'gtm.js'.
authStringNoused to set environments.
previewStringNoused to set environments, something like env-00.

Note:

  • Disabling javascript in the browser can prevent the correct operation of this library if React is only being rendered on the client side.

  • Before implementing GTM in your application ensure that you have at least one published container, otherwise Google Tag Manager snippet will return 404.

About

React Google Tag Manager

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages