コンバージョン トラッキング

図 2: コンバージョン トラッキングの概要

概要

コンバージョン トラッキングでは、Google のアクション センター統合のいずれかを通じて開始されたコンバージョンを追跡します。特定のページのランキングに影響を与える可能性があるため、統合を健全な状態に保ち、実行し続けることが重要です。Google が action_link を生成するたびに、特定の URL が変更され、一意のクエリ パラメータ rwg_token が含まれるようになります。トークンを保存し、ユーザーが予約を完了したときに適切な値を返すことができます。

統合を完了する手順は次のとおりです。

  1. rwg_token を解析して保存します。
  2. 販売者の情報を解析して保存します。
  3. rwg_tokenmerchant_changed の値を返します。
  4. コンバージョン トラッキングをテストして確認します。

rwg_token を解析して保存する

統合を完了するには、最初の Google リファラから最大 30 日間、rwg_token を収集して保存する必要があります。rwg_token 値はエンコードされた文字列で、リンクに関するメタデータと、その action_link を生成した販売者情報が含まれています。

トークンを解析する

ユーザーが予約ページにリダイレクトされると、指定された URL に新しい rwg_token が追加されます。予約ページで、トークン値を解析する必要があります。

次の例は、ブラウザを介したデバイスレベルのトラッキングのために rwg_token が解析される方法を示しています。

const rwgToken = new URLSearchParams(location.search).get('rwg_token') || undefined;

トークンを保存する

rwg_token を保存する際は、次の 2 つのレベルでコンバージョン トラッキングを実装できます。

  • デバイスレベル
  • ユーザーレベル

トークンは任意のレベルで保存できますが、初回紹介から 30 日間はトークンを保存する必要があります

次の例は、デバイス単位のコンバージョン トラッキングを示しています。トークン値は、ファーストパーティ Cookie を使用してブラウザに保存できます。この例では、トークン値を変数に解析したことを前提としています。rootdomain.com は実際のドメインに置き換えてください。

if (rwgToken !== undefined) {
  document.cookie =
  "_rwgToken=" + rwgToken + "; max-age=2592000; domain=rootdomain.com; path=/";
}

フィードで指定した action_link を Google が生成するたびに、URL が変更され、一意のクエリ パラメータ rwg_token が追加されます。このトークンを保存し、コンバージョン イベントの一部として返送する必要があります。

デバイスレベルで保存

デバイスレベルには、ブラウザ Cookie、ローカル ストレージ、アプリのローカル ストレージ、または 30 日間のアトリビューション ウィンドウでトークンを保持できるその他の方法の使用が含まれます。トークンはユーザーのデバイスにローカルに保存されます。そのため、ユーザーが次の条件を満たす場合、コンバージョン イベントを適切に割り当てることができません。

  • 使用するデバイスを変更します。
  • ローカル ストレージまたは Cookie をクリアします。
  • プライベート ブラウザまたはシークレット ブラウザを使用している。

デバイスレベルのコンバージョン トラッキングを使用する場合は、モバイルを含むすべてのサポート対象デバイスでコンバージョン イベントを再実装する必要があります。

ユーザーレベルで保存

ユーザーレベルでは、サーバーサイドの分析システムやその他のサーバーサイド システムを介して、トークンがアプリケーション データベースに保持されます。トークンはサーバーサイドに保存されます。そのため、ユーザーが再度ログインした後も、コンバージョン イベントは適切にアトリビューションされます。

システム アーキテクチャに基づいてユーザーレベルのコンバージョン トラッキングを使用する場合、コンバージョン イベントをサーバーサイドで 1 回実装するだけで、サポートされているすべてのデバイスで再利用できます。

トークンを更新する

Google が同じ販売者にユーザーを紹介すると、すでに保存されている既存のトークンは、最新の紹介からの新しいトークンに置き換えられます。トークンが置き換えられると、トークン ストレージの 30 日間のアトリビューション期間がリセットされ、この販売者の新しいコンバージョンはすべて最新のトークンに割り当てられます。

詳しくは、コンバージョン アトリビューションの要件を参照してください。

販売者情報を解析して保存する

ユーザーが予約ページにリダイレクトされたら、販売者の詳細情報を検索して取得できるロジックを実装する必要があります。通常、パートナーは販売者のメタデータまたは merchant_id をアクション リンクに追加し、それを使用して販売者情報を特定して保存します。

merchant_id または選択した識別子を rwg_token とともに保存することをおすすめします。ユーザーが予約を確認したら、完全なコンバージョン リクエストを送信する前に販売者に問い合わせることができます。トークンの保存と同様に、初回のリファラルから 30 日間は、トークンとともに販売者の詳細情報を保存する必要があります

次の例では、以前に保存した rwg_token を変更します。この例では、指定された URL のメタデータから販売者情報を解析し、merchant_id として保存するか、既存の merchant_id と照合したことを前提としています。

