Next.jsで作ったウェブサイトにGoogle Tag Manager(GTM)を導入する手順です。
pages/_document.tsx
を以下の内容で作成する。
import Document, { Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
render() {
// GTMのインストール用のタグを代入する
const gtmHeadScript = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-MXXXXXX');`;
return (
<Html>
<Head>
<script dangerouslySetInnerHTML={{ __html: gtmHeadScript }} />
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
本ブログはNext.jsで作っています。アクセス数等を解析するためにGoogle Analyticsの導入を考えていましたが、設定を便利にするためにGTM経由で導入したいと考えていました。
思ったより簡単に導入できて驚きました。以前Gatsby.jsでブログを作っていた頃はプラグイン等の設定で結構困った記憶があるので、Next.jsにしてよかったと思っています。
react-gtm-module
パッケージを使う方法が紹介されていて参考になりました。