Google Tag Manager
Google Tag Manager(GTM)は、ウェブトラッキングルールを設定し、Google Analytics 4、Google Ads、LinkedIn Adsなどのさまざまな分析・広告プラットフォームにデータを送信するウェブタグ管理ツールです。
GTMコードスニペットはGitLabの主要なサブドメインに展開されています:
- about.gitlab.com
- gitlab.com(トライアルオンボーディングとサインアップページ)
- docs.gitlab.com
- forum.gitlab.com
- handbook.gitlab.com
- page.gitlab.com
- advisories.gitlab.com
- learn.gitlab.com
- internal.gitlab.com
- explore.gitlab.com
- customers.gitlab.com(eコマースページ)
- university.gitlab.com
- contributors.gitlab.com
- support.gitlab.com
主要コンポーネント
タグはウェブサイト上の活動(ページビュー、動画再生、リンクのクリック、スクロール)からのイベント名を含み、データの送信先を指定し、追加のイベント情報を含みます。各タグには、いつどのように発火するかを決定するトリガーがあり、ページ名や動画タイトルなどの追加詳細を取得するための変数を含む場合があります。
トリガーはタグをいつ発火させるかを決定します。GTMには組み込みイベントリスナーがありますが、私たちは主にdataLayerイベントに基づくカスタムイベントトリガーと、クリックやスクロールに対する信頼性の高い組み込みトリガーを使用しています。
変数はイベントに関する追加情報を取得し、GA4のパラメーターとして格納します。これらはブラウザのHTML、URLコンポーネント、Cookie、またはカスタムdataLayer実装からデータを取得できます。
クリックトラッキング
about.gitlab.com上の各CTA(コールトゥアクション)リンクには以下のデータ属性が含まれています:
- data-ga-location: ページのセクション(例: ヘッダー、ヒーロー、ボディ、フィーチャー、フッター)
- data-ga-name: 要素の名前(例: 無料トライアル、セールス、Buy Premium)
about.gitlab.comのユーティリティヘッダーセクションの各CTAには以下を含める必要があります:
- data-nav: ユーティリティヘッダーセクション内の要素名(例: 登録、ログイン、ロゴ)
ナビゲーションメニューの各リンクには以下を含める必要があります:
- data-nav-levelone: ナビゲーションメニューのタブ名
- data-nav-leveltwo: ナビゲーションメニューの要素名
GTMのクリックリスニングトリガーは、データ属性に基づいて関連するGA4イベントタグを発火させます。データ属性のないリンクも追跡されますが、GA4のcta_locationイベントパラメーターには汎用的な「in-line」値が含まれ、cta_nameイベントパラメーターにはリンクのテキストとURLが含まれます。
データレイヤートラッキング
ウェブサイト上のカスタムイベントはdataLayerメソッドを介して追跡されます。希望するアクションが実行されると、JavaScriptコードがウェブサイトに配置されます。dataLayerコードはブラウザにイベント名と変数を送信します。GTMのカスタムイベントトリガーがブラウザからdataLayerイベント名をリスニングします。
dataLayerコードの例:
dataLayer.push({
'event': 'videoStart',
'videoTitle': 'The One DevOps Platform'
});
サーバーサイドGoogle Tag Manager
サーバーサイドGoogle Tag Manager(sGTM)は、ユーザーのブラウザから直接ではなく、自社のサーバーインフラを通じてマーケティングおよび分析データを処理するサーバーベースのトラッキングソリューションです。
従来のトラッキング: ウェブサイト → サードパーティサービス(Google Analytics、Facebookなど)
サーバーサイドトラッキング: ウェブサイト → 自社サーバー → サードパーティサービス
インフラ設定
アーキテクチャの概要
私たちは3つの地域のCloud Runサービスを備えたグローバルなサーバーサイドGTMインフラを運用しています:
- US地域: 北米と南米からのトラフィックを処理
- EU地域: ヨーロッパ、中東、アフリカからのトラフィックを処理
- アジア地域: アジア太平洋からのトラフィックを処理
すべてのトラフィックは単一のドメイン(analytics.gitlab.com)を通じてルーティングされます。
トラフィックルーティングの仕組み
- ユーザーが世界中のどこからでも私たちのウェブサイトを訪問します
- トラッキングデータがanalytics.gitlab.comに送信されます
- ロードバランサーが自動的にリクエストを最寄りの地域サーバーにルーティングします
- 地域サーバーがデータを処理し、適切な分析プラットフォームに転送します
- 地理的な最適化によりグローバルに高速なレスポンスタイムを確保します
地域別のメリット
マルチリージョン設定はいくつかの主要な利点を提供します。低レイテンシにより、ユーザーに近い場所でデータが処理されるため、より速いレスポンスタイムが実現します。EUのデータをEUインフラ内に留めることができるため、データ所在地コンプライアンスが達成され、規制要件を満たします。私たちのシステムには組み込みの冗長性があり、一つの地域で問題が発生した場合でも、トラフィックが自動的にリダイレクトされてサービスの可用性が維持されます。最も重要なのは、統合されたドメインを通じてグローバルに同じ設定が機能するため、ユーザーは場所に関わらず一貫したトラッキングエクスペリエンスを得られることです。
インフラ実装
インフラチームがグローバルロードバランサー、地域Cloud Runサービス、SSL証明書、DNS設定をどのように設定したかの詳細な技術ドキュメントについては、GitLab Issue #2183の完全な実装ガイドをご覧ください。
サーバーGoogle Tag Managerコンテナ
クライアントサイドからサーバーサイドへのデータフロー
私たちの実装は、クライアントサイドとサーバーサイドの両方のGoogle Tag Managerコンテナが連携するデュアルコンテナアプローチを使用しています。
クライアントサイドコンテナ: ユーザーのインタラクションとウェブサイトイベントを取得し、Stape.ioのデータタグテンプレートを使用してこのデータをサーバーサイドコンテナに転送します。これはユーザーのブラウザで実行されるデータ収集レイヤーとして機能します。
サーバーサイドコンテナ: クライアントサイドコンテナからデータを受信し、Google Analytics、Facebook、LinkedIn、Redditなどのさまざまなサードパーティプラットフォームに送信する前に処理します。これはanalytics.gitlab.comの自社サーバーで実行されます。
対応サードパーティプラットフォーム
私たちのサーバーサイド設定は現在、複数のマーケティングおよび分析プラットフォームにデータを転送しています。各広告プラットフォームは、クライアントサイドピクセルではなくサーバーサイドAPIを通じて適切にフォーマットされたデータを受け取ります。また、ウェブサイト上にはクライアントサイドの他の機能または分析プラットフォームのスクリプトもあります。
現在のプラットフォーム一覧
| プラットフォーム | Cookieカテゴリ | トリガー | DRIチーム | メソッド |
|---|---|---|---|---|
| Google Ads | 広告 | すべてのページビュー、コンバージョン | デジタルマーケティング、ブランド | API |
| 広告 | すべてのページビュー、コンバージョン | デジタルマーケティング、ブランド | API | |
| 広告 | すべてのページビュー、エンゲージメント、コンバージョン | デジタルマーケティング、ブランド | API | |
| 広告 | すべてのページビュー、エンゲージメント | ブランド | API | |
| Microsoft Ads | 広告 | すべてのページビュー、コンバージョン | デジタルマーケティング | API |
| StackAdapt | 広告 | すべてのページビュー、エンゲージメント | ブランド | API |
| Google Analytics | 分析 | すべてのページビュー、エンゲージメント、コンバージョン | マーケティングアナリティクス、デジタルエクスペリエンス | API |
| Snowplow | 分析 | すべてのページビュー | マーケティングアナリティクス | Javascript |
| Adobe Measure(Bizible) | 分析 | すべてのページビュー | マーケティングオペレーション、マーケティングアナリティクス | Javascript |
| Marketo | 分析 | すべてのページビュー | マーケティングオペレーション | Javascript |
| PathFactory | 機能 | すべてのページビュー | マーケティングオペレーション、ABM | Javascript |
| 6Sense | 機能 | すべてのページビュー | マーケティングオペレーション、ABM | Javascript |
| Mutiny | 機能 | すべてのページビュー | マーケティングオペレーション、ABM | Javascript |
| Qualified | 機能 | ほとんどのページビュー | マーケティングオペレーション | Javascript |
テーブル最終更新日: 2025年7月1日
ウェブサイトに新しいタグを配置するリクエストをする場合は、まずプラットフォームがtech_stack.ymlに記載されていることを確認してください。すべてのプラットフォームは法務チームによる承認が必要です。
プラットフォームが法的承認を受けたら、マーケティングアナリティクスプロジェクトで新しいIssueを作成し、/script_onboarding.mdテンプレートを使用してください。「スクリプトコンテキスト」セクションをできる限り記入してください。Issueは自動的に@DennisCharukulvanichに割り当てられ、残りのタスクが評価されます。
同意管理の統合
サーバーサイドGTMは、統合された同意管理ツールOneTrustを通じてユーザーのプライバシー設定を引き続き尊重しています。同意状態はクライアントサイドでキャプチャされ、サーバーサイドコンテナに転送されます。これにより、ユーザーが分析、マーケティング、またはその他の機能的な使用に対して適切な同意を提供した場合にのみ、データがプラットフォームに送信されます。
