ユーザー提供データのマッチング

概要

UPDM(ユーザー提供データ マッチング)は、ユーザーについて収集した自社データ(ウェブサイト、アプリ、実店舗からの情報など)を、そのユーザーがログインしていた Google 広告データと結合します(Google マーケティング プラットフォームを除く)。ユーザー提供データのマッチングの対象となるには、広告イベントが Google 広告データのログイン ユーザーにリンクされている必要があります。

ユーザー提供データ マッチングには、他の形式のカスタマー マッチに比べて独自のメリットがあります。ユーザー提供データの一致:

  • 業界データの変化にサードパーティ製データよりも耐性がある
  • ユーザー提供データのマッチングは、ログイン ユーザーに関して Google が所有および運営する広告枠のみで利用可能なため、今後のサードパーティ Cookie のサポート終了による影響はありません。
  • より関連性の高いカスタマー エクスペリエンスを提供できるため、多くの場合、顧客エンゲージメントが向上します。
  • より詳細な顧客インサイトを提供

プロセスの概要

アカウントでユーザー提供データのマッチングを有効にした後、この機能を継続して使用するには、2 つの段階があります。

  1. Ads Data Hub に自社データを取り込む
    • フォーマットを行い、自社データを BigQuery データセットにアップロードします。管理プロジェクト以外の、所有している任意の BigQuery データセットを使用できます。
    • ユーザーは、接続を作成してインポート スケジュールを作成することで、データ マッチング リクエストを開始します。
    • Google は、お客様のプロジェクトと Google 所有のデータ(Google のユーザー ID とハッシュ化されたユーザー提供データを含む)を結合して、*_match テーブルを作成および更新します。
  2. 一致したデータに基づく Ads Data Hub で進行中のクエリ
    • Ads Data Hub で通常のクエリを実行する場合と同じ方法で、*_match テーブルに対してクエリを実行します。

データソースと宛先のプロジェクト

接続では、データソース プロジェクトと宛先プロジェクトの 2 つの異なる Google Cloud プロジェクトを使用する必要があります。

  • データソース: このプロジェクトには、独自の広告データ(未加工)が含まれます。
  • 宛先: Ads Data Hub が書き込む BigQuery データセット。デフォルトでは、これは管理プロジェクトです。別の Google Cloud プロジェクトに変更する場合は、サービス アカウントの構成をご覧ください。

プライバシーの制限

顧客データを収集する

ユーザー提供データのマッチングを使用する場合は、自社データをアップロードする必要があります。ウェブサイトやアプリ、実店舗で収集した情報のほか、顧客と直接共有した情報などがあります。

データサイズ

エンドユーザーのプライバシーを保護するために、ユーザー提供データのマッチングでは、データのサイズに関して次の要件が適用されます。

  • ユーザーリストに少なくとも 1,000 件のレコードをアップロードする必要があります。
  • マッチテーブルの更新を成功させるには、新しく一致したユーザー数が最低数に達する必要があります。この動作は差分チェックに似ています。
  • リストはレコードの最大数を超えないようにする必要があります。データの上限については、Google の担当者にお問い合わせください。

[接続] タブを有効にする

