はじめに
この記事では、Tealium→GTMへの大規模移行プロジェクトでタグ発火率を95%から99.8%に改善した8ヶ月間の取り組みを共有します。
2,724項目のテスト設計と聞くと大げさに聞こえるかもしれませんが、実際にやってみて気づいたのは、項目数よりも「観点」の方がずっと大事だったということです。
この記事の対象読者
- GTM移行を検討中のマーケター・エンジニア
- GA4 Eコマース実装を担当している方
- 「タグはなんとなく動いてるけど、本当に大丈夫?」と不安な方
ドキュメントがない状態から始める
「定義書ですか…すみません、あまり整備できていなくて」
プロジェクト開始時、お客様からそう伺いました。
Tealium、Braze、GA4、LINE連携など、複数のデータ取得ツールが併存している状態。それをGTMに一元化したいというご依頼でしたが、既存の設定内容を説明するドキュメントはほとんど残っていませんでした。
定義書やテスト項目書は、私たちの方で作成することになりました。
各ツールの仕様書を一から読み解き、Tealiumの既存設定を解析。どの変数が、どんな条件で、どんな値を送っているのか。JavaScriptのカスタムロジックも多数あり、コードを一行ずつ追いかける日々が続きました。
その結果を「マッピングシート」としてまとめ、Tealiumの設定値・タグタイプ・HTMLをGTMでどう実装するかを対応させていきました。定義書がないなら、自分たちで作るしかない。
移行前のタグ発火率は95%だった
Tealiumの設定を調査していく中で、移行前のタグ発火率が95%程度であることがわかりました。
「95%なら、まあまあ良いんじゃない?」と思うかもしれません。でも、年間10万件の購入があるECサイトで考えてみてください。
| 発火率 | 年間CV10万件の場合 | ビジネスへの影響 |
|---|---|---|
| 95.0% | 5,000件が欠損 | 広告ROAS計測に最大5%の誤差 |
| 99.8% | 200件が欠損 | 誤差0.2%、実用上問題なし |
5,000件のコンバージョンデータが消えている。
その5,000人が何を買ったのか、どの広告を見て来たのか、何回目の訪問だったのか。永遠にわかりません。
せっかくGTMに移行するなら、この発火率も改善したい。タグ管理の一元化だけでなく、データ品質の向上も目指すことにしました。
プロジェクト概要
| 項目 | 内容 |
|---|---|
| 期間 | 2024年6月〜2025年1月(約8ヶ月) |
| 対象 | アパレル4ブランドのECサイト |
| 移行内容 | Tealium iQ → Google Tag Manager |
| 最終成果 | タグ発火率 95.0% → 99.8% |
4つのブランドを並行して移行しながら、マーケティングチームの業務を止めない。これが最大の制約条件でした。
2,724項目のテスト設計——私が重視した3つの観点
2,724項目と聞くと、「とにかく数をこなした」という印象を持つかもしれません。
でも実際は逆でした。最初から2,724項目を目指したわけではなく、3つの観点を徹底した結果、この数になったというのが正直なところです。
観点①:網羅性
すべての変数・タグの組み合わせを検証する。
当たり前のことですが、4ブランド×複数ページタイプ×複数変数となると、組み合わせは膨大になります。「たぶん大丈夫」で済ませると、本番で漏れが出る。
観点②:再現性
誰でも同じ結果を得られる手順書を作る。
私がいなくても、次の担当者が同じ品質でテストできる状態を目指しました。属人化させたくなかったんです。
観点③:効率性
Excel関数とスクリプトで自動化できる部分は自動化する。
2,724項目を手作業でやっていたら、8ヶ月では終わりません。
テスト項目の全体像
| カテゴリ | 検証内容 |
|---|---|
| 変数テスト | dataLayer値の取得確認 |
| 拡張機能テスト | カスタムHTML/JSの動作確認 |
| GA4タグテスト | イベント送信とパラメータ確認 |
| その他タグテスト | Braze、LINE連携等のサードパーティタグ |
総作業項目数は2,400以上(変数:886個、トリガー:393個、カスタムHTMLタグ:646個)。これらすべてに対してテストを実施し、最終的に2,724項目のテスト項目となりました。
効率化の工夫——手作業では終わらない
WRAPROWS関数でテスト項目を自動生成
2,724項目を手で書くと何日もかかります。Excel WRAPROWS関数を使えば、ブランド×ページタイプ×変数の組み合わせを数分で自動展開できます。
=WRAPROWS(テスト項目リスト, 4)
地味な工夫ですが、これがなかったらプロジェクトは回りませんでした。
dataLayer変数の一括取得スクリプト
Chrome DevToolsで実行し、変数の実測値を効率的に取得しました。
// dataLayer変数の一括取得
Object.keys(google_tag_manager['GTM-XXXXXX'].dataLayer.get())
.map(key => ({
key: key,
value: google_tag_manager['GTM-XXXXXX'].dataLayer.get(key),
type: typeof google_tag_manager['GTM-XXXXXX'].dataLayer.get(key)
}))
.forEach(item => console.log(`${item.key}: ${item.value} (${item.type})`));
トリガータイミングの選定
purchaseイベントなど重要なコンバージョン計測では、トリガータイミングの選定が成否を分けます。
検証の過程で、dataLayerReadyイベント発火時点では一部の変数(page_typeなど)が未定義になるケースがあることがわかりました。
| トリガー | タイミング | メリット | デメリット |
|---|---|---|---|
| dataLayerReady | DOM構築前 | 高速 | 変数未定義リスク |
| Window Loaded | 全リソース読込完了 | 全変数確定 | 遅延 |
| カスタムイベント | サイトからのイベント送信後 | 柔軟 | 実装依存 |
結論として、purchaseイベントは「速さより正確さ」を優先し、変数が確定してから発火するトリガー設計に変更しました。
カスタムHTMLタグの移植(646個)
Tealiumで動作していた646個のカスタムロジックをGTMに移植しました。
コード変換の例
// ━━━ Before (Tealium) ━━━
if (b["page_type"] === "product") {
utag.link({
event_name: "product_view",
product_id: b["product_id"]
});
}
// ━━━ After (GTM) ━━━
if ({{Page Type}} === "product") {
dataLayer.push({
event: "product_view",
product_id: {{Product ID}}
});
}
Tealiumのb["変数名"]をGTMの{{変数名}}に変換し、utag.link()をdataLayer.push()に置き換える。基本的な変換パターンですが、646個すべてに対してこの作業を行いました。
成果
定量的成果
| 指標 | 移行前 | 移行後 | 改善幅 |
|---|---|---|---|
| タグ発火率 | 95.0% | 99.8% | +4.8pt |
| エラー率 | 10.0% | 0.2% | -98% |
マーケティングチームへの価値
タグ管理の一元化という当初の目的に加えて、データ品質の向上も実現できたプロジェクトでした。
マーケティングチームがデータ活用しやすい環境を整備し、GA4イベント11種類(view_item、add_to_cart、purchase等)の設計・実装も完了しました。
このプロジェクトで学んだこと
1. 体系的テスト設計の重要性
「なんとなく動く」では不十分。網羅的な検証項目リストがあることで、チーム全体の品質が担保されます。
2. ドキュメント化の価値
マッピングシートやテスト結果報告書を整備したことで、ナレッジが組織資産として残りました。次の担当者が「これ何?」とならない状態を作ることを意識しました。
3. チームでの検証体制が品質を上げる
一人で全部やろうとすると、見落としが出ます。今回は複数人で検証を分担し、問題があればSlackで即共有する体制を取りました。「発火しない」という報告から原因特定までのスピードが上がり、結果的に品質向上につながりました。
まとめ
GTM大規模移行プロジェクトで実践した2,724項目のテスト設計を紹介しました。
この記事のポイント
- タグ発火率99.8%は、マーケティングデータ品質の基盤
- 項目数より「観点」(網羅性・再現性・効率性)が大事
- ドキュメントがない状態でも、自分たちで定義書を作れば移行できる
もしあなたが今、GTM移行やタグ実装を担当しているなら、ぜひ「マーケティングチームが安心してデータを使える状態」をゴールに設定してみてください。
技術的な正しさだけでなく、その先にいる人たちが困らない状態を作る。それが、このプロジェクトで私が一番大切にしたことです。
技術スタック
- タグ管理: Google Tag Manager (GTM)
- 分析: Google Analytics 4 (GA4)
- 開発言語: JavaScript (カスタムHTML)
- データ形式: JSON, dataLayer
- 検証ツール: GTM Preview モード、GA4 DebugView
- ドキュメント: Google Sheets, Excel