docusaurus icon indicating copy to clipboard operation
docusaurus copied to clipboard

gtag plugin should support multiple trackingID

Open slorber opened this issue 3 years ago • 2 comments

Have you read the Contributing Guidelines on issues?

Description

https://developers.google.com/tag-platform/gtagjs/install

The gtag plugin should only be used at most once per page.

It makes sense for some use-cases to use gtag with multiple ids, in which case we should call gtag("config",trackingID) multiple times.

gtag('config', 'G-XXXXX');
gtag('config', 'AW-XXXXX');
gtag('config', 'DC-XXXXX');

Has this been requested on Canny?

No response

Motivation

Make the gtag plugin more powerful, tracking to multiple analytics accounts, tracking Google Ads...

API design

We should prevent duplicate usage by throwing an error if id !== "default"

We should allow passing trackingID: ["G-XXXXX","AW-XXXXX","DC-XXXXX"] as an array of strings instead of just one single string id.

Note: it might be worth studying if passing an array is enough.

We might as well want to use different configs for each?

See also https://stackoverflow.com/questions/54280439/how-to-combine-ua-and-aw-tracking-tags

Have you tried building it?

No response

Self-service

  • [ ] I'd be willing to contribute this feature to Docusaurus myself.

slorber avatar Dec 29 '22 15:12 slorber

Hi, I was just looking into the plugin. Is the support something like this?

        headTags: [
          {
            tagName: 'link',
            attributes: {
              rel: 'preconnect',
              href: 'https://www.google-analytics.com',
            },
          },
          {
            tagName: 'link',
            attributes: {
              rel: 'preconnect',
              href: 'https://www.googletagmanager.com',
            },
          },
          // https://developers.google.com/analytics/devguides/collection/gtagjs/#install_the_global_site_tag
          ...trackingID.map((id) => ({
            tagName: 'script',
            attributes: {
              async: true,
              src: `https://www.googletagmanager.com/gtag/js?id=${id}`,
            },
          })),
          {
            tagName: 'script',
            innerHTML: `
              window.dataLayer = window.dataLayer || [];
              function gtag(){dataLayer.push(arguments);}
              gtag('js', new Date());
              ${trackingID.map(() => `gtag('config', '${trackingID}',{ ${anonymizeIP ? "'anonymize_ip': true" : ''} });`).join('')}
              `,
          },
        ],

Sarfraz-droid avatar Dec 30 '22 22:12 Sarfraz-droid

@Sarfraz-droid it's not ideal. We should probably make it possible to pass different configs.

This is something users might want to do:

  gtag('config', 'G-XXXXX',config1);
  gtag('config', 'AW-YYYYYYYYY', config2);

but maybe it's a bit overkill though, I don't know who would use that and when? 🤷‍♂️

If you want to work on this, a good first step would be to read this doc: https://developers.google.com/tag-platform/gtagjs/install And figure out it it's worth it and what are the different possible configs (docs doesn't make it easy to find this info)


Note from https://support.google.com/analytics/answer/2763052?hl=en

CleanShot 2023-01-04 at 17 29 24@2x

I guess the gtag plugin anonymizeIP option should be deprecated

slorber avatar Jan 04 '23 16:01 slorber