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

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

※なお、本ドキュメントでの設定方法は媒体タグならびにKARTE計測タグが同一のGTMコンテナ内で設定できる場合に限ります。
GoogleTagManager360をお使いのお客様でゾーン設定ができている場合についてはその限りではありません。

事前準備

組み込み変数にContainer IDが表示されているかご確認ください。表示されていない場合は設定をクリックいただきContainer IDのチェックボックスをチェックいただければ表示されます。
また、dataLayer変数としてGTMにユーザーIDを送っている、またはGTMの変数にユーザーIDが設定されているかご確認ください。(ユーザーIDを送っていない場合でもこと後の手順は可能です)

null

transaction_idの必要性

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

transaction_idの設定方法

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

設定の全体像は以下です。4つのステップに分けて設定方法を紹介します
null

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

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

transaction_idをdataLayer変数でGTMに送信します。

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

HTMLに以下をコピー&ペーストして保存

<script>
  function generateUuid() {
    var chars = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("");
    for (var i = 0, len = chars.length; i < len; i++) {
      switch (chars[i]) {
        case "x":
          chars[i] = Math.floor(Math.random() * 16).toString(16);
          break;
        case "y":
          chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16);
          break;
      }
    }
    return chars.join("");
  }
  var timestamp = new Date().getTime();
  var transactionId = generateUuid();
  google_tag_manager[{{Container ID}}].dataLayer.set('signals_transaction_id', transactionId);
</script>

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

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

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

③KARTEにイベントを送信するためのタグを作成する

タグ > 新規 > タグの設定をクリック > カスタムHTMLを選択
HTMLに以下をコピペしてください
※KARTEのタグのバージョンを確認してください。タブがウェブタグv1の場合は var tagv = "v2" を var tagv = "v1" に変更してください
※既にKARTEにコンバージョンイベントをGTMで送信している場合は該当のタグを編集し、signals_transaction_idを一緒に送信するようにしてください

<script>
 var tagv = "v2"
 var eventName = "testConversion"
 var transactionId = {{signals_transaction_id}}

<!--  Webタグv1 -->
if(tagv ==='v1'){
try{
  tracker.track(eventName, {
     transaction_id: transactionId
  });
} catch(e) {
  if('tracker' in window){
     tracker.track('_error',{
         message: e.message
    });
  }
}
}else{
 <!--  Webタグv2 -->
try{
  krt('send', eventName, {
     transaction_id: transactionId
  });
} catch(e) {
  if('krt' in window){
     krt('send', '_error',{
         message: e.message
    });
  }
}
}
</script>

</script>

詳細設定 > タグの順序付けから「KARTE_conversion発火 が発効する前にタグを配信」をチェックし設定タグから「transactionId発火」を選択してください。また「KARTE_conversion発火 は、transactionId発火 が配信できなかった場合や一時停止となっている場合には配信しないでください」にチェックを入れてください
null

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

④媒体にイベントを送信するためのタグを作成する

Facebook Conversion APIの場合

タグ > 新規 > タグの設定をクリック > カスタムHTMLを選択
HTMLに以下をコピペしてください。

※3行目から6行目までのコードは必要に応じて変更してください。
※また[pixelId], [event_name]はFacebook側のピクセルIDとイベント名を記載してください。
{{user_id}}については事前に設定した実際の変数に書き換えてください。
※事前設定で確認したuser_idをGTMで送信してない場合はvar externalId = {{user_id}}の行を削除し、fbq('init', pixcel, {'external_id': externalId});fbq('init', pixcel);に変更してください。
詳細マッチングをすでに設定している場合は、そのまま併用していただいて問題ありません。
※48時間以内に送信しないと、重複除外されません。

FB_conversion発火
<!-- Facebook Pixel Code -->
<script>
  var transactionId = {{signals_transaction_id}}
  var externalId = {{user_id}}
  var eventName = 'karte_conversion_event'
  var pixcel = '000000000000000'

  !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', pixcel, {'external_id': externalId});
  fbq('track', 'PageView');
  fbq('track', eventName, {}, {eventID: transactionId});
</script>
<!-- End Facebook Pixel Code -->

KARTEのコンバージョン発火タグの設定と同様にタグの順序付けの設定を行います
詳細設定 > タグの順序付けから「FB_conversion発火 が発効する前にタグを配信」をチェックし設定タグから「transactionId発火」を選択してください。また「FB_conversion発火 は、transactionId発火 が配信できなかった場合や一時停止となっている場合には配信しないでください」にチェックを入れてください

null

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

Google拡張コンバージョンの場合

タグ > 新規 > タグの設定をクリック > Google 広告のコンバージョン トラッキング をクリック
事前設定で取得した「コンバージョンID」と「コンバージョンラベル」をペーストしてください
「トランザクションID」は {{signals_transaction_id}} と入力してください

KARTEのコンバージョン発火タグの設定と同様にタグの順序付けの設定を行います
詳細設定 > タグの順序付けから「Google拡張コンバージョン発火 が発効する前にタグを配信」をチェックし設定タグから「transactionId発火」を選択してください。また「Google拡張コンバージョン発火 は、transactionId発火 が配信できなかった場合や一時停止となっている場合には配信しないでください」にチェックを入れてください
null

※コンバージョンID及びコンバージョンラベルは作成した、もしくは送信したコンバージョンアクションページからタグを設定する > Googleタグマネージャーを使用するをクリックすると表示されます
null

発火を確認する

KARTEイベント

KARTE管理画面グロナビ > インサイト > イベント > 検索窓で送信したカスタムイベント(デフォルトはtestConversion)を検索。イベントが存在すれば正しく発火している

Facebook Conversion API

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