Ptengine-GA4連携におけるExperienceイベント未送信の原因と解決策について

Ptengine - GA4連携におけるExperienceイベント未送信の原因と解決策について

いつもPtengineをご利用いただき誠にありがとうございます!

お客様からいただくご質問のひとつに「PtengineでGA4連携機能を有効にした際、一部のお客様のGA4に『Experience関連のイベントデータ』が届かない」という事象がございます。今回は、その事象のご説明と解決策をご紹介します。


:pushpin:発生している事象

GA4との連携を有効にした後、一部のお客様のGA4にPtengineのExperience関連のイベントデータが送信されないケースがあります。

:mag:主な原因は2つあります:

1.gtag変数が設定されていない

  • 一部のサイトでは、GA4のタグが正しく埋め込まれておらず、gtag というグローバル変数が存在しません。

  • Ptengineはこの gtag を使ってGA4イベントを送信するため、変数がなければイベントが送信されません

2.複数のGA4タグによるコンフリクト

  • サイト上に複数のGA4タグが設定されている場合、gtag の挙動が不安定になることがあります。
  • この場合、送信先のGA4 IDを指定(例:send_to: ‘G-sid’)しないと、イベントが正しく送信されません。

:white_check_mark:解決策

1.gtag 変数が正常に動作しているかを確認

  • デベロッパーツールで gtag が動作されているかを確認してください。
  • もし gtag が存在しない場合、gtagを正しく設定してください。

:point_right: 詳しい設定方法はこちら: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で上記のカスタム変数を作成し、後ほどイベント送信時に利用します。


:white_check_mark: 3.GTM側でGA4のカスタムイベントを作成する

  • 先ほど設定した2つのカスタム変数を用いて、GTMで新しいGA4のカスタムイベントを作成

イベントトリガーの設定方法

  • 設定条件
    • pt_experience_impression イベントが dataLayer に書き込まれたとき
    • かつ:pt_experience_version_name が空でない場合(バージョンが存在する)
    • ※以下のキャプチャと同様に設定お願いいたします

この条件を満たしたらGA4イベントを送信します。

:white_check_mark: 4.正常に送信されているか確認する方法

  1. 体験配信中のページを開いてください
  2. デベロッパーツールを開きます。
  3. Networkタブを開き、「collect?v=2」でフィルターをかけます。
  4. GA4イベントが送信されていれば動作していることになります。

補足

実装前に以下の点を確認してください:

  • gtag が正しく定義されているか
  • dataLayer に pt_experience_impression イベントが流れてきているか

この2点が確認できれば、上記手順で正しくGA4連携が機能するようになります。