// Store the rwgToken and merchantId in your cookie and set the cookie
// expiration date to 30 days.
if (typeof rwgToken !== 'undefined') {
  document.cookie =
  "_rwgToken=" + rwgToken + "; _merchantId=" + merchantId + "; max-age=2592000;domain=rootdomain.com; path=/";
}

rwg_tokenmerchant_changed の値を返す

ユーザーが action_link リファラから始まる予約を完了したら、コンバージョン エンドポイントに HTTP POST リクエストを送信する必要があります。次の 2 つのエンドポイントがあります。

  • 本番環境: https://www.google.com/maps/conversion/collect
  • サンドボックス環境: https://www.google.com/maps/conversion/debug/collect

コンバージョン イベントを送信する際は、保存されている rwg_token と、1 または 2merchant_changed 値を必ず含める必要があります。merchant_changed の詳細については、販売者の変更値を返すをご覧ください。

POST 本文は、次の形式の JSON エンコード オブジェクトである必要があります。

{
  "conversion_partner_id": "<partnerId>",
  "rwg_token": "<rwg_token_val>",
  "merchant_changed": "1|2"
}
{
  "conversion_partner_id": "XXXXXXX",
  "rwg_token": "AJKvS9WeONmWKEwjG0--HdpzMq0yAVNL8KMxbb44QtbcxMhSx_NUud5b8PLUBFehAIxOBO-iYRIJOknEFkIJmdsofdVJ6uOweQ==",
  "merchant_changed": "2"
}

次の例は、JavaScript で記述された、ユーザーのデバイスの Cookie を使用したデバイスレベルのコンバージョン トラッキングです。

const partnerId = XXXXXXXXXX;
const endpoint = `https://www.google.com/maps/conversion/collect`;

// Retrieve the value of the rwgToken stored in the browser's cookie
const match = document.cookie.match(new RegExp('(?:^| )_rwgToken=([^;]+)'));
const storedRwgToken = match ? match[1] : undefined;

// Send Conversion event with decoded token, verify any special characters
// are sent properly.
if (storedRwgToken !== undefined) {
  fetch(endpoint, {
    method: "POST",
    body: JSON.stringify({
      conversion_partner_id: partnerId,
      rwg_token: decodeURIComponent(storedRwgToken),
      merchant_changed: merchantChanged
    })
  });
}

販売者の変更値を返す

merchant_changed 値は、販売者が最初のリダイレクト販売者から変更されたかどうかを判断するために使用されます。ランディング ページが他の販売者を含むプラットフォーム内にある場合、販売者の変更はよく起こります。この場合、Google からユーザーがプラットフォームに誘導され、別の販売者に移動して予約を完了した場合、別の販売者でコンバージョンが発生したことを把握する必要があります。ブール値を使用して販売者の変更を特定できますが、販売者の詳細は特定できません。

merchant_changed に割り当てる値を決定する際は、販売者情報の解析と保存で保存された元の販売者を考慮する必要があります。販売者が変更されているかどうかを確認し、要件に応じて値を割り当てます。

  • 要件: ユーザーが元の販売者のウェブサイトを離れ、別の販売者のプラットフォームで買い物を完了した場合。
    • Merchant change value: 1
  • 要件: ユーザーが元の販売者を通じて取引を完了したとき。
    • Merchant change value: 2

コンバージョン トラッキングをテストして確認する

以下のテストケースでは、テスト トークン セクションで提供されているテスト トークンを使用します。これらのテストケースは、コンバージョン イベントにつながる可能性のあるさまざまなシナリオをすべて網羅するのに役立ちます。これにより、トークンが適切に保存され、merchant_changed 値が正しく設定され、コンバージョン イベントが適切なタイミングで送信されます。

フィードで提供されているアクション リンクまたは予約ページの URL を使用し、URL の末尾にテストトークンを追加して各テストケースを実行します。必ずプライベート ブラウザ ウィンドウまたはシークレット ブラウザ ウィンドウを使用してください。これにより、現在のユーザーに関連付けられている既存のトークンがすべてクリアされ、クリーンな状態で作業を開始できます。

テストケース テストの説明 ユーザーフロー 期待される結果
1 ユーザーが Google 以外で予約を完了した。 ユーザーが Google からの参照や既存の参照なしで、予約ページに直接アクセスした場合。この場合、コンバージョン イベントは発生しません。 ユーザーが以前に予約ページにアクセスしていないか、Google からの参照ではないため、コンバージョン イベントが発生していません
2 ユーザーが Google で開始した予約を完了します。 ユーザーが Google で販売者を見つけ、予約ページに移動して予約を完了します。 ユーザーが Google から予約ページに誘導されたため、トークン Aマーチャント変更の値 2 を含むコンバージョン イベントが送信されます
3 ユーザー(Google から)が予約フローを開始したが、予約が完了する前にセッションを終了した。

注: このセッションはテスト 4 と 5 のために開いたままにしておきます。
ユーザーが予約ページにアクセスしたものの、セッションが終了し、予約が完了しなかった。 ユーザーが予約を完了しなかったため、コンバージョンは発生しませんが、トークン B は 30 日間保存されます。
4 ユーザーが Google からではなく予約ページに戻り、予約を完了する。