開始する前に、Ads Data Hub アカウントを構成して、[接続] タブを有効にします。このタブで、データ マッチング パイプラインが確立されます。これらのステップを実行する必要があるのは 1 回のみです。

  1. Google 担当者に送信します。
    1. ユーザー提供データのマッチングに使用する Ads Data Hub アカウント ID。
    2. 宛先プロジェクトにアクセスできるスーパー ユーザーのメールアドレス。
    3. アカウントとスーパーユーザーが許可リストに登録されていることを Google 担当者に確認します。
  2. 指定した Google Cloud プロジェクトで Ads Data Connector API を有効にします。デフォルトでは、これが管理プロジェクトです。別のプロジェクトを使用するには、代替 Google Cloud プロジェクトをデータソース プロジェクトとして使用して次の操作を行います。これらの手順は、許可リストに登録されたスーパーユーザーとしてログインした状態で行う必要があります。

    1. Cloud Console API ライブラリに移動します。
    2. リストからデータソース プロジェクトを選択します。
    3. Ads Data Connector API を検索します。Ads Data Connector API が検索結果に表示されない場合、ログインしている Google アカウントが許可リストに登録されているスーパーユーザーではない可能性があります。
    4. [API] ページで、[有効にする] をクリックします。
    5. API が有効であることを Google の担当者に確認します。
  3. Google の担当者から、DatafusionDataprocUPDM サービス アカウントとして指定された 3 つのメールアドレスが送信されます。

    Ads Data Hub アカウントにも、[自社データ] と [データ マッチング] という新しい [接続] セクションが表示されます。各タブのユースケースをご覧ください。

  4. サービス アカウントに適切な権限を付与します。さまざまなサービス アカウントと必要な権限に説明を表示するには、テーブルでデータソースを選択します。

    BigQuery

    Datafusion サービス アカウント
    目的 Datafusion サービス アカウントは、Ads Data Hub UI にソース フィールドのリストを表示するために使用されます。
    Format service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com
    必要なアクセス権
    BigQuery Data Viewer
    roles/bigquery.dataViewer
    データソース宛先のプロジェクト内の特定のデータセット
    Storage Admin
    roles/storage.admin
    データソース プロジェクト、または専用ストレージ バケット
    Dataproc サービス アカウント
    目的 Dataproc サービス アカウントは、バックグラウンドでデータ パイプラインを実行する役割を担います。
    Format some-number-compute@developer.gserviceaccount.com
    必要なアクセス権
    BigQuery Data Viewer
    roles/bigquery.dataViewer
    データソース宛先のプロジェクト内の特定のデータセット
    BigQuery Data Editor
    roles/bigquery.dataEditor
    宛先プロジェクトの特定のデータセットの場合
    BigQuery Job User
    roles/bigquery.jobUser
    データソース宛先の両方のプロジェクト
    Storage Admin
    roles/storage.admin
    データソース宛先の両方のプロジェクト、または専用のストレージ バケット
    UPDM サービス アカウント
    目的 UPDM サービス アカウントは、一致するジョブの実行に使用されます。
    Format service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com
    必要なアクセス権
    BigQuery Data Viewer
    roles/bigquery.dataViewer
    宛先プロジェクト
    BigQuery Job User
    roles/bigquery.jobUser
    宛先プロジェクト

    Cloud Storage

    Datafusion サービス アカウント
    目的 Datafusion サービス アカウントは、Ads Data Hub UI にソース フィールドのリストを表示するために使用されます。
    Format service-some-number@gcp-sa-datafusion.iam.gserviceaccount.com
    必要なアクセス権
    Storage Object Viewer
    roles/storage.objectViewer
    データソース プロジェクトの特定のストレージ バケット
    BigQuery Data Viewer
    roles/bigquery.dataViewer
    データソース プロジェクト、または専用ストレージ バケット
    Storage Admin
    roles/storage.admin
    データソース プロジェクト、または専用ストレージ バケット
    Dataproc サービス アカウント
    目的 Dataproc サービス アカウントは、バックグラウンドでデータ パイプラインを実行する役割を担います。
    Format some-number-compute@developer.gserviceaccount.com
    必要なアクセス権
    Storage Admin
    roles/storage.admin
    データソース宛先の両方のプロジェクト、または専用のストレージ バケット
    BigQuery Job User
    roles/bigquery.jobUser
    宛先プロジェクト
    UPDM サービス アカウント
    目的 UPDM サービス アカウントは、一致するジョブの実行に使用されます。
    Format service-some-number@gcp-sa-adsdataconnector.iam.gserviceaccount.com
    必要なアクセス権
    BigQuery Data Viewer
    roles/bigquery.dataViewer
    宛先プロジェクト
    BigQuery Job User
    roles/bigquery.jobUser
    宛先プロジェクト

    Salesforce

    近日提供予定

自社データの取り込み

入力データの形式を設定する

データが一致するには、次のフォーマット要件を満たしている必要があります。

  • ここに示されているように、Base16 文字列としてエンコードされた SHA256 ハッシュを使用してアップロードする必要があります。UPDM は Base64 をサポートしていますが、Google 広告カスタマー マッチのガイドラインとは異なります。
  • 入力フィールドは文字列としてフォーマットする必要があります。BigQuery の SHA256 ハッシュ関数と Base16 のエンコード関数(TO_HEX)を使用している場合は、次の変換を使用します。TO_HEX(SHA256(user_data))

User ID

  • 書式なしテキスト
  • ハッシュ化: なし

メール

  • 空白をストリップ
  • 文字はすべて小文字にしてください
  • すべてのメールアドレスにドメイン名を含めてください(gmail.com や hotmail.co.jp など)
  • アクセントを削除する(例: è、é、ê、ë e)
  • ハッシュ化: Base16 でエンコードされた SHA256

有効: TO_HEX(SHA256("jeffersonloveshiking@gmail.com"))

無効: TO_HEX(SHA256("JéffersonLôvesHiking@gmail.com"))

スマートフォン

  • 空白をストリップ
  • E.164 形式(例: US +14155552671、UK +442071838750)
  • 国コードを含む(米国を含む)
  • 「+」と国コードを除く特殊文字を除くすべてを削除
  • ハッシュ化: Base16 でエンコードされた SHA256

有効: TO_HEX(SHA256("+18005550101"))

無効: TO_HEX(SHA256("(800) 555-0101"))

  • 空白をストリップ
  • 文字はすべて小文字にしてください
  • 「Mrs.」などの接頭辞をすべて削除してください。
  • アクセント記号を削除しない(例: è、é、ê、ë)
  • ハッシュ化: Base16 でエンコードされた SHA256

有効: TO_HEX(SHA256("daní"))

無効: TO_HEX(SHA256("Daní"))

  • 空白をストリップ
  • 文字はすべて小文字にしてください
  • Jr. などのすべての接頭辞を削除します。
  • アクセント記号を削除しない(例: è、é、ê、ë)
  • ハッシュ化: Base16 でエンコードされた SHA256

