· HARUBOUYA · analytics · 13 min read

サイズレコメンドのタグをGTMから入れる

外部のサイズ提案ツールを入れるとき、GTMから3種類のタグを配信します。何を送るか、複数商品を買われたときの書き方、そしてUA時代のeec.purchaseだけでは足りない項目を整理します。

スマートフォンからノートPCのデータベースへデータが送られるイラスト

服や靴のECで「サイズが分からないから買わない」は大きな離脱理由です。そこで外部のサイズ提案ツールを入れる場面が出てきます。

導入自体はタグを貼るだけです。ただし購入完了ページのタグだけは手間がかかります。1回の注文で複数の商品が買われるため、そのまま値を入れても成立しません。ここを中心に書きます。

どのようなタグを入れるか

貼るのは3種類です。すべてGTMの「カスタムHTML」タグとして登録します。

#タグ設置場所発火タイミング役割
①共通タグ全ページの <head>全ページ表示時「このユーザーは誰か」を伝えます
②商品詳細タグ商品ページの <body>商品詳細ページ表示時「どの商品を見たか」を伝えます
③購入完了タグ購入完了ページの <body>購入完了時「何を・いくらで・どのサイズで買ったか」を伝えます

①がユーザーの識別、②がレコメンドの材料、③が効果測定です。③がないと、入れた意味を数字で示せません。

① 共通タグで送る値

項目中身必須
クライアントIDツール側が発行する固定値必須
ユーザーIDログイン中の会員ID。未ログインなら空必須
会員ランクゴールド・シルバーなど任意

② 商品詳細タグで送る値

項目中身必須
商品ID表示している商品の品番必須

③ 購入完了タグで送る値

項目中身必須
クライアントID固定値必須
注文ID注文番号必須
購入点数商品ごとの個数必須
商品ID購入した商品の品番必須
売価1商品あたりの金額(整数)必須
サイズ購入したサイズ(S/M/Lなど)必須
会員IDログイン中の会員ID必須

複数商品を買われたときの書き方

ここが本題です。1回の注文で4点買われた場合、購入点数・商品ID・売価・サイズの4項目は、区切り文字でつないで1つの値にします。

区切り文字は # を使う仕様が多いです。ただし # はURLの中で特別な意味を持つため、URLエンコードして %23 に変換して書きます。

例

次の注文があったとします。

商品ID購入数価格サイズ
A111,000円S
B112,000円S
B122,000円M
C113,000円L

タグに入れる値はこうなります。

注文ID   = "9999999"
購入点数 = "1%231%232%231"
商品ID   = "A1%23B1%23B1%23C1"
売価     = "1000%232000%232000%233000"
サイズ   = "S%23S%23M%23L"

絶対にやってはいけない書き方

4項目で順番がずれると、どの商品がいくらでどのサイズだったかが対応しなくなります。

商品ID = "A1%23B1%23B1%23C1"          ← A1, B1, B1, C1 の順
売価   = "3000%232000%232000%231000"  ← C1 の値段から始まっている

値としては正しく入るため、エラーにならないまま間違ったデータがたまります。これが最悪の形です。

実装の考え方

購入商品の配列を、1つのループで順に取り出し、4つの入れ物へ同時に入れていきます。

var sep = '%23';
var nums = [], ids = [], prices = [], sizes = [];

for (var i = 0; i < products.length; i++) {
  nums.push(encodeURIComponent(products[i].quantity));
  ids.push(encodeURIComponent(products[i].id));
  prices.push(encodeURIComponent(Math.floor(Number(products[i].price))));
  sizes.push(encodeURIComponent(products[i].variant || ''));
}

4項目を別々のループで作らないでください。1つのループで同時に入れていけば、順番は構造上ずれません。

入れるときの注意点

注意点内容
売価は整数にします税込・税抜を先に決めます。小数が入る場合は切り捨てます
未ログインは空文字にしますundefined や null がそのまま文字列で入ると、ツール側で不正値になります
ゲスト購入のトリガーを忘れません会員購入とゲスト購入でページや発火条件が分かれている場合、両方をトリガーに入れます
サイズが空の商品がありますサイズの概念がない商品(雑貨など)では空になります。空文字で桁数を揃えます
タグの読み込み順値を組み立てるスクリプトが、ツール側のスクリプトより先に動く必要があります
フォルダに分けて登録しますタグが増えるため、GTMの「フォルダ」機能でまとめておきます

