Google Tag Manager (GTM) not working on SharePoint

33,459

Solution 1

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 -->

Solution 2

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.
Share:
33,459
Janith Widarshana
Author by

Janith Widarshana

merge keep

Updated on July 09, 2022

Comments

  • Janith Widarshana
    Janith Widarshana almost 2 years

    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?

  • Janith Widarshana
    Janith Widarshana over 9 years
    This code is disappear when we do any update in masterpage. Can anyone please suggest a solution for that.
  • Janith Widarshana
    Janith Widarshana over 9 years
    Can you please post the link ?