From 3b03248846f535e6b829f2e250adb36005327f15 Mon Sep 17 00:00:00 2001 From: Konstantin Golubkin Date: Tue, 27 Apr 2021 11:01:53 +0200 Subject: [PATCH] We can change server side domain name for the Google Tag Manager to circumvent adblockers. So the new tracking server is located at some custom domain. Background to above: when adblockers or browsers see googletagmanager.com (or other domains or code refering to tracking, they will block it). Having custom domain means that no blockers will match on this url and it will approved. --- src/Snippets.js | 16 ++++++++-------- src/TagManager.js | 3 ++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Snippets.js b/src/Snippets.js index b798e3db6..3ebad697f 100644 --- a/src/Snippets.js +++ b/src/Snippets.js @@ -3,26 +3,26 @@ import warn from './utils/warn' // https://developers.google.com/tag-manager/quickstart const Snippets = { - tags: function ({ id, events, dataLayer, dataLayerName, preview, auth }) { + tags: function ({ id, src, events, dataLayer, dataLayerName, preview, auth }) { const gtm_auth = `>m_auth=${auth}` const gtm_preview = `>m_preview=${preview}` - + const gtm_src = src if (!id) warn('GTM Id is required') - + const iframe = ` - ` - + const script = ` (function(w,d,s,l,i){w[l]=w[l]||[]; w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js', ${JSON.stringify(events).slice(1, -1)}}); var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; - j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl+'${gtm_auth}${gtm_preview}>m_cookies_win=x'; + j.async=true;j.src='${gtm_src}/gtm.js?id='+i+dl+'${gtm_auth}${gtm_preview}>m_cookies_win=x'; f.parentNode.insertBefore(j,f); })(window,document,'script','${dataLayerName}','${id}');` - + const dataLayerVar = this.dataLayer(dataLayer, dataLayerName) - + return { iframe, script, diff --git a/src/TagManager.js b/src/TagManager.js index 6c35942f2..fe32f8416 100644 --- a/src/TagManager.js +++ b/src/TagManager.js @@ -29,9 +29,10 @@ const TagManager = { dataScript } }, - initialize: function ({ gtmId, events = {}, dataLayer, dataLayerName = 'dataLayer', auth = '', preview = '' }) { + initialize: function ({ gtmId, gtmSrc='https://www.googletagmanager.com', events = {}, dataLayer, dataLayerName = 'dataLayer', auth = '', preview = '' }) { const gtm = this.gtm({ id: gtmId, + src: gtmSrc, events: events, dataLayer: dataLayer || undefined, dataLayerName: dataLayerName,