確認手順

  1. GTMの管理画面で右上の「プレビュー」を押します
  2. 表示された入力欄にサイトのURLを入れて「Connect」を押します
  3. 別ウィンドウでサイトが開くので、実際に2種類以上の商品をカートに入れて購入します
  4. プレビュー画面の左側で「Purchase」に相当するイベントを選びます
  5. 「Tags Fired」に購入完了タグが入っていることを確認します
  6. タグをクリックし、送信された値を開いて、4項目の並び順が一致しているかを目視します

1商品だけのテストで終わらせません。並び順の問題は、2商品以上でないと再現しません。

UA時代の eec.purchase では取得できない内容

GTM上で購入データを取るとき、UA(ユニバーサルアナリティクス)時代の拡張eコマースで作った eec.purchase のデータ層をそのまま流用しようとすることが多いです。

ここに含まれるのは、おおむね次の範囲です。

含まれるもの備考
注文IDactionField の中
商品ID・商品名商品ごと
価格・個数商品ごと
バリエーションvariant。中身は実装次第
カテゴリ・ブランド商品ごと

一方、含まれないか、当てにできないものが次の通りです。

項目なぜ足りないかどうするか
会員ID購入イベントの中には入っていませんログイン情報を持つ別の変数を用意します
会員ランク同上。そもそもUAの拡張eコマースの範囲外サイト側でデータ層に出してもらいます
サイズvariant に入る保証がありません。色とサイズが連結されていたり、空だったりします実機で中身を確認します。入っていなければサイト側に追加を依頼します
税・送料の内訳actionField に合計しかないことが多いです送る値の定義(税込か税抜か)を先に決めます
ゲスト購入の区別会員IDが空、としか分かりません購入完了ページのURLやトリガーで判別します

特にサイズに注意します。variant という項目名があるだけで、そこにサイズが入っているとは限りません。「色/サイズ」が1つの文字列で入っている実装、空のままの実装、どちらもよくあります。

確認の順番は次の通りです。

  1. GTMのプレビューで実際に購入し、variant の中身を目で見ます
  2. 想定と違えば、サイト側の開発担当にデータ層への追加を依頼します
  3. 追加されるまでは、その項目を空で送るか、公開自体を待つかを決めます

中身を見ないまま設計を進めません。項目名だけを信じて実装すると、公開後に空データがたまります。

失敗例

失敗何が起きるか代わりにやること
4項目を別々のループで組み立てます条件分岐が入った瞬間に順番がずれます1つのループで同時に入れます
区切り文字をエンコードしませんURLの一部として解釈され、値が切れます%23 に変換して書きます
1商品だけで動作確認を終えます複数商品の不具合に気づきません2商品以上、同一商品の別サイズを含めてテストします
variant にサイズが入る前提で作ります公開後に空データがたまります実機で中身を確認してから設計します
未確定の項目を仮の値で埋めて公開します誤ったデータで効果測定してしまいます確定するまで空で送ります。もしくは公開を待ちます
税込・税抜を決めずに送ります後からレポートの数字が合いません送る値の定義を1枚の表にして合意しておきます

まとめ

  • 貼るタグは3種類です。購入完了タグがないと効果を数字で示せません
  • 複数商品は区切り文字で連結し、%23 にエンコードします
  • 4項目の並び順を揃えます。ずれてもエラーにならないため気づけません
  • 組み立ては1つのループで行います。別々に作ると必ずずれます
  • UA時代の eec.purchase には、会員ID・会員ランクが入っていません。サイズも当てにできません
  • 確認は必ず2商品以上で行います。1商品では並び順の問題が再現しません

先にやることは実装ではなく、送る項目の定義を1枚の表にまとめ、サイト側と合意することです。値の意味がずれたままでは、正しく動いても数字が合いません。

Share:

参考になったら、いいねを押してください。

コメント

    お名前とコメントは、確認後にこのページで公開されます。メールアドレスや電話番号などは書かないでください。

    Back to Blog

    Related Posts

    View All Posts »
    GA4移行後にCVが計上されなくなるGTMタグの直し方

    GA4移行後にCVが計上されなくなるGTMタグの直し方

    タグは発火しているのにコンバージョンが記録されません。UA時代に書かれたカスタムHTMLタグが静かに失敗する仕組みと、修正前・修正後のコードを並べて直し方を整理します。