注: 予約フローの URL に rwg_token を含めることはできません。
ユーザーがテスト #4 の後に予約ページに戻ります。トークン B は 30 日間保存され、その 30 日間のコンバージョンはコンバージョン イベントを返します。 ユーザーが Google からの以前のリンクから予約ページに戻っているため、トークン Bmerchant changed の値 2 を含むコンバージョン イベントが送信されます
5 ユーザーが テスト #4 の後に Google からの新しい予約を完了します。 ユーザーが以前の Google リファラルの後に Google リファラルを使用して予約ページに戻った場合、30 日間の保存期間がリセットされ、新しいトークン トークン C が古いトークン トークン B に置き換わります。以降のコンバージョンはすべて Token C に割り当てられます。 ユーザーが予約を完了し、新しいトークンが以前に保存されたトークンに置き換わったため、トークン Cmerchant changed の値 2 を含むコンバージョン イベントが送信されます

ユーザーが別の販売者でチェックアウトできるプラットフォームがある場合は、以下をテストします。

テストケース テストの説明 ユーザーフロー 期待される結果
6 ユーザーが Google から予約ページにアクセスし、別の販売者で予約を完了した。 ユーザーが Google から予約ページにアクセスし、トークン A が使用されたが、予約を完了する前に別のページに移動し、元の参照元とは異なる販売者で予約を完了した。 ユーザーが トークン A を使用して Google からのリンクで予約を完了し、リンクとは異なる販売者で予約を完了したため、販売者が変更された値が 1 になり、コンバージョン イベントが送信されます

テスト中は、コンバージョン エンドポイントに HTTP POST リクエストを送信します。エンドポイントは次の 2 つです。

  • 本番環境: https://www.google.com/maps/conversion/collect
  • サンドボックス環境: https://www.google.com/maps/conversion/debug/collect

テストトークン

コンバージョン トラッキングをテストするには、フィードで指定したアクション リンクまたは予約ページの URL の末尾に、次のテストトークンのいずれかを追加します。

トークン A:

rwg_token=AJKvS9WeONmWKEwjG0--HdpzMq0yAVNL8KMxbb44QtbcxMhSx_NUud5b8PLUBFehAIxOBO-iYRIJOknEFkIJmdsofdVJ6uOweQ%3D%3D

トークン B:

rwg_token=AJKvS9U2QfiQanHFQrlJxBjD0AyFany3qpaJVEWOcY4nHqY_UkLYFFDj6RIa-EXS1iEmV8gtFPG6v1cU1jnusJK66ijXXnaqkQ%3D%3D

トークン C:

rwg_token=AJKvS9VwInjZ_hGZPvBz0COVWJ5oFDzocFt9hGi7TMurlo2l71uiXP48PspPUMmRnqCUDE1mF_A5H_dMV78cBTF8jIfSQK6lEA%3D%3D

コンバージョン イベントが正常に送信されると、アクション センターのコンバージョン トラッキング ダッシュボードに集計されたイベントが表示されます。

conversion-tracking-dashboard

コンバージョン アトリビューションの要件

コンバージョン アトリビューションに関する Google の必須基準は、任意の店舗のプレイス アクション リンクとのインタラクションに対する 30 日間のアトリビューション期間です。

このアトリビューション期間では、次のいずれかのシナリオでコンバージョン イベントが送信されることが想定されます。

  • ユーザーが場所アクション リンクをたどり、同じセッションで同じ販売者に注文した場合。販売者の変更値 = 2。
  • ユーザーが位置情報アクション リンクをクリックし、30 日間のアトリビューション期間内に別のチャネルから戻ってきて、同じ販売者の商品を注文した場合。販売者の変更値 = 2。
  • ユーザーが場所アクション リンクをたどって、別の店舗で注文した場合(同じセッション内または 30 日間のアトリビューション期間内の別のセッション)。販売者の変更値 = 1。

また、Google は、ユーザーが位置情報アクション リンクからアクセスできるあらゆるデバイスからコンバージョン イベントが送信されることを想定しています。対象となるデバイスは以下のとおりです。

  • パソコンまたはモバイルのウェブ アプリケーション。
  • モバイルアプリ(アプリのディープリンクまたはドメインの登録済みアプリ インテント経由)。

トークンがユーザーレベルで保存されている場合は、クロスデバイス アトリビューションを提供することが想定されます。詳しくは、ユーザーレベルで保存するをご覧ください。この場合、デスクトップからアクション リンクをたどって、同じユーザー アカウントでモバイルで取引を完了したユーザーは、コンバージョン イベントをトリガーする必要があります。

トークンがブラウザの Cookie など、デバイスレベルでのみ保存されている場合、クロスデバイス アトリビューションを提供する必要はありません。この場合、ユーザーがそのデバイスのアクション リンクをたどると、各デバイスに個別のトークンが保持され、各デバイスでアトリビューション ルールが個別に適用されます。