New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

gtm-react-hook

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gtm-react-hook

Easy-to-use React hooks for Google Tag Management based on TypeScript

  • 0.0.17
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
87
decreased by-10.31%
Maintainers
1
Weekly downloads
 
Created
Source

📊 Easy-to-use React hooks for Google Tag Management based on TypeScript

🔥 Features

  • Based on React hooks
  • Fully typed with TypeScript
  • Tiny bundle size ~1kB
  • Support tools for custom GTM configuration
  • React.js is the only dependency
  • Logging events
  • Test covered

🛠 Install

npm install gtm-react-hook
or
yarn add gtm-react-hook

🚀 Quickstart

import React, { useEffect } from "react";
import { useGTM } from "gtm-react-hook";
import { useLocation } from "react-router-dom";

const App = () => {
  const { runGTM, eventGTM } = useGTM();
  const location = useLocation();

  useEffect(() => {
    runGTM({
      tagId: "GTM-XXXXXXX", // Provide your Tag ID
    });
  }, []);

  useEffect(() => {
    eventGTM("page_view", {
      pathname: location.pathname,
    });
  }, [location.pathname]);

  return <>...</>;
};

🧙🏻‍♂️ API

useGTM()

const { runGTM, eventGTM } = useGTM();
runGTM({ tagId: string, dataLayerName?: object, environment?: { gtm_auth: string, gtm_preview: string }, domain?: string, script?: string, nonce?: string, devMode?: boolean })
  1. tagId (required) - your GTM measurement ID;
  2. dataLayerName - custom name of dataLayer object;
  3. environment - GTM environment params;
  4. domain - custom GTM domain;
  5. script - custom GTM script's name;
  6. nonce;
  7. devMode - add logging for GTM initialization & events;
eventGTM(eventName: string, data?: object)
  1. eventName (required) - name of an event;
  2. data - payload of dataLayer (action, url, customerID, etc);

💅🏽 Examples

Page tracking

const { eventGTM } = useGTM();
const location = useLocation();

useEffect(() => {
  eventGTM("page_view", { location: location.pathname });
}, [location]);

Track event

const { eventGTM } = useGTM();

const handleSaveCustomerInfo = (customer) => {
  eventGTM("customer_info", {
    customerId: customer.customerId,
    customerRegion: customer.customerRegion,
  });
};

return <button onClick={handleSaveCustomerInfo}>Submit</button>;

Custom data layer name

const { runGTM } = useGTM();

useEffect(() => {
  runGTM({
    gtmId: "GTM-XXXXXXX",
    dataLayerName: "myGTMLayer", // all GTM events will be stored in `window.myGTMLayer` key
  });
}, []);

Installation only after user has accepted analytics

const { runGTM } = useGTM();

useEffect(() => {
  if (isUserConfirmAnalytics) {
    runGTM({
      gtmId: "GTM-XXXXXXX",
    });
  }
}, [isUserConfirmAnalytics]);

Logging

const { runGTM } = useGTM();

useEffect(() => {
  runGTM({
    gtmId: "GTM-XXXXXXX",
    devMode: true, // add GTM logs to browser's console
  });
}, []);

Keywords

FAQs

Package last updated on 02 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc