Today I Learn/React

[Next.js] next js에서 google analytics 사용하기 (React-gtm-module)

단추언니 2023. 10. 5. 14:31
반응형

next js 에서 google analytics tagmanager를 사용하려면 두가지 단계를 거쳐야 한다.

1. <head>에 GTM 스크립트를 배치한다

 여기서 여러가지 방법이 있지만 가장 간단한 react-gtm-module 라이브러리를 이용하려고 한다.

2. google tag manager에서 history 변경 트리거를 생성한다.

 

사용방법

1. React-gtm-module 설치

yarn add react-gtm-module
타입스크립트 사용중이라면 yarn add @types/react-gtm-module

 

2. gtm추적 코드 삽입

 

gtmId를 env파일에 보관한다(경로는 임의등록)

// .env.production
PUBLIC_ENV=production
GA_TRACKING_ID=GTM-xxx

이후 _app.js에서 아이디를 불러와 사용한다

import { useEffect } from 'react';
import TagManager from 'react-gtm-module';

function MyApp({ Component, pageProps }) {
  useEffect(() => {
      TagManager.initialize({ gtmId: 'GTM-XXXXX' });
  }, []);
  return <Component {...pageProps}/>
}
export default MyApp

 

내 코드에서는 이런식으로 사용했다.

production인 경우에만 구글 Tag Manager를 추가했고, 페이지 이동 시 트리거가 발동하도록 했다.

import { useEffect, useState } from 'react';
import { useRouter } from 'next/router';
import TagManager from 'react-gtm-module';

function MyApp({ Component, pageProps }:AppProps) {
  const router = useRouter();
  
  // google tag manager 초기화
  useEffect(() => {
   const isProd = process.env.PUBLIC_ENV === 'production';
   const GA_TRACKING_ID = process.env.GA_TRACKING_ID;
   let gtmId = '';
   
   if(isProd && GA_TRACKING_ID) {
     gtmId = GA_TRACKING_ID;
   }
   
   if(gtmId) {
     TagManager.initialize({ gtmId });
   }
   
  } ,[])
  
  // 페이지 이동 시 트리거 발동
    useEffect(() => {
  	TagManager.dataLayer({
      dataLayer: {
        event: 'pageView',
        page: {
          url: router.asPath,
          title: window.document.title,
        },
      },
    })
  } ,[router.asPath])
  
  useEffect(() => {
      TagManager.initialize({ gtmId: 'GTM-XXXXX' });
  }, []);
  return <Component {...pageProps}/>
}
export default MyApp
반응형