A lightweight React library to implement custom Google Tag Manager events.
Designed to use and extend Google Analytics 4. Note: If upgrading from react-gtm 0.0.6
or older, or currently using an older version of Google Analytics, you'll need to upgrade. This library is also SSR safe and does not break when used without window existing. This package is intended to be used with React / older Next.JS apps, for Next.JS 11 and above we recommend using @phntms/next-gtm.
Install this package with npm
.
npm i @phntms/react-gtm
Property | Type | Default | Notes |
---|---|---|---|
id | string |
undefined | ID that uniquely identifies GTM Container. Example format: GTM-xxxxxx . |
disable | boolean |
false | Used to disable tracking events. Use if you want user to consent to being tracked before tracking events. |
To initialize GTM, add TrackingHeadScript
to the head
of the page.
Example initialization in Next.js:
import Document, {
Html,
Head,
Main,
NextScript,
} from "next/document";
import { TrackingHeadScript } from "@phntms/react-gtm";
const GA_TRACKING_ID = process.env.NEXT_PUBLIC_GA_TRACKING_ID || "";
export default class MyDocument extends Document {
render = () => (
<Html>
<Head>
<TrackingHeadScript id={GA_TRACKING_ID} />
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
Note: If used alongside any cookie consent scripts, <TrackingHeadScript />
must be placed after.
Parameter | Type | Default | Notes |
---|---|---|---|
props | EventTrackingProps |
undefined | Custom tracking event to push to GTM container. |
Example of a basic tracking event:
import { trackEvent } from "@phntms/react-gtm";
trackEvent({
event: "customEvent",
data: {
action: "Click - To: https://phantom.land/",
category: "CTA",
label: "Click",
},
});
Parameter | Type | Default | Notes |
---|---|---|---|
id | string |
undefined | Same ID used in TrackingHeadScript . Example format: GTM-xxxxxx . |
enable | boolean |
true | Used to enable or disable tracking events. |
Note: This should only be used if needed, for example after user has consented to being tracked. You shouldn't need to toggle this in normal usage.
Parameter | Type | Default | Required | Notes |
---|---|---|---|---|
event | string |
"customEvent" | No | Custom GTM event name, defaults to customEvent . |
data | EventDataProps |
undefined | No | Supports any value(s) in the format [key: string]: any . Example of recommended properties to include; action , category and label . |
This library extends window
and exposes the window.dataLayer
GTM container object.
Useful resource for implementing custom GTM events:
- Omnibug - Chrome browser extension to decode and display outgoing GTM events from within Inspect Element.
Want to get involved, or found an issue? Please contribute using the GitHub Flow. Create a branch, add commits, and open a Pull Request or submit a new issue.
Please read CONTRIBUTING
for details on our CODE_OF_CONDUCT
, and the process for submitting pull requests to us!