有効: TO_HEX(SHA256("delacruz"))

無効: TO_HEX(SHA256("de la Cruz, Jr."))

Country

  • 顧客データがすべて同じ国のものである場合も、国コードを含めてください
  • 国のデータをハッシュ化しない
  • ISO 3166-1 alpha-2 の国コードを使用している
  • ハッシュ化: なし

有効: US

無効: United States of America または USA

郵便番号

  • 郵便番号データをハッシュ化しない
  • 米国の郵便番号と国際郵便番号の両方を使用できます
  • 米国の場合:
    • 5 桁のコードを指定できます(例: 94043)
    • 5 桁の後に 4 桁の拡張コードが続く形式も使用できます(例: 94043-1351、940431351)
  • その他の国の場合:
    • 書式設定は不要です(小文字にすること、スペースや特殊文字を削除する必要はありません)
    • 郵便番号の拡張コード部分は省略してください
  • ハッシュ化: なし

ハッシュ検証とデータ エンコーディング

次のハッシュ検証スクリプトを使用して、データの形式が正しいことを確認できます。

JavaScript

Base16

/**
 * @fileoverview Provides the hashing algorithm for User-Provided Data Match, as
 * well as some valid hashes of sample data for testing.
*/

async function hash(token) {
  const formattedToken = token.trim().toLowerCase();
  const hashArrayBuffer = await crypto.subtle.digest(
      'SHA-256', (new TextEncoder()).encode(formattedToken));
  return Array.from(new Uint8Array(hashArrayBuffer))
      .map((b) => b.toString(16).padStart(2, '0'))
      .join('');
}

function main() {
  // Expected hash for test@gmail.com:
  // 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
  hash('test@gmail.com').then(result => console.log(result));

  // Expected hash for +18005551212:
  // 61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  hash('+18005551212').then(result => console.log(result));

  // Expected hash for John:
  // 96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
  hash('John').then(result => console.log(result));

  // Expected hash for Doe:
  // 799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
  hash('Doe').then(result => console.log(result));
}

main()

Base64

/**
 * @fileoverview Provides the hashing algorithm, as well as some valid hashes of
 * sample data for testing.
*/

async function hash(token) {
  const formattedToken = token.trim().toLowerCase();
  const hashBuffer = await crypto.subtle.digest(
      'SHA-256', (new TextEncoder()).encode(formattedToken));
  const base64Str = btoa(String.fromCharCode(...new Uint8Array(hashBuffer)));
  return base64Str;
}

function main() {
  // Expected hash for test@gmail.com:
  // h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
  hash('test@gmail.com').then(result => console.log(result));

  // Expected hash for +18005551212:
  // YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
  hash('+18005551212').then(result => console.log(result));

  // Expected hash for John: ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
  hash('John').then(result => console.log(result));

  // Expected hash for Doe: eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
  hash('Doe').then(result => console.log(result));
}

main()

Python

Base16

"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

Supports: Python 2, Python 3

Sample hashes:

  - Email 'test@gmail.com': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
  - Phone '+18005551212':   61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  - First name 'John':      96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
  - Last name 'Doe':        799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
"""

import base64
import hashlib

def updm_hash(token):
  return hashlib.sha256(token.strip().lower().encode('utf-8')).hexdigest()

def print_updm_hash(token):
  print('Hash: "{}"\t(Token: {})'.format(updm_hash(token), token))

def main():
  print_updm_hash('test@gmail.com')
  print_updm_hash('+18005551212')
  print_updm_hash('John')
  print_updm_hash('Doe')

if __name__ == '__main__':
  main()

Base64

"""Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

Supports: Python 2, Python 3

Sample hashes:

  - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
  - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
  - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
  - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
