Skip to content
Last updated

Google Ads Remarketing Export Integration

警告! デジタル市場法(DMA)規制により、EU User Consent Policyに準拠し、欧州経済領域(EEA)のユーザーデータを引き続き使用してCustomer Matchオーディエンスを構築するには、2024年3月までにCustomer Matchオーディエンスメンバーをアップロードする際に同意シグナルの送信を開始する必要があります。2024年3月6日以降、Google AdsはEUユーザーからの有効な同意なしに、Customer Match、コンバージョン、および店舗売上データのアップロードを受け付けなくなります。これは、EUユーザーからの同意がないオーディエンスは処理されないことを意味します。EU以外の地域に対するこの同意設定は、データアップロードに即座に影響を与えることはありません。ただし、Google Adsは将来的にこの情報をターゲティングとパーソナライゼーション機能の改善に使用する可能性があります。

いくつかのGoogle Ads Integrationが利用可能です。この記事では、Google Ads Remarketing V2について説明します。

この記事では、Google Ads via Audience Partner API(旧AdWords via DDPとして知られていた)については説明しません。 この名前は、GoogleがGoogle AdWordsをGoogle Adsにリブランディングした後に変更されました。このIntegrationは、特定のタイプのAudience List(Customer list)でのみ機能します。App UserやWebsite Visitorsなどの他のRemarketing Listタイプは、このIntegrationではサポートされていません。

このIntegrationを活用することで、メールアドレスや電話番号などのユーザープロファイルをGoogle Ads Remarketingユーザーリストにエクスポートできます。TD SQLクエリジョブの結果を実行してCRMデータを一括アップロードし、Google Remarketingユーザーリストにデータを追加または削除できます。

userIdカラムのデータをエクスポートできます。また、既存のSegmentからユーザーを削除することもできます。

前提条件

  • TD Toolbeltを含むTreasure Dataの基本的な知識。
  • Google Adsアカウント。
  • 自身のGoogle AdsアカウントへのTreasure Data Google OAuthアプリアクセスの承認。
    • Google AdsアカウントではStandardまたはAdminのアクセスレベルが必要です

制限事項

以下の制限事項は、Google Ads APIドキュメント「Remarketing and Audience Targeting」およびサポート記事に記載されています。

  • 最低5000ユーザー。広告は、少なくとも5000人のユーザーがいるユーザーリストに配信されます。「Customer Match Limitations」セクションを参照してください。ドキュメントには次のように記載されています:「広告の配信を開始するには、リストに少なくとも5,000人のメンバーをアップロードしてください。」
  • Google Accountメール。メールはGoogle Accountを使用して接続する必要があります。「Customer Match with email address, address, or user ID」セクションを参照してください。
  • @gmail.com以外のアドレスは無視されます。Gmailでのターゲティングには、@gmail.comの形式のメールのみ使用できます。「Customer Match with email address, address, or user ID」セクションを参照してください。
  • ユーザーリストの丸め処理。 Google Ads管理サイトでは、ユーザーリストの数は正確には表示されません:
    • ユーザー数が1000未満の場合、100の単位に丸められます。
    • それ以外の場合は、最上位2桁に丸められます。「Customer Match Limitations」セクションを参照してください。
  • Google Display Networkのcustomer match。Customer matchは、Google Display Network内のサードパーティサイトでは利用できません。「Customer Match with email address, address, or user ID」セクションを参照してください。
  • 48時間の遅延。 Googleがリストに新しいユーザーを追加するには、最大48時間かかります。https://support.google.com/google-ads/answer/7474263の「Note」セクションを参照してください。
  • replaceモードを実行する場合、最大72時間かかる場合があります。Remove data from a Customer Match audience listを参照してください。

カラムの命名規則

出力結果は、事前定義されたカラム名を使用する必要があります。サポートされているカラム名は以下の通りです:

  • mobile_id: IDFA(Identifier for Advertising)またはAAID(Google Advertising ID)モバイルデバイスID。例: AEBE52E7-03EE-455A-B3C4-E57283966239(フォーマットは: 8-4-4-4-12の16進数文字)
  • email: メールアドレス
  • phone_number: 電話番号
  • user_id: 広告主が生成および割り当てたユーザーID。この機能を使用するには、ホワイトリストに登録されたGoogleアカウントが必要です。詳細については、Customer Match Policyを参照してください。

クエリ結果からサポートされているカラムが見つからない場合、エラーが発生します。カラムのエイリアスは大文字小文字を区別しません。例えば、emailまたはEMAILを使用できます。

