Documentation Index
Fetch the complete documentation index at: https://adcp-docs-ja.pier1.co.jp/llms.txt
Use this file to discover all available pages before exploring further.
コンバージョントラッキングのためにセラーアカウントにイベントソースを設定します。アップサートセマンティクス、セラー管理ソース、セットアップ手順をサポートします。
レスポンス時間: 約1秒(同期設定)
リクエストスキーマ: /schemas/v3/media-buy/sync-event-sources-request.json
レスポンススキーマ: /schemas/v3/media-buy/sync-event-sources-response.json
クイックスタート
購入トラッキング用のイベントソースを設定します:
import { testAgent } from "@adcp/client/testing";
import { SyncEventSourcesResponseSchema } from "@adcp/client";
const result = await testAgent.syncEventSources({
account: { account_id: "acct_12345" },
event_sources: [
{
event_source_id: "website_pixel",
name: "Main Website Pixel",
event_types: ["purchase", "lead", "add_to_cart"],
allowed_domains: ["www.example.com", "shop.example.com"],
},
],
});
if (!result.success) {
throw new Error(`Request failed: ${result.error}`);
}
// レスポンスをスキーマに対して検証する
const validated = SyncEventSourcesResponseSchema.parse(result.data);
// まず操作レベルのエラーを確認する(判別共用体)
if ("errors" in validated && validated.errors) {
throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`);
}
if ("event_sources" in validated) {
for (const source of validated.event_sources) {
console.log(`${source.event_source_id}: ${source.action}`);
if (source.setup?.snippet) {
console.log(` Install: ${source.setup.snippet_type}`);
}
}
}
リクエストパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|
account | account-ref | はい | アカウント参照。{ "account_id": "..." } を渡すか、セラーが暗黙的な解決をサポートしている場合は { "brand": {...}, "operator": "..." } を渡します。 |
event_sources | EventSource[] | いいえ | 同期するイベントソース。省略した場合、呼び出しはディスカバリーのみとなり、変更なしに既存のすべてのイベントソースを返します。 |
delete_missing | boolean | いいえ | true の場合、このリクエストに含まれていないアカウント上のバイヤー管理イベントソースが削除されます(デフォルト: false)。 |
イベントソースオブジェクト
| フィールド | 型 | 必須 | 説明 |
|---|
event_source_id | string | はい | このイベントソースの一意の識別子 |
name | string | いいえ | 人が読める名前 |
event_types | EventType[] | いいえ | このソースが処理するイベントタイプ。省略した場合、すべてのイベントタイプを受け入れる。 |
allowed_domains | string[] | いいえ | このソースへのイベント送信が許可されたドメイン |
レスポンス
成功レスポンス:
event_sources - 同期済みのソースとアカウント上のセラー管理ソースの両方を含む、各イベントソースの結果
エラーレスポンス:
errors - 操作レベルのエラーの配列(認証失敗、アカウントが見つからないなど)
注意: レスポンスは判別共用体を使用しており、成功フィールドまたはエラーのいずれかが返され、両方が同時に返されることはない。
成功レスポンス内の各イベントソースには以下が含まれます:
- すべてのリクエストフィールド
seller_id - このイベントソースのセラー割り当て識別子
action - 実行された操作: created、updated、unchanged、deleted、failed
action_source - イベントソースの種別(ウェブサイトピクセル、アプリ SDK など)
managed_by - このソースの管理者: buyer または seller
setup - 実装の詳細(スニペット、手順)
errors - ソースごとのエラー(action: "failed" の場合のみ)
完全なフィールド一覧はスキーマを参照: sync-event-sources-response.json
よくある使用例
ディスカバリーのみ
変更を加えずにアカウント上のすべてのイベントソース(セラー管理ソースを含む)を検出します。セラーが常時オンのアトリビューションを提供するプラットフォーム管理のコンバージョントラッキングに便利:
import { testAgent } from "@adcp/client/testing";
import { SyncEventSourcesResponseSchema } from "@adcp/client";
const result = await testAgent.syncEventSources({
account: { account_id: "acct_12345" },
});
if (!result.success) {
throw new Error(`Request failed: ${result.error}`);
}
const validated = SyncEventSourcesResponseSchema.parse(result.data);
if ("errors" in validated && validated.errors) {
throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`);
}
if ("event_sources" in validated) {
for (const source of validated.event_sources) {
console.log(`${source.event_source_id} (${source.managed_by}): ${source.name}`);
}
}
複数のイベントソース
ウェブサイトとアプリ用に個別のソースを設定します:
import { testAgent } from "@adcp/client/testing";
import { SyncEventSourcesResponseSchema } from "@adcp/client";
const result = await testAgent.syncEventSources({
account: { account_id: "acct_12345" },
event_sources: [
{
event_source_id: "web_pixel",
name: "Website Pixel",
event_types: ["purchase", "lead", "add_to_cart", "view_content"],
allowed_domains: ["www.example.com"],
},
{
event_source_id: "app_sdk",
name: "Mobile App SDK",
event_types: ["purchase", "app_install", "app_launch"],
},
],
});
if (!result.success) {
throw new Error(`Request failed: ${result.error}`);
}
const validated = SyncEventSourcesResponseSchema.parse(result.data);
if ("errors" in validated && validated.errors) {
throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`);
}
if ("event_sources" in validated) {
for (const source of validated.event_sources) {
console.log(`${source.event_source_id} (${source.managed_by}): ${source.action}`);
}
}
セラー管理ソースの検出
セラーは常時オンのイベントソース(例: Amazon 売上アトリビューション)を提供する場合があります。これらはバイヤー管理ソースと並んで managed_by: "seller" としてレスポンスに表示されます:
{
"event_sources": [
{
"event_source_id": "web_pixel",
"name": "Website Pixel",
"seller_id": "px_abc123",
"action": "created",
"managed_by": "buyer",
"setup": {
"snippet": "<script src=\"https://seller.example/pixel/px_abc123.js\"></script>",
"snippet_type": "javascript",
"instructions": "Place this tag in the <head> of all pages where you want to track events."
}
},
{
"event_source_id": "seller_sales_attribution",
"name": "Sales Attribution",
"seller_id": "internal_attr",
"action": "unchanged",
"managed_by": "seller",
"action_source": "in_store"
}
]
}
conversion_tracking.platform_managed: true を持つプロダクトは、セラーがこれらのソースを提供していることを示しています。
delete_missing によるクリーン同期
アカウント上のすべてのバイヤー管理イベントソースを置き換える:
import { testAgent } from "@adcp/client/testing";
import { SyncEventSourcesResponseSchema } from "@adcp/client";
const result = await testAgent.syncEventSources({
account: { account_id: "acct_12345" },
delete_missing: true,
event_sources: [
{
event_source_id: "unified_pixel",
name: "Unified Tracking Pixel",
},
],
});
if (!result.success) {
throw new Error(`Request failed: ${result.error}`);
}
const validated = SyncEventSourcesResponseSchema.parse(result.data);
if ("errors" in validated && validated.errors) {
throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`);
}
if ("event_sources" in validated) {
for (const source of validated.event_sources) {
if (source.action === "deleted") {
console.log(`Removed: ${source.event_source_id}`);
} else {
console.log(`Active: ${source.event_source_id} (${source.action})`);
}
}
}
セットアップ手順
レスポンスには各イベントソースのセットアップ詳細が含まれます。setup オブジェクトはソースのアクティベート方法を示しています:
snippet_type | 説明 | 必要なアクション |
|---|
javascript | ウェブサイトページ用の JavaScript タグ | トラッキング対象ページの <head> 内に配置する |
html | HTML ピクセル / iframe | </body> の直前に配置する |
pixel_url | イベント発生時に呼び出す URL | 各イベント時に GET リクエストを送信する |
server_only | クライアントサイドのタグ不要 | log_event API を直接使用する |
エラーハンドリング
| エラーコード | 説明 | 対処方法 |
|---|
ACCOUNT_NOT_FOUND | アカウントが存在しない | アカウント設定の account_id を確認する |
INVALID_EVENT_TYPE | 認識できないイベントタイプ | get_adcp_capabilities でセラーの supported_event_types を確認する |
DUPLICATE_EVENT_SOURCE_ID | リクエスト内に同じ ID を持つ複数のソースがある | 一意の event_source_id 値を使用する |
RATE_LIMITED | 同期リクエストが多すぎる | 指数バックオフで待機してリトライする |
ベストプラクティス
-
ログ送信前に同期する —
log_event でイベントを送信する前に、必ずイベントソースを設定しなければなりません。未設定のソースへのイベント送信は拒否されます。
-
わかりやすい ID を使用する — 不明瞭な識別子ではなく、意味のある
event_source_id 値(例: web_pixel、app_sdk、crm_import)を選ぶべきです。
-
event_types を指定する — より良いバリデーションとデバッグのために、各ソースを関連するイベントタイプに限定すべきです。
-
セラーの機能を確認する — イベントソースを設定する前に、
get_adcp_capabilities を使用してサポートされているイベントタイプ、UID タイプ、アクションソースを確認すべきです。
-
セットアップスニペットをインストールする — レスポンスに
setup 手順が含まれている場合、イベントをログに記録する前に提供されたスニペットをインストールしなければなりません。サーバーオンリーソース(snippet_type: "server_only")はこの手順をスキップしてよいです。
-
セラー管理ソースを処理する — レスポンスには自分が設定していない
managed_by: "seller" のソースが含まれる場合があります。これらは常時オンであり、追加のアトリビューションデータを提供します。
次のステップ