"""

import base64
import hashlib

def hash(token):
  return base64.b64encode(
      hashlib.sha256(
          token.strip().lower().encode('utf-8')).digest()).decode('utf-8')

def print_hash(token, expected=None):
  hashed = hash(token)

  if expected is not None and hashed != expected:
    print(
        'ERROR: Incorrect hash for token "{}". Expected "{}", got "{}"'.format(
            token, expected, hashed))
    return

  print('Hash: "{}"\t(Token: {})'.format(hashed, token))

def main():
  print_hash(
      'test@gmail.com', expected='h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=')
  print_hash(
      '+18005551212', expected='YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=')
  print_hash('John', expected='ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=')
  print_hash('Doe', expected='eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=')

if __name__ == '__main__':
  main()

Go

Base16

/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

Sample hashes:

  - Email 'test@gmail.com': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
  - Phone '+18005551212':   61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  - First name 'John':      96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
  - Last name 'Doe':        799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f
*/
package main

import (
  "crypto/sha256"
  "fmt"
  "strings"
)

// Hash hashes an email, phone, first name, or last name into the correct format.
func Hash(token string) string {
  formatted := strings.TrimSpace(strings.ToLower(token))
  hashed := sha256.Sum256([]byte(formatted))
  encoded := fmt.Sprintf("%x", hashed[:])
  return encoded
}

// PrintHash prints the hash for a token.
func PrintHash(token string) {
  fmt.Printf("Hash: \"%s\"\t(Token: %s)\n", Hash(token), token)

}

func main() {
  PrintHash("test@gmail.com")
  PrintHash("+18005551212")
  PrintHash("John")
  PrintHash("Doe")
}

Base64

/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

Sample hashes:

  - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
  - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
  - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
  - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
*/
package main

import (
  "crypto/sha256"
  "encoding/base64"
  "fmt"
  "strings"
)

// Hash hashes an email, phone, first name, or last name into the correct format.
func Hash(token string) string {
  formatted := strings.TrimSpace(strings.ToLower(token))
  hashed := sha256.Sum256([]byte(formatted))
  encoded := base64.StdEncoding.EncodeToString(hashed[:])
  return encoded
}

// PrintHash prints the hash for a token.
func PrintHash(token string) {
  fmt.Printf("Hash: \"%s\"\t(Token: %s)\n", Hash(token), token)

}

func main() {
  PrintHash("test@gmail.com")
  PrintHash("+18005551212")
  PrintHash("John")
  PrintHash("Doe")
}

Java

Base16

package updm.hashing;

import static java.nio.charset.StandardCharsets.UTF_8;

import com.google.common.base.Ascii;
import com.google.common.hash.Hashing;

/**
 * Example of the UPDM hashing algorithm using hex-encoded SHA-256.
*
* <p>This uses the Guava Hashing to generate the hash: https://github.com/google/guava
*
* <p>Sample valid hashes:
*
* <ul>
*   <li>Email "test@gmail.com": "87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674"
*   <li>Phone "+18005551212": "61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44"
*   <li>First name "John": "96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a"
*   <li>Last name "Doe": "799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f"
* </ul>
*/
public final class HashExample {

  private HashExample() {}

  public static String hash(String token) {
    String formattedToken = Ascii.toLowerCase(token).strip();
    return Hashing.sha256().hashString(formattedToken, UTF_8).toString();
  }

  public static void printHash(String token) {
    System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
  }

  public static void main(String[] args) {
    printHash("test@gmail.com");
    printHash("+18005551212");
    printHash("John");
    printHash("Doe");
  }
}

Base64

package updm.hashing;

import static java.nio.charset.StandardCharsets.UTF_8;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

/**
* Example of the hashing algorithm.
*
* <p>Sample hashes:
*
* <ul>
*   <li>Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
*   <li>Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
*   <li>First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
*   <li>Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
* </ul>
*/
public final class HashExample {

private HashExample() {}

public static String hash(String token) {
  String formattedToken = token.toLowerCase().strip();

  byte[] hash;
  try {
    hash = MessageDigest.getInstance("SHA-256").digest(formattedToken.getBytes(UTF_8));
  } catch (NoSuchAlgorithmException e) {
    throw new IllegalStateException("SHA-256 not supported", e);
  }

  return Base64.getEncoder().encodeToString(hash);
}

public static void printHash(String token) {
  System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
}

public static void main(String[] args) {
  printHash("test@gmail.com");
  printHash("+18005551212");
  printHash("John");
  printHash("Doe");
}
}

SQL

Base16

/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.

Sample hashes:

  - Email 'test@gmail.com': 87924606b4131a8aceeeae8868531fbb9712aaa07a5d3a756b26ce0f5d6ca674
  - Phone '+18005551212':   61d9111bed3e6d9cfc1bc3b5cb35a402687c4f1546bee061a2bd444fbdd64c44
  - First name 'John':      96d9632f363564cc3032521409cf22a852f2032eec099ed5967c0d000cec607a
  - Last name 'Doe':        799ef92a11af918e3fb741df42934f3b568ed2d93ac1df74f1b8d41a27932a6f

The unhashed input table schema is assumed to be:

- Column name: UserID, Type: String
- Column name: Email, Type: String
- Column name: Phone, Type: String
- Column name: FirstName, Type: String
- Column name: LastName, Type: String
- Column name: PostalCode, Type: String
- Column name: CountryCode, Type: String
*/

CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
  UserID,
  TO_HEX(SHA256(LOWER(Email))) AS Email,
  TO_HEX(SHA256(Phone)) AS Phone,
  TO_HEX(SHA256(LOWER(FirstName))) AS FirstName,
  TO_HEX(SHA256(LOWER(LastName))) AS LastName,
  PostalCode,
  CountryCode,
FROM
  `your_project_name.your_dataset_name.input_unhashed_table_name`;

Base64

/*
Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.

Sample hashes:

  - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
  - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
  - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
  - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=

The unhashed input table schema is assumed to be:

- Column name: UserID, Type: String
- Column name: Email, Type: String
- Column name: Phone, Type: String
- Column name: FirstName, Type: String
- Column name: LastName, Type: String
- Column name: PostalCode, Type: String
- Column name: CountryCode, Type: String
*/

CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
AS
SELECT
  UserID,
  TO_BASE64(SHA256(LOWER(Email))) AS Email,
  TO_BASE64(SHA256(Phone)) AS Phone,
  TO_BASE64(SHA256(LOWER(FirstName))) AS FirstName,
  TO_BASE64(SHA256(LOWER(LastName))) AS LastName,
  PostalCode,
  CountryCode,
FROM
  `your_project_name.your_dataset_name.input_unhashed_table_name`;

結合キー

ユーザー提供データの一部の組み合わせは、他のデータよりも強力な場合があります。ユーザー指定のデータの組み合わせのリストを以下に示します。

  1. メール、電話、住所(最強)
  2. 電話番号、住所
  3. メールアドレス、住所
  4. メール、電話
  5. Address(住所)
  6. スマートフォン
  7. メール(最も弱い)

マッチテーブルを作成する

  1. [接続] > [データ マッチング] > [接続の作成] をクリックします。
  2. データソースを選択し、[接続] をクリックします。プロンプトが表示されたら、認証を行い、[次へ] をクリックします。
  3. データソースを構成し、[次へ] をクリックします。

    BigQuery

    インポートする BigQuery テーブルを選択します。

    Cloud Storage

    gsutil ファイルのパス(gs://my-bucket/folder/ など)を入力し、ファイル形式を選択します。

    Salesforce

    近日提供予定

  4. 宛先を設定し、[次へ] をクリックします。
    1. データの中間宛先として使用する新しい BigQuery データセットを選択します。このステップにより、データが正しくフォーマットされます。
  5. 省略可: データの形式を変更します。変換には、コンピューティング ハッシュ、小文字/大文字の書式設定、結合/分割フィールドが含まれます。
    1. [操作] > > [変換] をクリックします。
    2. ポップアップ表示されるパネルで、[変換を追加] または [別の変換を追加] をクリックします。
    3. プルダウン メニューから変換タイプを選択し、要件を入力します。
    4. [保存] をクリックします。
  6. 少なくとも 1 つの結合キーを選択して、使用するフィールドをマッピングし、[次へ] をクリックします。
  7. スケジュールを設定します。
    1. 接続に名前を付けます。
    2. 頻度を設定し、前の手順で選択したデータセットにデータをインポートする頻度を指定します。実行するたびに、宛先テーブルのデータが上書きされます。
    3. ユーザー ID の競合の処理方法を指定します。既存の一致を維持するか、新しいデータで上書きするかを選択できます。
  8. [Finish] をクリックします。

接続の詳細の表示

接続の詳細ページには、特定の接続での最近の実行とエラーに関する情報が表示されます。特定の接続の詳細を表示するには:

  1. [接続] > [データ マッチング] をクリックします。
  2. 接続の名前をクリックして、詳細を表示します。
  3. 接続の詳細と最近の実行を確認できます。それぞれのエラーには、接続レベル(接続が実行されなかったこと)と行レベルのエラー(行がインポートされなかった)の 2 種類のエラーが表示されます。
    1. [失敗] ステータスは、接続全体の実行に失敗したことを示します(例: サービス アカウントの権限の問題)。エラー ステータスをクリックして、接続に影響を与えたエラーを確認します。
    2. [Completed] のステータスは、接続が正常に完了したことを示します。ただし、行レベルのエラーが引き続き発生することがあります。エラーは、[Rows with errors] 列にゼロ以外の値で示されます。値をクリックすると、失敗したレコードの詳細が表示されます。

接続を編集する

接続の編集はまだサポートされていません。接続を変更するには、新しい接続を作成してから、古い接続を削除します。

Ads Data Hub でデータをクエリする

マッチテーブルをクエリする

プライバシー チェックを満たすのに十分なデータがマッチテーブルに含まれている場合は、テーブルに対してクエリを実行できます。user_id フィールドを含む Ads Data Hub スキーマの各テーブルには、*_match テーブルが付属しています。たとえば、adh.google_ads_impressions テーブルの場合、Ads Data Hub はユーザー ID のみを含む adh.google_ads_impressions_match という一致テーブルを生成します。これらのテーブルには、user_id と一致する元のテーブルで使用可能なユーザーのサブセットが含まれています。たとえば、元のテーブルにユーザー A とユーザー B のデータが含まれていて、ユーザー A のみが一致すると、ユーザー B はマッチテーブルに含まれません。

マッチテーブルには external_cookie という列があり、Cookie が BYTES として保存されます。

external_cookie フィールドに ID は BYTES が含まれます。成功するには、結合キーを BYTES にキャストする必要があります。

JOIN ON 
  google_data_imp.external_cookie = CAST(my_data.user_id AS BYTES)

広告イベント テーブルの *_match ビューをクエリして、マッチテーブルを使用します。Cookie マッチングも使用する場合は、クエリでマッチタイプでフィルタリングできます。使用するプロパティは次のとおりです。

  • Cookie マッチングのための match_type = 1
  • match_type = 2: ユーザー提供データのマッチングの場合

クエリで match_type は許可されますが、このフィールドは結果で返されないため、最後の SELECT ステートメントで使用しないでください。

サンプルクエリ

一致したユーザー数をカウント

このクエリでは、Google 広告のインプレッション数表に一致するユーザー数がカウントされます。

/* Count matched users in Google Ads impressions table */

SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_match

ユーザー提供データのマッチング ユーザーをカウントする

このクエリは、一致したユーザーの数をマッチタイプ別にカウントします。広告イベント テーブルにはログイン ユーザーと非ログイン ユーザーの両方のイベントが含まれるため、ユーザー提供データの一致をフィルタすると、ログインしたユーザーのみが一致します。

/* Count user-provided data matched users by match type.
match_type = 1 for cookie matching
match_type = 2 for user-provided data matching */

SELECT
  match_type AS match_type,
  COUNT(DISTINCT user_id) AS user_cnt,
FROM 
  adh.google_ads_impressions_match
GROUP BY
  match_type

次のクエリは、自社データと Google 広告データを結合する方法を示しています。

/* Join first-party data with Google Ads data. The external_cookie field 
contains your ID as BYTES. You need to cast your join key into BYTES for 
successful matches. */

SELECT
  inventory_type,
  COUNT(*) AS impressions
FROM
  adh.yt_reserve_impressions_match AS google_data_imp
LEFT JOIN
  `my_data`
ON 
  google_data_imp.external_cookie = CAST(my_data.user_id AS BYTES)
-- Uncomment the following line if cookie matching is enabled as well.
-- WHERE google_data_imp.match_type = 2
GROUP BY
  inventory_type

このクエリは、Cookie に一致するユーザーを除く、ユーザー提供データと一致するユーザーの数をカウントします。広告イベント テーブルには、ログインしたユーザーとログアウトしたユーザーの両方のイベントが含まれているため、ユーザー提供データの一致のみをフィルタリングすると、ログインしたユーザーのみが一致します。

/* Count user-provided data matched users, excluding cookie matched users. */

SELECT 
  COUNT(DISTINCT user_id)
FROM 
  adh.google_ads_impressions_match
WHERE 
  match_type = 2

接続

有益な広告分析情報を得るには、多くの場合、複数のソースのデータをつなぎ合わせる必要があります。このデータ パイプラインの問題に対する独自のソリューションを構築するには、かなりの時間と投資が必要になります。Connections は、BigQuery へのデータのインポート、変換、書き込みのステップバイステップのガイド付きインターフェースを提供することで、このプロセスを効率化します。作成したデータは、Ads Data Hub クエリや、BigQuery から読み込まれるその他のプロダクトで使用できます。自社データでクエリを拡充すると、より豊かなカスタマー エクスペリエンスを提供でき、業界全体での広告トラッキングの変更に対する耐性も向上します。

また Connections は、個人を特定できる情報(PII)を暗号化し、プライバシーを重視しながらパートナーと共有するためのツールも構築されています。Connections では、PII が含まれる列を選択した後、データを暗号化し、権限を持つユーザーのみがエクスポートまたは読み取りを行えるようにします。

接続を使用して次の場所からデータをインポートできます。

測定や有効化のユースケースに必要な自社データを把握するのは難しい場合があるため、Connections では、事前定義されたユースケースの包括的なリストを提供して、データの抽出、変換、読み込みの全容をガイドします。

自社データとデータ マッチングの違い

ユーザー提供のマッチテーブルを構成するワークフローは、Connections を介した通常の自社データ接続の作成に似ています。ただし、2 プロジェクトの要件では、ユーザー提供のデータ マッチングを使用する前に接続を設定することを前提としています。データ準備ツールとして接続のみを使用する場合は、単一の Google Cloud プロジェクトを使用できます。

ユーザー提供データのマッチングに関する追加の要件:

  • メール、電話、住所、またはその組み合わせを結合キーとして使用する必要があります。
  • user_id の競合の解決方法を指定する必要があります。既存の一致を維持するか、新しいデータで上書きするかを選択できます。
  • datafusion アカウントと Dataproc アカウントに加えて、UPDM サービス アカウントを使用する必要があります。

自社データのワークフロー

接続を作成する

  1. [接続] > [自社データ] > [接続の作成] をクリックします。
  2. データソースに接続します。認証を求めるメッセージが表示されます。

    BigQuery

    権限は Google アカウントに基づいているため、追加の認証は必要ありません。Connections サービス アカウントにテーブルへの読み取りアクセス権が付与されていることを確認します。

    Cloud Storage

    権限は Google アカウントに基づいているため、追加の認証は必要ありません。Connections サービス アカウントにストレージ バケットへの読み取りアクセス権が付与されていることを確認します。

    Salesforce

    (近日提供予定)

    組織の Salesforce 認証情報を使用してログインします。 Google は認証情報を保存しないため、新たに Salesforce に接続するたびに再認証が必要になります。

  3. ユースケース結合キーを選択してから、ユースケースを選択してください。ユースケースを選択しない場合は、[スキップ] をクリックします。 ユースケースは後で選択できません。
  4. データソースを設定します。

    BigQuery

    インポートする BigQuery テーブルを選択します。

    Cloud Storage

    gsutil ファイルのパス(gs://my-bucket/folder/ など)を入力し、ファイル形式を選択します。

    Salesforce

    準備中

  5. 宛先とマップ フィールドを構成します。
    • 結果を書き込む Google Cloud プロジェクト、データセット、テーブルを選択します。接続サービス アカウントに、書き込み先のデータセットに対する書き込みアクセス権があることを確認します。
    • 接続を開始するたびに、書き込み先の新しいテーブルが作成されます。既存のテーブルを選択すると、エラーが表示されます。
    • 宛先フィールド(作成しているテーブルに表示されるフィールド)をソースデータのソース フィールドにマッピングします。
  6. スケジュールを設定します。
    1. 接続に名前を付けます。
    2. 頻度を設定し、前の手順で選択したデータセットにデータをインポートする頻度を指定します。実行するたびに、宛先テーブルのデータが上書きされます。
  7. [完了] をクリックします。大量のデータを処理する接続は、実行に数時間かかることがあります。

接続の詳細の表示

接続の詳細ページには、特定の接続での最近の実行とエラーに関する情報が表示されます。特定の接続の詳細を表示するには:

  1. [接続] > [自社データ] をクリックします。
  2. 接続の名前をクリックして、詳細を表示します。
  3. 接続の詳細と最近の実行を確認できます。それぞれのエラーには、接続レベル(接続が実行されなかったこと)と行レベルのエラー(行がインポートされなかった)の 2 種類のエラーが表示されます。
    1. [失敗] ステータスは、接続全体の実行に失敗したことを示します(例: サービス アカウントの権限の問題)。エラー ステータスをクリックして、接続に影響を与えたエラーを確認します。
    2. [Completed] のステータスは、接続が正常に完了したことを示します。ただし、行レベルのエラーが引き続き発生することがあります。エラーは、[Rows with errors] 列にゼロ以外の値で示されます。値をクリックすると、失敗したレコードの詳細が表示されます。

接続を編集する

接続の編集はまだサポートされていません。接続を変更するには、新しい接続を作成し、古い接続を削除します。

ユースケース

選択したユースケースは、宛先テーブルのスキーマとインポートされた結合キーのフィールドに影響します。以下のユースケースを展開して、スキーマと結合キーへの影響を確認してください。

リーチとフリークエンシー

自社のユーザー セグメント別にスライス化された、複数のチャネルやデバイスにまたがるキャンペーンのリーチとフリークエンシーを測定します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意
transaction_id この取引の一意の ID 文字列 任意
transaction_date トランザクションの日付(Unix エポック タイムスタンプ) int 任意
transaction_revenue トランザクションからの収益 int 任意
currency トランザクションの通貨タイプ 文字列 任意
quantity 取引に含まれるアイテムの数量 文字列 任意
price 取引に含まれるアイテムごとの価格 int 任意
transaction_cost 取引による商品 / サービスの費用 int 任意
トランザクション利益 トランザクションの総利益 int 任意
product_id トランザクション内の商品の SKU / ID 文字列 任意
transaction_description 取引に関するその他の説明、メタデータ、パラメータ 文字列 任意
event_type 例: テレビ広告のインプレッション、マーケティング メール、ウェブサイト訪問、実店舗への来店など。 文字列 任意
イベント ID 上記のイベントの一意の ID 文字列 任意
event_timestamp イベントの日付(Unix エポック タイムスタンプ) int 任意
チャンネル メタデータ このタッチポイント チャネルに関する追加のメタデータまたは情報。 文字列 任意

マルチタッチ アトリビューション

自社のタッチポイントを Google データからのタッチポイントと組み合わせることでアトリビューションを測定します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
event_type 例: テレビ広告のインプレッション、マーケティング メール、ウェブサイト訪問、実店舗への来店など。 文字列 必須
イベント ID 上記のイベントの一意の ID 文字列 必須
event_timestamp イベントの日付(Unix エポック タイムスタンプ) int 必須
クレジット 貢献度(アトリビューションに使用)- 例: コンバージョン数 int 任意
チャンネル メタデータ このタッチポイント チャネルに関する追加のメタデータまたは情報。 文字列 任意

パフォーマンス指標

ユーザー属性、アフィニティ、自社のユーザー セグメント別にスライス化されたキャンペーンのパフォーマンスを測定します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意

コンバージョン経路アトリビューション

自社のタッチポイントなど、カスタムのタッチポイントを含むコンバージョン経路のパフォーマンスを分析します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
event_type 例: テレビ広告のインプレッション、マーケティング メール、ウェブサイト訪問、実店舗への来店など。 文字列 必須
イベント ID 上記のイベントの一意の ID 文字列 必須
event_timestamp イベントの日付(Unix エポック タイムスタンプ) int 必須
クレジット 貢献度(アトリビューションに使用)- 例: コンバージョン数 int 任意
チャンネル メタデータ このタッチポイント チャネルに関する追加のメタデータまたは情報。 文字列 任意

クロス パブリッシャーの重複

自社のユーザー セグメント別にスライス化された、複数のパブリッシャーにまたがるキャンペーンのリーチとフリークエンシーを分析します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意

同時キャンペーンのパフォーマンス

自社のユーザー セグメント別にスライス化された、並行キャンペーンのパフォーマンスを測定します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意
transaction_id この取引の一意の ID 文字列 任意
transaction_date トランザクションの日付(Unix エポック タイムスタンプ) int 任意
transaction_revenue トランザクションからの収益 int 任意
currency トランザクションの通貨タイプ 文字列 任意
quantity 取引に含まれるアイテムの数量 文字列 任意
price 取引に含まれるアイテムごとの価格 int 任意
transaction_cost 取引による商品 / サービスの費用 int 任意
トランザクション利益 トランザクションの総利益 int 任意
product_id トランザクション内の商品の SKU / ID 文字列 任意
transaction_description 取引に関するその他の説明、メタデータ、パラメータ 文字列 任意
event_type 例: テレビ広告のインプレッション、マーケティング メール、ウェブサイト訪問、実店舗への来店など。 文字列 任意
イベント ID 上記のイベントの一意の ID 文字列 任意
event_timestamp イベントの日付(Unix エポック タイムスタンプ) int 任意
チャンネル メタデータ このタッチポイント チャネルに関する追加のメタデータまたは情報。 文字列 任意

キャンペーン比較

Google キャンペーンと他のパブリッシャーのパフォーマンスを比較します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
チャンネル このキャンペーンが実施されたチャネル(Facebook、TV など) 文字列 必須
パートナー パートナーの名前(関与している場合) 文字列 任意
戦術 特定の戦術の名前 文字列 任意
キャンペーン メタデータ このキャンペーンに関する追加のメタデータまたは情報 文字列 任意
date キャンペーン アクティビティの日付(Unix エポック タイムスタンプ) int 必須
表示回数 このキャンペーンのキャンペーンの表示回数 int 必須
clicks この日付のこのキャンペーンのクリック数 int 必須
コンバージョン数 この日付のこのキャンペーンからのコンバージョン数 int 必須
費用 この日付のこのキャンペーンの合計費用 int 必須

アフィニティとラベルの比較

自社のユーザー セグメントと、Google アフィニティ セグメントおよび購買意向の強いオーディエンス セグメント間の重複を見つけます。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意

アプリ コンバージョンの分析

アプリ内ユーザー行動に対するキャンペーンの効果を測定します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
date モバイルアプリのアクティビティの日付(Unix エポック タイムスタンプ) int 必須
インストール この日にインストール イベントが記録されたかどうかを表すブール値 boolean 必須
登録する この日に登録イベントが記録されたかどうかを表すブール値 boolean 必須
login この日にログイン イベントが記録されたかどうかを表すブール値 boolean 必須
in_app_purchases この日のアプリ内購入の合計数 int 必須

ROI の計算

自社のコンバージョン データに基づく投資収益率の増分を測定します。

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
transaction_id この取引の一意の ID 文字列 必須
transaction_date トランザクションの日付(Unix エポック タイムスタンプ) int 必須
transaction_revenue トランザクションからの収益 int 必須
currency トランザクションの通貨タイプ 文字列 任意
quantity 取引に含まれるアイテムの数量 文字列 任意
price 取引に含まれるアイテムごとの価格 int 任意
transaction_cost 取引による商品 / サービスの費用 int 任意
トランザクション利益 トランザクションの総利益 int 任意
product_id トランザクション内の商品の SKU / ID 文字列 任意
transaction_description 取引に関するその他の説明、メタデータ、パラメータ 文字列 任意

カスタム オーディエンスの有効化

自社データと Google データに基づくカスタム ユーザー セグメントを作成、有効化します

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意

カスタム入札

自社データと Google データに基づくディスプレイ&ビデオ 360 入札戦略を最適化します

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意

クロス パブリッシャーのパフォーマンス

パブリッシャー別、またはパブリッシャーと自社のユーザー セグメント別にスライス化されたパフォーマンス指標を測定します

フィールド名 説明 タイプ 必須/省略可
結合キー 使用する結合キーに基づく変更 文字列 必須
gender 性別 文字列 任意
age Age int 任意
city 市区郡町村 文字列 任意
country Country 文字列 任意
ライフサイクルの状態 顧客ファネルの状態: 不明、オンボーディング、エンゲージメント、失効など 文字列 任意
loyalty_status シルバー、ゴールド、プラチナ、ダイヤモンドなど 文字列 任意
last_purchase_date 最終購入日(Unix エポック タイムスタンプ) int 任意
last_purchase_product [前回の購入商品] 最後に購入した商品 / 消費した商品 文字列 任意
last_contacted_date 最後の連絡 / エンゲージメントの日付(Unix エポック タイムスタンプ) int 任意
LTV 顧客 LTV int 任意
定期購入の種類 顧客が持っているサブプロダクトやサブスクリプション タイプ(例: デラックス、ファミリー プラン) 文字列 任意