> ## Documentation Index
> Fetch the complete documentation index at: https://developers.criteo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaigns- Concept Guide

## Introduction

Multi-Seller campaigns are the original Marketplace Performance Outcomes (MPO) model. They allow many marketplace sellers to share a single campaign configuration and participate in a pooled optimisation strategy.

### Key characteristics

* A single campaign serves many sellers.
* Targeting, optimisation goal, and bidding strategy are shared.
* Budget is primarily managed at the campaign level for each active seller.

You control:

* Which sellers participate.
* How aggressively they bid.
* How much budget each seller can consume.

### What you can do with the MPO API

* Discover and manage marketplace sellers.
* Link sellers to Multi-Seller campaigns.
* Control participation via CPC bids and budgets.
* Monitor performance at campaign and seller level.

### Audience

* Marketplace integrators.
* Technical leads / architects.
* Developers needing a conceptual understanding before API implementation.

## Core Entities and Identifiers

### Overview

<table>
  <thead>
    <tr>
      <th>
        <p>
          Entity
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Advertiser
        </p>
      </td>

      <td>
        <p>
          Marketplace business entity
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Campaign (

          <code>
            \{\{campaignId}}
          </code>

          )
        </p>
      </td>

      <td>
        <p>
          Shared campaign configuration
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Seller (

          <code>
            \{\{sellerId}}
          </code>

          )
        </p>
      </td>

      <td>
        <p>
          Marketplace merchant
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Seller-Campaign (

          <code>
            \{\{sellerCampaignId}}
          </code>

          )
        </p>
      </td>

      <td>
        <p>
          Seller participation in a campaign
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Budgets
        </p>
      </td>

      <td>
        <p>
          Campaign-level and seller-level spend controls
        </p>
      </td>
    </tr>
  </tbody>
</table>

### Advertiser

* Represents your marketplace in Criteo.
* Hosts one or more MPO campaigns.
* Retrieved via Marketing Solutions APIs.

### Multi-Seller Campaign (`{{campaignId}}`)

Shared campaign across multiple sellers, configured by Criteo (not via MPO API).

Defines:

* Optimisation goal (traffic, conversions, revenue).
* Bidding strategy (typically CPC).
* Targeting and audiences.
* Creative formats and placements.

Does:

* Spend campaign-level budgets.
* Serve ads with products from multiple sellers.

Does **not**:

* Represent a single seller.
* Store seller-specific bids or budgets.

### Seller (`{{sellerId}}` / `{{sellerName}}`)

* Represents a merchant in your marketplace.

`sellerName`:

* Comes from your catalog (e.g. `seller_id`).
* Case-sensitive.

`sellerId`:

* Internal MPO identifier.
* Retrieve via:

```http HTTP theme={null}
GET /marketplace-performance-outcomes/sellers?sellerName={{yourSellerIdentifier}}
```

<Info>
  Use consistent `sellerName` values to avoid duplicate sellers.
</Info>

### Seller-Campaign (`{{sellerCampaignId}}`)

Represents the relationship between a seller and a campaign.

* Links: (`{{sellerId}}`, `{{campaignId}}`)
* Automatically created by MPO (one per seller per MPO campaign); you then configure its CPC bid via the MPO API.

Defines:

* CPC bid
* Participation state

Initially, a seller-campaign may be suspended (for example, `NoBudgetDefined`) until you set bids and budgets.

**Example ID:**

```text theme={null}
SELLER_123.CAMPAIGN_456
```

## Budgets

<table>
  <thead>
    <tr>
      <th>
        <p>
          Type
        </p>
      </th>

      <th>
        <p>
          Description
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Campaign-level
        </p>
      </td>

      <td>
        <p>
          Shared across all sellers
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Seller-level
        </p>
      </td>

      <td>
        <p>
          Optional per seller-campaign
        </p>
      </td>
    </tr>
  </tbody>
</table>

### Campaign-Level Budgets

* Managed via Criteo or general APIs.
* Global cap for campaign spend.
* Should be set high enough to cover (or be higher than) the sum of active seller-level budgets; otherwise you may see under-delivery even when per-seller budgets remain.

### Seller-Level Budgets

* Managed via MPO API:

