https://qiita.com/cheez921/items/a9e8d257684098db55c3
ここでいうモダンフロント技術は、VueやReactなど仮想DOMを用いられた技術を指します。
要素の表示や要素のクリックなどのトリガーに関して、class名
やらid名
などDOMの情報に対して条件を絞りイベントを制御すると思いますが、必ずしもGTMがその仮想DOMが正しく検知できるとは限らないです。
仮想は消失したり入れ替わったりするものなので。
そのため、GTMの既存の要素の表示や要素のクリックに依存しない設計を理想とします。
モダンフロント系の技術では、React Router
やらvue-router
などの仕組みによって、
サーバーサイドを介さずにクライアントサイドのみでページの変更を行なっているケースが多いです。
つまり、History APIで更新しているだけなので、ページビュートリガーが機能しないです。
仮に既存のGTMのトリガーを使うとしても、初期ロード時は「ページビュー」、遷移時は「履歴の変更」が発火するため、 2つのトリガーを1つのタグに対して付与する必要があります。 ※ 正しく発火する保証はしきれないかなとおもいます...重複するケースがありそうな気もしてます。
既存のトリガーがすこぶる使えなさそうで「じゃあどうすればいい?GTM使わなければいい?」って思った人もいると思いますが、
ここでカスタムイベント トリガー
の登場です!
カスタムイベントトリガーは、キー名event
/ 値イベント名
でdataLayer.push
されたものを検知するトリガーです。
下記のように設定します。
dataLayer.push({
event: "page_view" // eventパラメータにイベント名をいれる
})
▼ ドキュメント
つまり、ページビュー
やら要素のクリック
などをコード側で検知して、
このデータレイヤーをpushしてあげれば良いわけです!!