カラム名がサポートされている値と一致しない場合は、クエリでエイリアスを使用する必要があります。例:

SELECT
  an_email_column AS email,
  another_phone_column AS phone_number
FROM
  your_table;

データの正規化とハッシュ化

Treasure Dataの結果出力は、Googleのフォーマットとプライバシーガイドラインに従うため、値を自動的に正規化およびハッシュ化します。サポートされているハッシュアルゴリズムはSHA-256のみです。

CRMデータは、受け入れられるために特定のフォーマットガイドラインに従う必要があります。不適切なフォーマットは、アップロードエラーまたはマッチしたレコード数の低下につながる可能性があります。

以下の変換動作が、正規化のための結果出力時にデータタイプに応じて適用されます。

  • Mobile Advertising ID: 正規化なし。
  • Email:
    • データがプレーンテキストの場合、先頭と末尾の空白をトリムし、すべての文字を小文字に変換してから、送信前にハッシュ化します
    • データが既にハッシュ化されている場合、変換は適用されません
  • Phone Number: E.164フォーマットを使用します。例: +1234567890
    • データがプレーンテキストの場合、値をハッシュ化します
    • データが既にハッシュ化されている場合、変換は適用されません
  • User ID: 正規化なし。

Google Adsポリシー

Treasure Dataは、特に以下のGoogle Adsポリシーの遵守を推奨しています:

TD Console を使用する

新しい接続を作成する

Treasure Data では、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、統合にアクセスするための認証を提供します。

  1. TD Console を開きます。

  2. Integrations Hub > Catalog に移動します。

  3. Google Ads V2 を検索して選択します。

  1. Create Authentication を選択します。

  1. 認証に使用する認証情報を選択します。

オプションで、Click here を選択して Google にログインします。

  1. Integrations Hub > Catalog に戻ります。

  2. Google Ads を検索して選択します。

  3. New Authentication を選択します。

  4. OAuth 接続フィールドの定義を確認します。

  5. Continue を選択します。

接続の名前を入力します。

Done を選択します。

クエリを定義する

出力結果は、事前定義されたカラム名を使用する必要があります。

user_id を Google にアップロードするには、user_id カラムをクエリする必要があります。

Treasure Data の結果出力は、Google のフォーマットとプライバシーガイドラインに従うために、値を自動的に正規化してハッシュ化します。サポートされているハッシュアルゴリズムは SHA-256 のみです。

パラメータ必須説明
Ads AccountはいAds Customer ID です。形式は xxx-yyy-zzzz です。
Mobile Application IDモバイルアプリケーション ID です。Mobile Advertising ID をエクスポートする場合に必須です。 - - iOS の場合、このネイティブ識別子は App Store URL の末尾に表示される 9 桁の文字列です(例: "476943146" は "Flood-It! 2" の識別子で、App Store リンクは "http://itunes.apple.com/us/app/flood-it!-2/id476943146" です)。 - Android の場合、このネイティブ識別子はアプリケーションのパッケージ名です(例: "com.labpixies.colordrips" は "Color Drips" のパッケージ名で、Google Play リンクは "https://play.google.com/store/apps/details?id=com.labpixies.colordrips" です)。
UserList nameはいユーザーリストの名前です。
UserList descriptionユーザーリストの説明です。
Mode出力モードです。 - - Append(デフォルト): クエリ結果は既存のユーザーリストに追加されます。指定された入力名でユーザーリストが存在しない場合は、新しいユーザーリストが作成されます。 - Remove: クエリ結果は既存のユーザーリストから削除されます。 - Replace: クエリ結果は既存のユーザーリストに置き換えられます。
Membership Lifespanユーザーの連絡先情報がユーザーリストに保持される日数です。デフォルト: 10000
Retry Limitシステムが諦めるまでの再試行回数です。デフォルト: 5
Initial retry time wait in millis最初と 2 回目の試行の間の時間(ミリ秒)です。デフォルト: 500(0.5 秒に相当)。
Max retry wait in millis2 回目以降のすべての試行の間の時間(ミリ秒)です。デフォルト: 300000(5 分に相当)。

クエリの例

TD Console の Queries ページから、Google Ads 接続への出力結果を指定して、次のようなクエリを実行します。このクエリは例です。

SELECT email, phone_number FROM (
  VALUES ('demo1@example.com', '+1234567890'),
         ('demo2@example.com', '+9876543210'),
         ('demo3@example.com', '+9988776655')
)  tbl (email, phone_number)

