diff --git a/packages/analytics-js-integrations/src/integrations/GoogleTagManager/browser.js b/packages/analytics-js-integrations/src/integrations/GoogleTagManager/browser.js index 07bc7c3cd0..c79da575df 100644 --- a/packages/analytics-js-integrations/src/integrations/GoogleTagManager/browser.js +++ b/packages/analytics-js-integrations/src/integrations/GoogleTagManager/browser.js @@ -15,6 +15,8 @@ class GoogleTagManager { } this.analytics = analytics; this.containerID = config.containerID; + this.environmentID = config.environmentID; + this.authorizationToken = config.authorizationToken; this.name = NAME; this.serverUrl = config.serverUrl; ({ @@ -25,7 +27,7 @@ class GoogleTagManager { } init() { - loadNativeSdk(this.containerID, this.serverUrl); + loadNativeSdk(this.containerID, this.serverUrl, this.environmentID, this.authorizationToken); } isLoaded() { diff --git a/packages/analytics-js-integrations/src/integrations/GoogleTagManager/nativeSdkLoader.js b/packages/analytics-js-integrations/src/integrations/GoogleTagManager/nativeSdkLoader.js index c5879bd151..3851036842 100644 --- a/packages/analytics-js-integrations/src/integrations/GoogleTagManager/nativeSdkLoader.js +++ b/packages/analytics-js-integrations/src/integrations/GoogleTagManager/nativeSdkLoader.js @@ -1,6 +1,6 @@ import { LOAD_ORIGIN } from '@rudderstack/analytics-js-common/v1.1/utils/constants'; -function loadNativeSdk(containerID, serverUrl) { +function loadNativeSdk(containerID, serverUrl, environmentID, authorizationToken) { const defaultUrl = `https://www.googletagmanager.com`; // ref: https://developers.google.com/tag-platform/tag-manager/server-side/send-data#update_the_gtmjs_source_domain @@ -11,9 +11,12 @@ function loadNativeSdk(containerID, serverUrl) { const f = d.getElementsByTagName(s)[0]; const j = d.createElement(s); const dl = l !== 'dataLayer' ? `&l=${l}` : ''; + const gtmEnv = environmentID ? `>m_preview=env-${environmentID}` : ''; + const gtmAuth = authorizationToken ? `>m_auth=${authorizationToken}` : ''; + const gtmCookies = '>m_cookies_win=x'; j.setAttribute('data-loader', LOAD_ORIGIN); j.async = true; - j.src = `${window.finalUrl}/gtm.js?id=${i}${dl}`; + j.src = `${window.finalUrl}/gtm.js?id=${i}${dl}${gtmAuth}${gtmEnv}${gtmCookies}`; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', containerID); }