Skip to main content

アカウント状態

AdCP のアカウントはステートフルなコンテナです。バイヤーがセラーのプラットフォームでキャンペーンを実行する前に、アカウントに状態を構築します: プロダクトカタログ、クリエイティブアセット、オーディエンスリスト、コンバージョントラッキング。各状態には独自の同期タスク、独自の承認ワークフロー、独自のライフサイクルがあります。 これは AdCP の以前のバージョンとは異なります。以前はアカウントが請求の参照であり、ほとんどの操作がステートレスでしました。AdCP 3.0 では、アカウントがすべてを結びつける中心的なオブジェクトです。

状態ドメイン

アカウントは6つのカテゴリの状態を保持し、それぞれが専用のタスクで管理されます:
ドメイン同期タスク管理対象ライフサイクル
アイデンティティsync_accountsバイヤーが誰か、どのブランド、請求条件一度セットアップ、まれに更新
カタログsync_catalogsプロダクトフィード、インベントリ、ストア、プロモーション、オファリング継続的 — フィードは毎時/毎日更新
クリエイティブsync_creativesフォーマット固有のマニフェストを持つクリエイティブアセットキャンペーンごと、必要に応じて更新
オーディエンスsync_audiencesファーストパーティ CRM オーディエンスリスト増分 — メンバーを時間とともに追加/削除
イベントソースsync_event_sourcesコンバージョントラッキング設定(ピクセル、S2S、アプリイベント)ソースごとに一度セットアップ、まれに変更
キャンペーンcreate_media_buyパッケージとターゲティングを持つアクティブキャンペーン準備できたら作成、フライト中に更新
各同期タスクは同じパターンに従います:
  • アップサートセマンティクス — アイテムは ID でマッチされ、新しければ作成、存在すれば更新
  • ディスカバリーモード — アイテム配列を省略してアカウントに既存のものを確認
  • 非同期承認 — プラットフォームはアクティベート前にアイテムをレビューすることがあります
  • アイテムごとのステータス — 個別アイテムは独立して成功または失敗できます

セットアップシーケンス

典型的なバイイングワークフローは依存関係の順でアカウント状態を構築します。各ステップは前のステップが完了していることが必要です:

1. アカウントを確立します

sync_accounts はバイヤーが誰で、どのように支払うかを宣言します。セラーは関係を認め、ステータスと請求条件を返します。
{
  "accounts": [{
    "brand": { "domain": "acme-corp.com" },
    "operator": "pinnacle-media.com",
    "billing": "operator"
  }]
}

2. カタログを同期します

sync_catalogs はプロダクトデータをアカウントで利用可能にします。フォーマットは assets 配列の catalog アセットタイプを通じて必要なカタログタイプを宣言するため、バイヤーはクリエイティブを送信する前に適切なフィードを同期します。
{
  "account": { "account_id": "acct_001" },
  "catalogs": [
    {
      "catalog_id": "product-feed",
      "type": "product",
      "url": "https://feeds.acme.com/products.xml",
      "feed_format": "google_merchant_center",
      "update_frequency": "daily"
    },
    {
      "catalog_id": "store-locations",
      "type": "store",
      "url": "https://feeds.acme.com/stores.json",
      "feed_format": "custom",
      "update_frequency": "weekly"
    }
  ]
}
プラットフォームは各フィードを取得して検証します。アイテムは承認、拒否、または警告付きでフラグされることがあります — Google Merchant Center がプロダクトリスティングをレビューするのに似ています。

3. イベントソースを設定します

sync_event_sources はコンバージョントラッキングを設定して、プラットフォームが広告露出に結果を帰属させられるようにします。
{
  "account": { "account_id": "acct_001" },
  "event_sources": [{
    "event_source_id": "web-pixel",
    "name": "Website Conversions",
    "type": "pixel",
    "events": ["purchase", "add_to_cart", "lead"]
  }]
}

4. クリエイティブを同期します

sync_creatives は、ステップ 2 で同期されたカタログを参照するクリエイティブアセットを送信します。カタログ駆動フォーマットの場合、クリエイティブの catalogs フィールドはアイテムをインラインで埋め込む代わりに、catalog_id で同期されたカタログを参照します。
{
  "account": { "account_id": "acct_001" },
  "creatives": [{
    "creative_id": "product-carousel",
    "format_id": {
      "agent_url": "https://creative.retailer.com/adcp",
      "id": "product_carousel_with_inventory"
    },
    "catalogs": [{
      "catalog_id": "product-feed",
      "type": "product",
      "tags": ["summer"]
    }],
    "assets": {
      "banner_image": {
        "url": "https://cdn.acmecorp.com/carousel-hero.jpg",
        "width": 1200,
        "height": 628
      }
    }
  }]
}