クエリではソーステーブルを指定する必要はありませんが、データベースを選択する必要があります。

SELECT email FROM app_users

クエリには次のものを含めることができます:

  • mobile_idのみ
  • emailおよび/またはphone_numberのみ
  • user_idのみ
  • その他のすべてのカラムは無視されます

クエリは数秒で完了するはずです。

オプション: クエリ結果を検証する

オーディエンスリストを検証して、新しく入力されたデータを表示します:

(オプション) Query Export ジョブをスケジュールする

Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。

Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。

TD Console を使用してジョブをスケジュールする

  1. Data Workbench > Queries に移動します

  2. 新しいクエリを作成するか、既存のクエリを選択します。

  3. Schedule の横にある None を選択します。

  4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

    ドロップダウン値説明
    Custom cron...Custom cron... の詳細を参照してください。
    @daily (midnight)指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。
    @hourly (:00)毎時 00 分に実行します。
    Noneスケジュールなし。

Custom cron... の詳細

Cron 値説明
0 * * * *1 時間に 1 回実行します。
0 0 * * *1 日 1 回午前 0 時に実行します。
0 0 1 * *毎月 1 日の午前 0 時に 1 回実行します。
""スケジュールされた実行時刻のないジョブを作成します。
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)

次の名前付きエントリを使用できます:

  • Day of Week: sun, mon, tue, wed, thu, fri, sat.
  • Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:

フィールド値 例の説明
各フィールドに対して上記で表示された制限内の単一の値。
フィールドに基づく制限がないことを示すワイルドカード '*''0 0 1 * *'毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
範囲 '2-5' フィールドの許可される値の範囲を示します。'0 0 1-10 * *'毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。0 0 1,11,21 * *'毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。'30 */2 1 * *'毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10''0 0 5,*/10,25 * *'毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
  1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

クエリを実行する

クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。

設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。

(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

トラブルシューティング

Q: 1日または2日間「Populating」のステータスが続いた後、ユーザーリストのステータスが「Error with the last upload」に変わります。なぜですか?

  • テスト中に、同時に複数のリストをアップロードすると、Google APIにこの問題が発生するようです。問題を引き起こす可能性のあるユーザーリストの数は不明ですが、一度にアップロードするユーザーリストは3〜5個に制限する必要があります。

Q: ユーザーリストのサイズの値が変わり続けるのはなぜですか?

  • 観察によると、各ネットワークのサイズは、アクティブユーザーの数に基づいて毎日変わる可能性があります:

Q: リストのステータスが「Populating...」になるのはなぜですか?

  • リストにメンバーが入力されるまでに6〜12時間かかります。そのため、12時間ごとに1回以上の頻度でオーディエンスリストにアップロードすると、Ads UIで「Populating...」ステータスが表示される可能性があります。ほとんどの場合、リストが確定するまでに最大48時間かかることがあります。

Q: 十分な権限を持つユーザーを設定したにもかかわらず、「Caused by: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had insufficient authentication scopes.」エラーが発生しました。なぜですか?

  • 設定したユーザーがMCCアカウントである可能性があります。MCCアカウントは管理用であり、エクスポートジョブを完了するための十分な権限を持っていないため、Googleアカウントを使用する必要があります。

オプション: ワークフローでエクスポート結果を設定する

Treasure Workflow内で、データコネクタを使用してデータをエクスポートするように指定できます。

詳細はUsing Workflows to Export Data with the TD Toolbeltをご覧ください。

ワークフローの例 - UserListにuser_idを追加する

_export:
  td:
    database: google_ads_v2_db

+google_ads_v2_export_task:
  td>: append_user_id.sql
  database: ${td.database}
  result_connection: new_created_google_ads_v2_auth
  result_settings:
    type: google_adwords_v2
    client_customer_id: "xxx-yyy-zzzz"
    name: "test_append_user_id"
    mode: "append"

ワークフローの例 - UserListからuser_idを削除する

_export:
  td:
    database: google_ads_v2_db

+google_ads_v2_export_task:
  td>: remove_user_id.sql
  database: ${td.database}
  result_connection: new_created_google_ads_v2_auth
  result_settings:
    type: google_adwords_v2
    client_customer_id: "xxx-yyy-zzzz"
    name: "test_remove_user_id"
    mode: "remove"

詳細はUsing Workflows to Export Data with the TD Toolbeltをご覧ください。