Facebook Conversion APIやGoogleの拡張コンバージョン等のコンバージョン補完コネクタで必要なtransaction_idの設定方法を紹介します。

※作成時期の関係で画面のスクリーンショットが実際ご自身で操作する画面と異なっている可能性がございます。

事前準備

設定で自社が発行しているユーザーIDが必要になります。(会員やコンバージョンを一意に特定できるIDであれば可)
dataLayer変数としてGTMにユーザーIDを送っている、またはGTMの変数にユーザーIDが設定されているかご確認ください。
null

transaction_idの必要性

コンバージョン補完はブラウザの送信できず欠損したコンバージョンをサーバーから送ることができます。
その際単純にブラウザとサーバーから同じイベントを送ると媒体側では2重計測になってしまうため、一意なIDと一緒にイベントを送る必要があります。
媒体は同一のIDがブラウザ、サーバーから送られることで両者が同じイベントだということを識別し重複除外が可能になります。
上記の一意のIDがtransaction_idとなります。

transaction_idの設定方法

ECの場合購入ごとにユニークなオーダーIDをtransaction_idとして利用することが可能です。
今回は資料請求や会員登録といった必ずしもユニークなIDが発行されないケースを前提に設定方法を解説します。

※本ドキュメントはあくまで設定方法の一例です。実際の設定方法はGTMドキュメントを参考に自社に最適な方法をご自身でご判断ください

transaction_id生成用のタグを作成する

transaction_idをdataLayer変数でGTMに送信します。
transaction_idはuser_id変数と送信時間から作成しています。

タグ > 新規 > タグの設定をクリック > カスタムHTMLを選択
null

HTMLに以下をコピペする

<script>
  var userId = {{user_id}};
  var timestamp = new Date().getTime();
  var transactionId = userId ? userId + timestamp: String(Math.random()) + timestamp;
  var dataLayer = window.dataLayer ? window.dataLayer : [];

  dataLayer.push({
    event: 'createTransactionId',
    transaction_id: transactionId
  })

try{
  tracker.track('createTransactionId', {
     transaction_id: transactionId
  });
} catch(e) {
  if('tracker' in window){
     tracker.track('_error',{
         message: e.message
    });
  }
}
</script>

※user_idに相当する変数名が「user_id」でない場合{{user_id}}のuser_idの部分を変数名に変更してください

コンバージョン時に発火するトリガーを設定し保存
null

データレイヤーの変数を作成する

送信したtransaction_idをもとにデータレイヤーの変数を作成します

変数 > 新規 > 変数の設定をクリック > データレイヤーの変数を選択
データレイヤーの変数名にtransaction_idと入力し、名前をtransaction_idとして保存
null

カスタムイベントトリガーを作成する

送信したcreateTransactionIdイベントをもとにカスタムイベントトリガーを作成します

トリガー > 新規 > トリガーの設定をクリック > カスタムイベントを選択
イベント名にcreateTransactionIdを入力し、名前はcreateTransactionId発火等にし保存
null

facebook広告にイベントを送信するためのタグを作成する

タグ > 新規 > タグの設定をクリック > カスタムHTMLを選択
HTMLに以下をコピペ。※5行目から14行目までのコードは必要に応じて変更してください。また[pixelId], [event_name]はご自身のピクセルID、送りたいイベント名を記載してください

<!-- Facebook Pixel Code -->
<script>
  var transactionId = {{transaction_id}}
  var externalId = {{user_id}}

  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', '[pixelId]', {'external_id': externalId});
  fbq('track', 'PageView');
 fbq('[event_name]', {}, {eventID: transactionId});
</script>
<!-- End Facebook Pixel Code -->

トリガーにはさきほど作成したカスタムイベントトリガー(ドキュメント通りに作成していればcreateTransactionId発火)を設定してください
null

発火を確認する

KARTEイベント

KARTE管理画面グロナビ > インサイト > イベント > 検索窓でcreateTransactionIdを検索。イベントが存在すれば正しく発火している

facebook

イベントマネージャーで表示されるイベント一覧に「facebook広告にイベントを送信するためのタグを作成する」で設定したイベント名が存在し、接続方法がブラウザ・サーバーと表示されていれば正しく発火している
null