Janith Widarshana
Janith Widarshana

Reputation: 3483

Google Tag Manager (GTM) not working on SharePoint

I added the GTM code inside the SharePoint Master Page inside the body tag.

<body>
<--Body content goes here -->

<!-- Google Tag Manager -->
        <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXXXX"
        height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
        <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
        '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
        })(window,document,'script','dataLayer','GTM-T9XLSX');</script>
        <!-- End Google Tag Manager -->

</body>

But It seems that the script is not properly fired as the whole content is wrapped by a form element as following.It generate by SharePoint.

<body>
    <form method="post" action="" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">
    <--Body content goes here -->

    <!-- Google Tag Manager -->
            <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXXXX"
            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
            <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
            '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
            })(window,document,'script','dataLayer','GTM-T9XLSX');</script>
            <!-- End Google Tag Manager -->
   </form>
</body>

Is there a way we can properly place the tag in SharePoint?

Upvotes: 2

Views: 34038

Answers (3)

Henry Ong
Henry Ong

Reputation: 53

I was able to solve it for a SharePoint Online site collection. Assuming that the Publishing Features are turned on, I:

  1. Put all the Google Tag Manager stuff into a dedicated HTML file.
  2. Upload the HTML file somewhere like the root Site Assets library.
  3. Go to the Design Manager > Snippet Tool
  4. Configure a Content Editor Web Part to render the HTML file.
  5. Embed the Content Editor Web Part into your master page with no chrome/make invisible with your preferred method of choice or use the native ms-hide class
  6. Check-in, publish.

Upvotes: 1

Indika Sugathsiri
Indika Sugathsiri

Reputation: 36

You can find a sandbox solution for this in codeplex. I guarantee this works fine. all installation guidance is there.

Upvotes: 0

Indika Sugathsiri
Indika Sugathsiri

Reputation: 36

There is one workaround. You can directly edit the '.master' page in SharePoint 2013 using sharepoint designer and insert the the GTM just after the closing tag of sharepoint form as below,

</SharePoint:SharePointForm>
<!-- Google Tag Manager -->
    <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXXXX"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','sss');</script>
    <!-- End Google Tag Manager -->

Upvotes: 1

Related Questions