TypeScript な ReactコンポーネントからGoogle Tag Managerへクリック数、インプレッション数を送信する
結論
クリック数
const onClickButton = (url: string) => { window.dataLayer.push<dataLayerType>({ event: 'content_click', contentUrl: url, }); }
型定義ファイル側 (dataLayerType.ts)
export interface IEngagementsContensDataLayter { event: string; contentUrl: string; }
インプレッション数(=コンポーネントの表示回数)
useEffect()
で↑と同じことをする。
背景
従来
HTMLの静的なページであればid, classをふってGTM側でそれぞれが何回クリックされたか?ロードされたか?を計測することができる。
今回
Reactにしろ、Vue.jsにしろ、作成したコンポーネントごとの効果測定を行いたいケースは出てくる。 そうなると、id, classを一意にふるのはアプリケーションコード的に読みにくくなる。そしてもう使われないのに謎のid, classが大量に残る。
ということで、
管理しやすく コンポーネントの計測をGTMを使って行う方法はいまのところ dataLayer
を使って送信すること、あるいは ga()
で値を送ることが良さそう。
考えたこと
前提として、今回のコードはTypeScript + React + dataLayer。
気を付けるべきこととしては、
ex) コンポーネントが表示されているページの名称、URLなど
実際に書いてみる
とあるButtonのクリック数を計測したい場合、Buttonの onClick
に以下のイベントを渡す。
const onClickButton = (url: string) => { window.dataLayer.push<dataLayerType>({ event: 'content_click', contentUrl: url, }); }