```http HTTP theme={null}
POST /marketplace-performance-outcomes/budgets
GET  /marketplace-performance-outcomes/budgets
```

Use cases:

* Cap seller spend.
* Schedule campaigns.
* Apply different strategies per seller.

## Access and Enablement

### Requirements

* MPO enabled for your advertiser.
* At least one Multi-Seller campaign exists.
* API permissions configured with **Manage Campaign** permissions.

### Potential issues

* Authorization errors.
* Validation errors.

## Campaign Setup Flow

1. **Request setup**\
   Provide:
   * Advertiser details.
   * Business goals.
   * Seller distribution.

2. **Criteo configuration**
   * Campaign structure.
   * Targeting and creatives.
   * MPO features.

3. **Receive configuration**
   * `campaignId`.
   * Constraints (budgets, CPC ranges, geos).

## Prerequisites

Ensure you have:

* Product catalog with a seller field.
* OAuth2 authentication.
* Required API scopes.

Endpoints:

```http theme={null}
/marketplace-performance-outcomes/sellers
/marketplace-performance-outcomes/seller-campaigns
/marketplace-performance-outcomes/budgets
/marketplace-performance-outcomes/stats/...
```

## Budget Management

### Overview

<table>
  <thead>
    <tr>
      <th>
        <p>
          Component
        </p>
      </th>

      <th>
        <p>
          Role
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          Campaign Budget
        </p>
      </td>

      <td>
        <p>
          Total available spend
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          CPC Bids
        </p>
      </td>

      <td>
        <p>
          Seller competitiveness
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Seller Budgets
        </p>
      </td>

      <td>
        <p>
          Optional caps per seller
        </p>
      </td>
    </tr>
  </tbody>
</table>

### Campaign Budgets

* Global spend limit.
* Must be large enough to support sellers.

### Seller-Campaign Bids (CPC)

* Higher CPC > more exposure.
* Lower CPC > reduced spend.
* `IsSuspended = true/false` controls participation alongside CPC.

### Seller-Level Budgets

* Cap or schedule seller spend.
* Associated with a seller-campaign.

**Behaviour:**

* May reset daily.
* May have start/end dates.
* Can stop delivery when exhausted.

## Product & Creative Behavior

* Shared dynamic ads across sellers.
* Products from multiple sellers can appear together.

Key points:

* No per-seller `productSet` (Single-Seller only).
* Products are only eligible when the seller is active (positive CPC and available budget). Campaign targeting (geo, device, audiences) still applies on top, but is not the main factor determining basic product eligibility.

## Typical Workflows

### 1. Onboard Sellers

**Steps:**

1. Confirm ingestion:

```http HTTP theme={null}
GET /marketplace-performance-outcomes/sellers?sellerName={{seller}}
```

2. Confirm campaign:
   * Valid `campaignId`.
   * Budget configured.
3. Create seller-campaign.
4. Set CPC.
5. Add seller budgets (optional).

### 2. Adjust Spend per Seller

* Retrieve current setup.
* Choose control method:
  * **CPC** → performance tuning.
  * **Budget** → hard cap.

**Actions:**

* Increase CPC → scale.
* Decrease CPC → reduce.

### 3. Suspend / Resume Seller

**Suspend:**

* `IsSuspended = true` on the relevant budget and/or
* Budget inactive.

**Resume:**

* `IsSuspended = false` on the associated budget.
* Ensure budgets are active.

### 4. Monitor & Troubleshoot

**Common checks**

<table>
  <thead>
    <tr>
      <th>
        <p>
          Issue
        </p>
      </th>

      <th>
        <p>
          Check
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <p>
          No delivery
        </p>
      </td>

      <td>
        <p>
          Seller exists, CPC > 0, budgets active
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Low delivery
        </p>
      </td>

      <td>
        <p>
          CPC too low, budget limited
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Under-spend
        </p>
      </td>

      <td>
        <p>
          Campaign budget too small
        </p>
      </td>
    </tr>

    <tr>
      <td>
        <p>
          Over-spend
        </p>
      </td>

      <td>
        <p>
          Budget configuration / reset behaviour
        </p>
      </td>
    </tr>
  </tbody>
</table>

### Application permissions

For **multi-seller MPO** integrations, your application needs at least the **Campaign – Manage** permission on the relevant advertiser accounts.
