With this custom hook, you can easily use the Google Tag Manager with 0 config, you just have to pass the container ID!
$ pnpm add react-gtm-hook
# or
$ yarn add react-gtm-hook
# or
$ npm install react-gtm-hook
import { GTMProvider } from "react-gtm-hook";
const App = () => {
const gtmConfig = { id: "GTM-ID" };
return (
<GTMProvider config={gtmConfig}>
<div>My awesome app</div>
</GTMProvider>
);
}
import { GTMProvider } from "react-gtm-hook";
const App = () => {
const gtmConfig = {
id: "GTM-ID",
dataLayerName: "customDataLayerName",
};
return (
<GTMProvider config={gtmConfig}>
<div>My awesome app</div>
</GTMProvider>
);
};
import { GTMProvider } from "react-gtm-hook";
const App = () => {
const gtmConfig = {
id: 'GTM-ID',
dataLayer: {
"my-custom-value": "value",
"my-awesome-value": "awesome",
},
dataLayerName: "customDataLayerName",
};
return (
<GTMProvider config={gtmConfig}>
<div>My awesome app</div>
</GTMProvider>
);
};
import { GTMProvider } from "react-gtm-hook";
const App = () => {
const gtmConfig = {
id: "GTM-ID",
environment: {
gtm_auth: "my-auth-token",
gtm_preview: "preview-id",
},
};
return (
<GTMProvider config={gtmConfig}>
<div>My awesome app</div>
</GTMProvider>
);
};
To find the gtm_auth
and gtm_preview
values for your custom GTM environment, go to Admin > Your Container > Environments > Your Environment > Actions > Get Snippet in your Google Tag Manager console. You will find the values you need embedded in the snippet.
import { GTMProvider, useGTMDispatch } from "react-gtm-hook";
const App = () => {
const gtmConfig = {
id: "GTM-ID",
dataLayerName: "customDataLayerName",
};
return (
<GTMProvider config={gtmConfig}>
<div>
<div>Acme Store</div>
<ProductCard />
</div>
</GTMProvider>
);
};
const ProductCard = () => {
const send = useGTMDispatch();
const handleClick = () => send({ event: "buy", product: "product-123" });
return (
<div>
<div>Product Name</div>
<button onClick={handleClick}>Buy</button>
</div>
);
}
MIT