Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 94 additions & 2 deletions v2.6-rc/docs/creative/brand-manifest.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Brand manifests solve a key problem: how to efficiently identify advertisers and
### Key Benefits

- **Know Your Customer**: Publishers can verify advertisers meet their standards
- **Privacy Transparency**: Link to privacy policy for consumer consent flows
- **Minimal Friction**: Start with just a name or URL, expand as needed
- **Cacheable**: Same brand manifest reused across all requests
- **Standardized**: Consistent format across all AdCP implementations
Expand Down Expand Up @@ -243,6 +244,7 @@ The structure of the brand manifest object itself (whether provided inline or ho
| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Brand or business name |
| `privacy_policy_url` | string (uri) | URL to the brand's privacy policy for consumer consent flows |
| `logos` | Logo[] | Brand logo assets with semantic tags |
| `colors` | Colors | Brand color palette (hex format) |
| `fonts` | Fonts | Brand typography guidelines |
Expand Down Expand Up @@ -325,10 +327,21 @@ The structure of the brand manifest object itself (whether provided inline or ho
```typescript
{
feed_url: string; // URL to product catalog feed
feed_format?: string; // Format of the product feed (default: "google_merchant_center")
feed_format?: string; // Format: "google_merchant_center" | "facebook_catalog" | "openai_product_feed" | "custom"
categories?: string[]; // Product categories available in the catalog
last_updated?: string; // When the product catalog was last updated (ISO 8601)
update_frequency?: string; // How frequently the catalog is updated
agentic_checkout?: AgenticCheckout; // Optional checkout endpoint configuration
}
```

### AgenticCheckout Object

```typescript
{
endpoint: string; // Base URL for checkout session API
spec: string; // Checkout API specification (e.g., "openai_agentic_checkout_v1")
supported_payment_providers?: string[]; // Payment providers (e.g., ["stripe", "adyen"])
}
```

Expand Down Expand Up @@ -459,7 +472,7 @@ Large retailers should provide product feeds:
}
```

**Supported Feed Formats**: RSS, JSON Feed, Product CSV
**Supported Feed Formats**: Google Merchant Center, Facebook Catalog, [OpenAI Product Feed](https://developers.openai.com/commerce/specs/feed), Custom

### 5. Asset Libraries for Enterprise

Expand Down Expand Up @@ -492,6 +505,85 @@ Enterprise brands with large asset libraries should provide explicit assets:
}
```

## Privacy Integration

Brand manifests support privacy transparency through the `privacy_policy_url` field. This enables AI platforms to present explicit privacy choices to users before sharing personal data with advertisers.

### Consumer Consent Flow

When an AI assistant helps a user engage with an advertiser (booking a flight, making a purchase, etc.), the platform can use the brand manifest's privacy policy URL to:

1. **Present explicit consent**: "May I share your details with Delta? [View their privacy policy]"
2. **Enable informed decisions**: Users can review data practices before data handoff
3. **Support machine-readable terms**: Works alongside [MyTerms/IEEE P7012](https://myterms.info) for automated privacy negotiation

### Example with Privacy Policy

```json
{
"$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
"name": "Delta Airlines",
"url": "https://delta.com",
"privacy_policy_url": "https://delta.com/privacy"
}
```

### MyTerms Discovery

For advertisers implementing [IEEE P7012 (MyTerms)](https://myterms.info), AI platforms can discover machine-readable privacy terms from the advertiser's domain (e.g., `/.well-known/myterms`). The brand manifest's `privacy_policy_url` serves as the human-readable fallback and explicit consent path.

## Agentic Commerce Integration

Brand manifests support integration with AI commerce platforms through the `product_catalog` field. This enables AI agents to discover products and complete purchases on behalf of users.

### OpenAI Commerce

For merchants implementing [OpenAI's Commerce specifications](https://developers.openai.com/commerce), the brand manifest provides a bridge:

```json
{
"$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
"name": "Shop Example",
"url": "https://shopexample.com",
"privacy_policy_url": "https://shopexample.com/privacy",
"product_catalog": {
"feed_url": "https://shopexample.com/products.jsonl.gz",
"feed_format": "openai_product_feed",
"update_frequency": "daily",
"agentic_checkout": {
"endpoint": "https://api.shopexample.com/checkout_sessions",
"spec": "openai_agentic_checkout_v1",
"supported_payment_providers": ["stripe", "adyen"]
}
}
}
```

**Key fields for OpenAI Commerce:**

| Field | Description |
|-------|-------------|
| `feed_format: "openai_product_feed"` | Indicates the feed conforms to [OpenAI's Product Feed spec](https://developers.openai.com/commerce/specs/feed) |
| `agentic_checkout.endpoint` | Base URL for [OpenAI's Agentic Checkout API](https://developers.openai.com/commerce/specs/checkout) |
| `agentic_checkout.spec` | Version identifier for the checkout spec |

### Feed Format Mapping

If you have an existing Google Merchant Center feed, here's how key fields map to OpenAI's spec:

| OpenAI Field | Google Merchant Center | Notes |
|--------------|----------------------|-------|
| `item_id` | `id` | Direct mapping |
| `title` | `title` | Direct mapping |
| `description` | `description` | Direct mapping |
| `url` | `link` | Direct mapping |
| `brand` | `brand` | Direct mapping |
| `price` | `price` | OpenAI uses number + currency code |
| `availability` | `availability` | Same enum values |
| `image_url` | `image_link` | Direct mapping |
| `is_eligible_search` | N/A | OpenAI-specific flag |
| `is_eligible_checkout` | N/A | OpenAI-specific flag |

## Evolution and Versioning

Brand cards are versioned using the `metadata.version` field:
Expand Down
Loading