ブログ
Google 広告とサーバーサイドタギング:コンバージョンが広告クリックと結び付く仕組み
公開 · 読了 8 分
Google 広告でコンバージョン トラッキングを設定すると、最後に 2 つのことを求められます。既存の Google タグとのリンクと、購入ページへのイベント スニペットの貼り付けです。サーバーサイドタギングでは、前者は問題ありませんが、後者は誤りです。この記事では、1 回の広告クリックをランディング ページから Google 広告のコンバージョンまで追い、どの通信がタギングサーバーを通り、どれが直接 Google に送られ、その過程で SignalHost が何を担うのかを説明します。私たちは signalhost.io でも Google 広告を運用しているので、ここに書いたことはすべて自社サイトで計測したものです。
Google タグをリンクすると何が変わるか
コンバージョン アクションを作成すると、Google 広告はサイト上の Google タグを探し、それを使うよう提案します。承諾すると、G- で始まる測定 ID を持つ Google タグに、Google 広告アカウント(AW-…)が 2 つ目の送信先として追加されます。Google はタグの設定が更新されると警告します。変更されるのは Google 側のタグ設定で、Tag Manager のコンテナではありませんが、それ以降、このタグを読み込むすべてのページが Google 広告とも通信するようになります。
ページが表示されるたびに、訪問者のブラウザから Google(googleads.g.doubleclick.net と www.google.com)へ直接いくつかのリクエストが送られます。リマーケティング リストと Google 自身の計測のためのものです。これらはタギングサーバーを経由しませんが、それは意図的です。サーバー経由で中継すると、すべてが訪問者ではなくサーバーのアドレスから届くことになり、広告プラットフォームに見せるべき姿ではありません。GA4 のデータはこれまでどおり自社ドメイン経由で流れます。
サーバーサイドタギングが初めての方は、サーバーサイド Google Tag Manager の設定手順をご覧ください。
Google のコンバージョン スニペットはページに入れない
次に Google 広告は、購入ページ用のイベント スニペットを提示します。これはコンバージョンをブラウザから直接 Google 広告に送り、タギングサーバーを通りません。しかも、誰かが入力しない限り、値は 1.0、トランザクション ID は空のままです。
// Google's event snippet: not for your page.
// Paste it into the Conversion ID box in SignalHost instead.
gtag('event', 'conversion', {
'send_to': 'AW-123456789/AbC-D_efGh12_34',
'value': 1.0,
'currency': 'EUR',
'transaction_id': ''
});SignalHost では、代わりにサーバーコンテナがコンバージョンを送信します。コンテナを開いて「コンバージョンの送信先」を展開し、Google 広告の欄にコンバージョン ID とラベルを入力してください。それ以降、サイトがすでに送っている購入(GA4 の purchase イベント)が、値・通貨・トランザクション ID とともにサーバーから Google 広告へ送られます。Tag Manager 側で変更する必要はありません。
スニペットを併用しないでください。両方あると、購入が 2 回記録されます。Google が 2 つのコンバージョンをまとめるのはトランザクション ID が同じ場合だけで、スニペットの ID は通常空だからです。
スニペットから ID とラベルを自分で抜き出す必要はありません。スニペット全体、または send_to の値だけを「コンバージョン ID」欄に貼り付けると、両方の欄が入力されます。ID は AW-123456789 と 123456789 のどちらの書き方でも使えます。
広告クリックを購入まで保持する仕組み
コンバージョンが Google 広告にとって役に立つのは、それをもたらしたクリックと結び付けられる場合だけです。その手がかりがクリック ID です。Google はランディング ページのアドレスに gclid=… として付加しますが、訪問者が次にクリックするとアドレスから消えてしまいます。
そのため、SignalHost のすべてのコンテナにはサーバーサイドの Conversion Linker が含まれています。ランディング ページのヒットからクリック ID を読み取り、あなたのドメインに FPGCLAW というファーストパーティ Cookie として保存します。購入が 3 ページ後や 3 日後に届くと、サーバーコンテナの Google 広告タグがこの Cookie を読み、クリックとともにコンバージョンを送信します。
条件は 2 つあります。まず、訪問者が Cookie バナーで広告を許可していること。同意がなければ、リンカーは何も保存せず、広告タグも何も送信しません。次に、ブラウザが Cookie を受け入れること。これはタギングサーバーが動いているアドレスによって決まります。
Google 広告に独自ドメインが必要な理由
クリックの Cookie はタギングサーバーが設定します。ブラウザがそれを受け入れるのは、そのサーバーが自社サイトの一部である場合、つまり metrics.yoursite.jp のようなサブドメインの場合だけです。各コンテナが最初に使うアドレスは signalhost.io のサブドメインで、ブラウザから見ると他人のサイトなので、Cookie は拒否されます。
この違いはどこにも表示されません。コンバージョンは引き続き Google 広告に届きますが、クリックが付いていないため、Google 広告はどのキャンペーンの成果にもできません。見た目は、効果のない広告とまったく同じです。数字でキャンペーンを判断する前に、独自ドメインを接続してください。必要なのは CNAME レコード 1 件だけで、証明書は自動で発行されます。ドメインが有効になるまでは、コンテナの Google 広告設定にその旨が表示されます。独自ドメインをタギングサーバーに向ける方法。
購入が数日後に発生する場合
無料トライアルやサブスクリプションでは、通常の流れが成り立ちません。支払いは訪問から数日後、誰もサイトにいないときに発生するため、購入はサーバーから送る必要があります。多くの場合は決済サービスの Webhook からで、詳しくは独自チェックアウトのガイドで説明しています。
Google 広告のためには、この購入に、訪問者がまだいるチェックアウトの時点で取得しておくものがさらに 2 つ必要です。チェックアウトのリクエストに含まれる広告用 Cookie(FPGCLAW、FPAU、Google の _gcl_ Cookie。いずれも広告が許可された後にだけ存在します)を保存し、広告の同意を「許可」として示したうえで、購入とともに Cookie として送り返します。これがないと、Google 広告はコンバージョンを受け付けることも、成果として計上することもできません。
// At checkout: keep the advertising cookies with the order.
// They only exist once the visitor allowed advertising.
const AD_COOKIES = ['FPGCLAW', 'FPAU', '_gcl_aw', '_gcl_au'];
order.adCookies = pick(req.cookies, AD_COOKIES);
// In the payment webhook: send them back with the purchase.
// gcs=G111 in the params: advertising and analytics consent granted.
await fetch(`https://metrics.yoursite.com/g/collect?${params}`, {
method: 'POST',
headers: { cookie: serialize(order.adCookies) },
});signalhost.io も自社のサブスクリプションをこの方法で報告しています。最初の請求書が支払われると Stripe の Webhook が購入を送信し、そこにチェックアウト時の広告クリックが含まれます。
SignalHost が担うこと
入力するのは 2 つの値だけです。それ以外はすべてのコンテナに組み込まれています。
- Conversion Linker と Google 広告のコンバージョン タグ。ID とラベルを入力すると、次のリクエストから有効になります。
- 広告タグは購入でのみ配信され、それ以外では配信されません。すべてのイベントに反応するタグなら、ページビューのたびに売上として記録してしまいます。
- 広告の同意はサーバー側で適用されます。広告を拒否した訪問者からは、Google 広告のコンバージョンは生まれません。
- タギングサーバーが設定するすべての Cookie がブラウザに届きます。クリック ID、ファーストパーティの訪問者 ID、広告用のユーザー ID のいずれもです。
- コンバージョン ID は、どの書き方で入力しても、タグが求める形式で送信されます。
- Google 広告に独自ドメインが欠けている場合は、コンテナのページでお知らせします。
signalhost.io は、まさにこの構成と自社の Google 広告アカウントで動いています。私たちが頼りにしている確認方法は、クリック ID 付きのテスト訪問です。最後にクリックの Cookie がブラウザに残っていなければなりません。
自分の設定を確認する
- アドレスの末尾に ?gclid=test を付けてサイトを開き、Cookie バナーで広告を許可します。ブラウザに保存された自社ドメインの Cookie の中に、FPGCLAW があるはずです。
- コンテナの「開発者ツール」でプレビューセッションを開始し、Tag Manager でサーバーコンテナの「プレビュー」を押してから、テスト購入を行います。Google 広告のコンバージョン タグが、値・通貨・トランザクション ID 付きで配信されるはずです。
- 購入ページに Google のイベント スニペットがないこと、そしてウェブコンテナ内の Google 広告コンバージョン タグが同じ購入で配信されないことを確認してください。
- Google 広告には 1 日待ってください。新しいコンバージョン アクションが有効と表示されるまで、それくらいかかることがあります。
コンバージョンは届くのに、どのキャンペーンにも計上されない場合は、途中でクリックが失われています。まず同意の設定と独自ドメインを確認してください。
