# Facebook Offline Conversions

2025-03-10更新 Metaは、現在のFacebook Offline ConversionsアプリケーションがOffline Conversions API（OCAPI）を廃止することを発表しました。また、Metaは新しいオフラインイベントセット（OES）の作成を無効にします。Metaは、OCAPIが2025年5月1日に廃止されることを予想しています。参照：[https://www.facebook.com/business/help/1835755323554976](https://www.facebook.com/business/help/1835755323554976)    この変更に備えて、Treasure DataはMeta Conversion APIコネクターでオフラインコンバージョンのサポートを追加しました：   - [Facebook Conversions API Export Integration](/ja/int/facebook-conversions-api-export-integration)  これら2つのAPI間のフィールド名の違いを確認してください：   - [/int/migration-guide-to-facebook-conversion-connector](/ja/int/migration-guide-to-facebook-conversion-connector)   ユーザーは、Facebook Offline Conversionsアプリケーションへの今後の変更に備えて、今日からコネクターに切り替えることができます。

Facebook Offline Conversionsを使用して、Treasure DataからFacebookに直接ジョブ結果（オフラインイベントデータの形式）を送信し、Facebook広告が店舗での購入、電話注文、予約などの実際の成果にどれだけつながるかを測定できます。

## 前提条件

- Treasure Dataの基本的な知識
- Facebook Offline ConversionsとFacebook Offline Eventの基本的な知識
- イベントデータをアップロードするには、Facebook上で次のいずれかへのアクセスが必要です：
  - Business Manager管理者
  - オフラインイベントセットを作成した管理者システムユーザー
  - オフラインイベントセットに接続された`ad_account`の管理者


## Offline Event Set ID

1. Business Managerダッシュボードを開き、Event Managerを選択します。
2. **Event Set**を選択します。
3. **Settings**を選択すると、Offline event set IDが表示されます。


![](/assets/image-20200916-125520.871f138abf2ac583105cd7a6388da2fef20b40ab55f783cc84fa22394da6955e.105d1a9c.png)

## Treasure コンソールを使用して接続を作成する

### 新しい接続を作成する

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

1. Treasure コンソールを開きます。
2. **Integrations Hub** > **Catalog**に移動します。
3. **Facebook Offline Conversions**を検索して選択します。
4. 次のダイアログが開いたら、認証方法のタイプを選択します。これについては、次のセクションで詳しく説明します。


![](/assets/image-20200913-011149.0ff5d47236e5f84f2e24d951f852b97cb42e65b7aebd1ed7a0d28ff02f4ff20e.105d1a9c.png)

1. 接続の名前を入力します。
2. **Done**を選択します。


### 接続の認証

Treasure DataをFacebookで認証する方法によって、データコネクターがFacebookにアクセスできるようにするための手順が異なります。次の方法で認証を選択できます：

- Access Token
- OAuth


#### Access Tokenを使用した認証

Access Tokenを使用して認証するには、アクセストークンとクライアントシークレットが必要です。長期有効なユーザーアクセストークンまたはシステムユーザーアクセストークンが推奨されます。[長期有効なアクセストークン](https://www.sociablekit.com/get-facebook-long-lived-user-access-token/)または[システムアクセストークン](https://developers.facebook.com/docs/audience-network/guides/reporting/system-user/)を作成する必要がある場合があります。

access_tokenに`ads_management`権限を割り当てる必要があります。

#### OAuthを使用した認証

OAuthは最も一般的な認証方法です。認証には、Treasure アカウントをFacebook Adsアカウントに手動で接続する必要があります。
認証するには、次の手順を実行します：

1. **Click here**を選択して新しいアカウントを接続します。まだログインしていない場合は、Facebookにログインするためにリダイレクトされるか、Treasure Dataへのアクセスを許可する同意ページに移動します。


![](/assets/image-20200913-030209.a9b9a438d4dc4a9a15d2db5b21f980d016a40bfecb507e21ecd649b31596b80d.105d1a9c.png)

1. ポップアップウィンドウでFacebookアカウントにログインし、Treasure Dataアプリケーションへのアクセスを許可します。Treasure コンソールにリダイレクトされます。


![](/assets/data-connector-facebook-login.ffc61a088d2fba0cad93ac39afbcb5c2cf06e120c8fdf113b84fe3855bd8b04d.105d1a9c.png)

1. 最初のステップ（新しい接続を作成する）を繰り返し、新しいOAuth接続を選択します。


![](/assets/image-20200913-030623.f479d771e5df0a0ead39bade8109c76d67ccba05579d884d2b47a6da366130dc.105d1a9c.png)

1. 新しいFacebook Offline Conversions接続に名前を付けます。
2. **Done**を選択します。


### データ接続でエクスポート結果を構成する

このステップでは、クエリを作成または再利用します。クエリで、データ接続を構成します。

クエリで列マッピングを定義する必要があります。クエリの列は、Facebookにアップロードされるオフラインイベントデータを表します。

さらに、**match_keys**列とそのデータは、Facebookに送信される前にハッシュ化/正規化されます。[ハッシュ化と正規化の要件](https://developers.facebook.com/docs/marketing-api/audiences/guides/custom-audiences#hash)の詳細をご覧ください。エクスポート結果を構成するには、少なくとも1つの**match_keys**列が必要です。

| **Column name** | **Data type** | **Match Key** | **Required** | **Multiple** | **Example** |
|  --- | --- | --- | --- | --- | --- |
| `email` | string | Yes | No | Yes | foo@fb.com |
| `phone` | string | Yes | No | Yes | 1-202-555-0192 |
| `gen` | string | Yes | No | No | M |
| `doby` | string | Yes | No | No | 1990 |
| `dobm` | string | Yes | No | No | 10 |
| `dobd` | string | Yes | No | No | 20 |
| `ln` | string | Yes | No | No | Bar |
| `fn` | string | Yes | No | No | Foo |
| `fi` | string | Yes | No | No | L |
| `ct` | string | Yes | No | No | Long Beach |
| `st` | string | Yes | No | No | California |
| `zip` | string | Yes | No | No | 90899 |
| `country` | string | Yes | No | No | US |
| `madid` | string | Yes | No | No | aece52e7-03ee-455a-b3c4-e57283 |
| `extern_id` | string | Yes | No | No |  |
| `lead_id` | string | Yes | No | No | 12399829922 |
| `event_time` | long | No | Yes | No | 1598531676 |
| `event_name` | string | No | Yes | No | Purchase |
| `currency` | string | No | Yes | No | USD |
| `value` | double | No | Yes | No | 100.00 |
| `content_type` | string | No | No | No |  |
| `contents` | json string | No | No | Yes | {"id": "b20", "quantity": 100} |
| `custom_data` | json string | No | No | No | {"a":12, "b":"c"} |
| `order_id` | string | No | No | No | OD123122 |
| `item_number` | string | No | No | No |  |


[Data Processing Options](https://developers.facebook.com/docs/marketing-apis/data-processing-options)を含めるには、クエリでこれらの列マッピングを指定します。

| **Column name** | **Data Type** | **Required** | **Multiple** | **Example** |
|  --- | --- | --- | --- | --- |
| `data_processing_options` | string | No | No | "LDU" |
| `data_processing_options_country` | long | No | No | 1 |
| `data_processing_options_state` | long | No | No | 1000 |


同じ名前で複数の値をクエリするには、クエリで名前を複数回指定します。例えば：


```SQL
SELECT home_email as email, work_email as email, first_name as fn, last_name as ln
FROM table my_table
```

### パラメータを指定して接続を構成する

1. Treasure コンソールを開きます。
2. **Data Workbench** > **Queries**に移動します。
3. データをエクスポートするために使用する予定のクエリを選択します。
4. クエリエディターの上部にある「Export Results」を選択します。
5. **Choose Integration**ダイアログが開きます。
6. 結果をエクスポートするために使用する接続を選択する際に、既存の接続を使用するか、最初に新しい接続を作成するかの2つのオプションがあります。


#### 既存の接続を使用する

1. 検索ボックスに接続名を入力してフィルタリングします。
2. 接続を選択します。
3. 次のパラメータを設定します。


| **Parameter** | **Description** |
|  --- | --- |
| **Offline Event Set ID**（必須） | FacebookオフラインイベントセットID。Offline Event Set IDについては付録を参照してください。 |
| **Upload Tag**（必須） | イベントのアップロードを追跡するために使用します |
| **Namespace ID**（オプション） | `extern_id`または`tpid`を解決するために使用されるスコープ。別のデータセットまたはデータパートナーIDにすることができます。例：`12345` |
| **Match Keys**（必須） | Facebook上の人々とマッチングするために使用される識別情報。値はカンマ区切りの文字列です。例：`email,phone,fn,ln,st,country…` |
| **Skip Invalid Data**（オプション） | 無効なレコードが検出されたときにジョブを終了する（元に戻さずに）ために使用されます。たとえば、レコードに必須列（`event_name`、`event_time...`など）がない場合です。 |


サンプル構成は次のとおりです：

![](/assets/image-20200916-024823.38c88f7c6235bf6dc4b3dfb5451a59e998bbc0c4cdfba20e8b1202570ae69bd3.105d1a9c.png)

### オフラインイベントデータを入力するクエリの例

Treasure Dataから、Facebook Offline Conversionsの接続にエクスポート結果を含む次のクエリを実行します：

- テーブルからの通常のSELECTクエリ



```SQL
SELECT
  an_email_column       AS EMAIL,
  a_phone_column        AS PHONE,
  an_event_time_column  AS EVENT_TIME,
  an_event_name_column  AS EVENT_NAME,
  a_double_column       AS VALUE,
  a_currency_column     AS CURRENCY
FROM your_table;
```

- 複数の値のために複数のemailおよびphone列をクエリします。



```SQL
SELECT
  'elizabetho@fb.com' as email,
  'olsene@fb.com'     as email,
  '1-(650)-561-5622'  as phone,
  '1-(650)-782-5622'  as phone,
  'Elizabeth'         as fn,
  'Olsen'             as ln,
  '94046'             as zip,
  'Menlo Park'        as st,
  'US'                as country,
  '1896'              as doby,
  'Purchase'          as event_name,
  1598531676          as event_time,
  150.01              as value,
  'USD'               as currency
```

- 複数の`contents`を含むクエリ



```
SELECT
  'elizabetho@fb.com' as email,
  'Purchase'          as event_name,
  1598531676          as event_time,
  150.01              as value,
  'USD'               as currency
  '{"id": "b20", "quantity": 100}' as contents
  '{"id": "b21", "quantity": 200}' as contents
```

- `custom_data`列をクエリする



```
SELECT
  'elizabetho@fb.com' as email,
  'Purchase'          as event_name,
  1598531676          as event_time,
  150.01              as value,
  'USD'               as currency
  '{"a":12, "b":"c"}' as custom_data
```

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

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

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

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

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

#### Treasure コンソール を使用してジョブをスケジュールする

1. **Data Workbench > Queries** に移動します
2. 新しいクエリを作成するか、既存のクエリを選択します。
3. **Schedule** の横にある None を選択します。
![](/assets/image2021-1-15_17-28-51.f1b242f6ecc7666a0097fdf37edd1682786ec11ef80eff68c66f091bc405c371.0f87d8d4.png)
4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:
![](/assets/image2021-1-15_17-29-47.45289a1c99256f125f4d887e501e204ed61f02223fde0927af5f425a89ace0c0.0f87d8d4.png)
| ドロップダウン値 | 説明 |
|  --- | --- |
| Custom cron... | [Custom cron... の詳細](#custom-cron-details)を参照してください。 |
| @daily (midnight) | 指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。 |
| @hourly (:00) | 毎時 00 分に実行します。 |
| None | スケジュールなし。 |


#### Custom cron... の詳細

![](/assets/image2021-1-15_17-30-23.0f94a8aa5f75ea03e3fec0c25b0640cd59ee48d1804a83701e5f2372deae466c.0f87d8d4.png)

| **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.


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

div
| フィールド値  | 例  | 例の説明  |
|  --- | --- | --- |
| 各フィールドに対して上記で表示された制限内の単一の値。 |  |  |
| フィールドに基づく制限がないことを示すワイルドカード
`'*'`。 | `'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 を有効にすることで、クエリの開始時刻を遅延させることができます。


## ワークフローでエクスポート結果をオプションで構成する

Treasure ワークフロー内で、このデータコネクターを使用してデータをエクスポートすることを指定できます。


```yaml
timezone: UTC

_export:
  td:
    database: sample_datasets

+td-result-into-target:
  td>: queries/sample.sql
  result_connection: facebook_offline_conversions
  result_settings:
    event_set_id: 361738844830373
    upload_tag: purcharse_event_upload
    match_keys: email,phone,ln,fn
```

ワークフローでデータコネクターを使用してデータをエクスポートする方法の詳細については、[Exporting Data with Parameters](https://docs.treasuredata.com/smart/project-product-documentation/exporting-data-with-parameters)を参照してください。