概要
KARTE Signalsのコンバージョン補完機能で使用するtransaction_idを、Google Tag Manager(以下GTM)を使用して生成する方法を説明します。
この方法は、サイト内に一意の注文ID(order_id等)が存在しない場合に利用できます。
前提条件
- GTMが導入済みであること
- KARTE計測タグがGTMで設定されていること
- 広告プラットフォームのタグ(例:Google広告、Facebook広告など)がGTMで設定されていること
設定手順
0. 全体像

1. transaction_id生成用のカスタムHTMLタグを作成
- GTMの「タグ」→「新規」を選択
- タグの種類で「カスタム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 transactionId = generateUuid();
  dataLayer.push({
    'signals_transaction_id': transactionId
  });
</script>- 詳細設定内のタグ呼び出しオプションで「1回のイベントにつき1度」が設定されていることを確認
- タグ名を「transactionId発火」として保存
 ※タグ名は任意ですが、識別しやすい名称をおすすめします。補足この時点ではトリガーを設定しないでください。GTM上で警告が表示されますが、後ほど順序制御で実行順を制御するため、そのまま保存して問題ありません。 
2. データレイヤー変数の作成
- GTMで「変数」→「新規」を選択
- 変数の種類で「データレイヤーの変数」を選択
- データレイヤー変数名に「signals_transaction_id」を入力
- 変数名を「signals_transaction_id」として保存
 ※変数名は任意ですが、タグ内で使用する名前と一致させてください。
- データレイヤーバージョンは「バージョン2」を選択 
3. KARTEコンバージョンタグの設定
- KARTEのコンバージョンタグの詳細設定を開く
- 「タグの順序付け」を有効化
- 「transactionId発火」タグを、このタグよりも前に実行されるように設定
- 「このタグは、指定したタグが配信できなかった場合や一時停止となっている場合には配信しない」オプションにチェックを入れる
- KARTEコンバージョンタグで、transaction_id に{{signals_transaction_id}}変数を使用するように設定する 
4. 広告プラットフォームタグの設定
- 各広告プラットフォームのタグの詳細設定を開く
- 「タグの順序付け」を有効化
- 「transactionId発火」タグを、このタグよりも前に実行されるように設定
- 「このタグは、指定したタグが配信できなかった場合や一時停止となっている場合には配信しない」オプションにチェックを入れる
- 各広告プラットフォームのタグで、{{signals_transaction_id}}変数を使用するように設定する 
※KARTEのタグと、トリガーを一致させてください。
動作確認方法
- GTMの「プレビューモード」で対象ページを開く- コンバージョンページで transactionId発火→KARTEコンバージョンタグの順に実行されていることを確認
 
- コンバージョンページで 
- ブラウザの開発者ツールで dataLayerを確認し、signals_transaction_idが格納されていることを確認
- 各広告プラットフォーム(例:Google広告、Facebook広告)のイベントマネージャーで transaction_idが正しく送信されていることを確認
注意事項
- KARTEタグと広告タグは、同一のGTMコンテナ内で設定してください
- 既存のタグに変更を加える際は、事前にバックアップを取りましょう
- 本番反映前に必ずテスト環境での動作確認を行ってください
- データレイヤー変数の名前やスコープが一致していないと、値が正しく取得できない可能性があります
- 「タグの順序」が正しく設定されていない場合、transaction_idが未設定のまま送信されてしまう可能性があります
トラブルシューティング
| 事象 | 確認ポイント | 
|---|---|
| transaction_idが生成されない | - カスタムHTMLタグが有効か(タグの有効化設定を確認) - dataLayer.pushが発火しているか- JavaScriptエラーが出ていないか(ブラウザの開発者ツールのコンソールを確認) | 
| transaction_idが空のまま送信される | - KARTEタグや広告タグで {{signals_transaction_id}}を正しく参照しているか- データレイヤー変数 signals_transaction_idが正しく定義されているか- タグの順序設定が正しく設定されているか( transactionId発火→ 各コンバージョンタグ) | 
| コンバージョンが重複して送信される | - 複数回 transaction_idを生成していないか(ページ内で複数回実行されていないか)- タグの発火条件が正しく設定されているか | 
| 広告側で transaction_idが未反映 | - 広告タグの設定で {{signals_transaction_id}}を参照しているか- 使用しているテンプレートがカスタムJavaScriptや変数の参照を許可しているか | 
 
 