5. オーディエンスをアップロードします

sync_audiences はターゲティング用のファーストパーティオーディエンスリストをアップロードします。送信前にメンバーはハッシュ化されます。
{
  "account": { "account_id": "acct_001" },
  "audiences": [{
    "audience_id": "high-value-customers",
    "name": "High Value Customers",
    "add": [
      { "hashed_email": "a1b2c3..." },
      { "hashed_email": "d4e5f6..." }
    ]
  }]
}

6. キャンペーンを作成します

すべての状態が整ったら、create_media_buy が同期された状態を参照するキャンペーンを活性化します:
{
  "account": { "account_id": "acct_001" },
  "name": "Summer Product Launch",
  "packages": [{
    "product_id": "sponsored-products",
    "creative_ids": ["product-carousel"],
    "targeting_overlay": {
      "audiences": { "include": ["high-value-customers"] }
    }
  }]
}

ディスカバリー

すべての同期タスクはディスカバリーモードをサポートします: アイテム配列なしでタスクを呼び出して、アカウントに既存の状態を確認します。これはバイイングエージェントがセラーがブランドについて既に知っていることを学ぶ方法です。
// このアカウントにはどんなカタログがあるか?
{ "account": { "account_id": "acct_001" } }

// レスポンス: アカウントに既存のカタログ
{
  "catalogs": [
    { "catalog_id": "product-feed", "action": "unchanged", "item_count": 1250 },
    { "catalog_id": "store-locations", "action": "unchanged", "item_count": 45 }
  ]
}
これが重要な理由: セラーはすでに他のソースからブランドデータを持っている可能性があります — 小売業者はコマースプラットフォームからブランドのプロダクトカタログを持っているかもしれないし、パブリッシャーは以前のキャンペーンからクリエイティブを持っているかもしれません。ディスカバリーにより、バイヤーはすべてを再アップロードするのではなく、既存の状態の上に構築できます。

承認ワークフロー

同期タスクは多くの場合非同期です。プラットフォームはアイテムをアクティブにする前にレビューする必要がある場合があります:
  • カタログ: プロダクトリスティングはコンテンツポリシーチェックを経ます。アイテムは承認、拒否、または警告付きでフラグされることがあります。
  • クリエイティブ: 生成クリエイティブは人間の承認が必要です。従来のクリエイティブはポリシーレビューが必要な場合があります。
  • オーディエンス: プラットフォームはハッシュ化された識別子をユーザーベースと照合する時間が必要です。
  • イベントソース: コンバージョントラッキングはピクセル検証が必要な場合があります。
すべての同期タスクは処理完了時のウェブフックコールバック用に push_notification_config をサポートします。長時間実行する操作の場合、プラットフォームは非同期ステータス更新(working、input-required、submitted)を返し、バイヤーがポーリングするかウェブフックで受け取ります。

状態の依存関係

一部の状態は他の状態に依存します。プラットフォームはこれらの依存関係を強制します:
  • クリエイティブはカタログを参照するcatalog_id: "product-feed" を使用するクリエイティブは、そのカタログが最初に同期されていることが必要
  • キャンペーンはクリエイティブとオーディエンスを参照するcreate_media_buy は参照された creative_ids とオーディエンス ID がアカウントに存在することが必要
  • イベントソースは最適化を可能にする — パッケージの最適化ゴールはアトリビューション用にイベントソースを参照します
依存関係が欠けている場合、プラットフォームは最初に何を同期する必要があるかを説明するエラーを返します。

ステートレス vs ステートフル操作

すべてのものがアカウント状態を必要とするわけではありません。一部のタスクはステートレスクエリです:
ステートレス(アカウント不要)ステートフル(アカウント必要)
get_products — インベントリを発見create_media_buy — インベントリを購入
list_creative_formats — フォーマットを発見sync_creatives — クリエイティブをアップロード
get_signals — シグナルを発見activate_signal — シグナルを活性化
get_adcp_capabilities — 機能を発見sync_catalogs — カタログをアップロード
パターン: 発見はステートレス、実行はステートフル。アカウントなしでセラーのインベントリを閲覧できます。購入するにはアカウントが必要です。

関連ドキュメント