Ptengine - GA4連携におけるExperienceイベント未送信の原因と解決策について
いつもPtengineをご利用いただき誠にありがとうございます!
お客様からいただくご質問のひとつに「PtengineでGA4連携機能を有効にした際、一部のお客様のGA4に『Experience関連のイベントデータ』が届かない」という事象がございます。今回は、その事象のご説明と解決策をご紹介します。
発生している事象
GA4との連携を有効にした後、一部のお客様のGA4にPtengineのExperience関連のイベントデータが送信されないケースがあります。
主な原因は2つあります:
1.gtag変数が設定されていない
-
一部のサイトでは、GA4のタグが正しく埋め込まれておらず、gtag というグローバル変数が存在しません。
-
Ptengineはこの gtag を使ってGA4イベントを送信するため、変数がなければイベントが送信されません
2.複数のGA4タグによるコンフリクト
- サイト上に複数のGA4タグが設定されている場合、gtag の挙動が不安定になることがあります。
- この場合、送信先のGA4 IDを指定(例:send_to: ‘G-sid’)しないと、イベントが正しく送信されません。
解決策
1.gtag 変数が正常に動作しているかを確認
- デベロッパーツールで gtag が動作されているかを確認してください。
- もし gtag が存在しない場合、gtagを正しく設定してください。
詳しい設定方法はこちら:GA4連携の設定方法(Ptengineヘルプ)
2.Ptengine用のカスタム変数をGTMで取得・設定する
「pt_experience_name」と「pt_experience_version_name」という変数を設定したのちに、JavaScriptを使って、PtengineがdataLayerに送ってくるイベントデータを取得します
①pt_experience_name 取得用のカスタムJavaScript変数
function() {
var dl = window.dataLayer || [];
for (var i = dl.length - 1; i >= 0; i--) {
var item = dl[i];
// gtag style: ["event", "pt_experience_impression", {...}]
if (
item[0] === 'event' &&
item[1] === 'pt_experience_impression' &&
typeof item[2] === 'object' &&
item[2] !== null &&
item[2].pt_experience_name
) {
return item[2].pt_experience_name;
}
// dataLayer.push({event: 'pt_experience_impression', pt_experience_name: '...'})
if (
typeof item === 'object' &&
item !== null &&
item.event === 'pt_experience_impression' &&
item.pt_experience_name
) {
return item.pt_experience_name;
}
}
return '';
}
②pt_experience_version_name 取得用のカスタムJavaScript変数
function(){
var dl = window.dataLayer || [];
for (var i = dl.length - 1; i >= 0; i--) {
var item = dl[i];
// gtag style: ["event", "pt_experience_impression", {...}]
if (
item[0] === 'event' &&
item[1] === 'pt_experience_impression' &&
typeof item[2] === 'object' &&
item[2] !== null &&
item[2].pt_experience_version_name
) {
return item[2].pt_experience_version_name;
}
// dataLayer.push({event: 'pt_experience_impression', pt_experience_name: '...'})
if (
typeof item === 'object' &&
item !== null &&
item.event === 'pt_experience_impression' &&
item.pt_experience_version_name
) {
return item.pt_experience_version_name;
}
}
return '';
}
GTMで上記のカスタム変数を作成し、後ほどイベント送信時に利用します。
3.GTM側でGA4のカスタムイベントを作成する
- 先ほど設定した2つのカスタム変数を用いて、GTMで新しいGA4のカスタムイベントを作成
イベントトリガーの設定方法
-
設定条件
- pt_experience_impression イベントが dataLayer に書き込まれたとき
- かつ:pt_experience_version_name が空でない場合(バージョンが存在する)
- ※以下のキャプチャと同様に設定お願いいたします
この条件を満たしたらGA4イベントを送信します。
4.正常に送信されているか確認する方法
- 体験配信中のページを開いてください
- デベロッパーツールを開きます。
- Networkタブを開き、「collect?v=2」でフィルターをかけます。
- GA4イベントが送信されていれば動作していることになります。
補足
実装前に以下の点を確認してください:
- gtag が正しく定義されているか
- dataLayer に pt_experience_impression イベントが流れてきているか
この2点が確認できれば、上記手順で正しくGA4連携が機能するようになります。