Quick Start – Launch a Single-Seller Campaign via MPO

What you’ll accomplish

In this recipe, you will:

  • Take a single seller from having no Single-Seller campaign to having a live, dedicated Single-Seller campaign.
  • Create the first Single-Seller budget, which:
    • Automatically creates the per-seller campaign for that seller and template (if it doesn’t exist yet).
    • Controls how much that seller can spend and over which dates.
  • Restrict products for that seller’s campaign using productSet (this is optional).
  • Verify the setup using both:
    • Budgets endpoints, to confirm configuration.
    • Statistics endpoints, to confirm the seller is delivering.

This recipe assumes you already understand the high-level concepts in the
Single-Seller Campaigns – Concept Guide.

Who this recipe is for

This flow is intended for sellers who are a good fit for Single-Seller, typically:

  • Top or strategic sellers who can meet the minimum Single-Seller budgets, and
  • Sellers with enough eligible products in their catalog to support stable delivery.

Very small or long-tail sellers with very low daily budgets are usually better handled via Multi-Seller campaigns, not Single-Seller.

Prerequisites

Before you start, make sure all of the following are true.

Feature enablement

API access

Marketplace Performance Outcomes uses the same Marketing Solutions Performance Media / Campaign endpoints as your other campaigns – there is no separate “MPO API” to activate.

To call /marketplace-performance-outcomes, your application must:

  • Be onboarded to Marketing Solutions with the Campaign domain in its scope.
  • Have the Campaign Manage permission, as described in the onboarding checklist.

Single-Seller feature enablement

Single-Seller campaigns must be enabled on your account. Confirm with your Criteo representative that:

  • Your advertiser is allowed to use Single-Seller.
  • At least one Single-Seller template campaign exists for you.

If Single-Seller is not enabled, the calls in this recipe may return authorization or validation errors.

Template configuration

  • You have a Single-Seller template campaign ID from Criteo:
    • This is often referred to as templateCampaignId.
    • You must use this ID as campaignId in budget calls.
  • You know the minimum per-seller budget for this template:
    • For example: a minimum total budget per period, or a minimum “equivalent daily” spend.

Seller eligibility

Single-Seller is designed for sellers who can sustain meaningful, continuous delivery. Before using this recipe for a seller, check that:

  • The seller can meet the minimum daily budget guidelines for Single-Seller. As a rule of thumb:
    • Recommended: around US$20/day for ROAS/sales goals, or US$10/day for click goals.
    • Hard minimums: US$10/day (ROAS/sales) and US$5/day (click).
  • The seller is not a pure long-tail seller with very small or sporadic budgets.
    • Long-tail sellers are usually better suited to Multi-Seller pooled campaigns.
  • If you plan to use productSet for this seller:
    • The seller has at least ~20 in-stock products mapped correctly in the catalog.
    • This helps avoid under-delivery and productSet validation errors.

Catalog and sellers

  • Your product catalog is integrated and includes sellerName on relevant products.
  • The MPO Sellers endpoints return sellers:
    • You can call /marketplace-performance-outcomes/sellers and see your sellers.
    • Each seller you want to onboard to Single-Seller has a corresponding sellerId.

API access & permissions

You have valid OAuth 2.0 client credentials and can obtain a Bearer token.

Your OAuth token must include the following permissions for the advertiser portfolios used in this recipe:

  • Campaigns: Read
  • Campaigns: Manage

With these permissions, your app can read the required entities (including sellers), create and update budgets, and call the reporting endpoints used in this workflow.

You will need (for this recipe):

  • advertiserId
  • templateCampaignId (Single-Seller template campaign ID)
  • sellerId (you will retrieve this in Step 1)
  • Minimum per-seller budget for this template (from Criteo)

Estimated time: ~30–60 minutes if all of the above are ready.

Step 1 – Get the sellerId

Use the MPO Sellers endpoint to find the internal sellerId for the seller.

Example (filter by sellerName):

Endpoint

GET  https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/sellers?sellerName={YourSellerName}
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/json

Sample response (simplified):

[
{
"id": "123",
"sellerName": "YourSellerName"
}
]
  • id is the sellerId to use in later calls.
  • Store sellerId in your own system.

Step 2 – Create the first Single-Seller budget

The first valid budget for (sellerId, templateCampaignId):

  • Creates the underlying Single-Seller campaign (if it doesn’t exist).
  • Defines how much the seller can spend and over which period.

Build the budget request

Endpoint

POST  https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/budgets
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
Accept: application/json

Request body


{
"campaignIds": ["456"],
"sellerId": "123",
"startDate": "2026-04-16",
"endDate": "2026-04-30",
"budgetType": "Capped",
"amount": "1200"
}
]

Guidelines:

  • campaignIds must contain exactly one ID: your Single-Seller templateCampaignId.
  • amount must be more: the per-seller minimum by the number of days.
  • startDate and endDate:
    • Must form a valid range (startDate <= endDate).
    • Must not overlap any other budget for the same (sellerId, templateCampaignId).

Interpret the response

A successful response returns:

  • A generated budgetId.
  • The budget fields (dates, amount, isSuspended, status).

Once accepted:

  • Criteo creates the Single-Seller campaign for (sellerId, templateCampaignId) if needed.
  • Expect a short provisioning delay before impressions appear.

Store:

  • budgetId for future updates and troubleshooting.
  • Mapping between sellerId, templateCampaignId, and budget(s).

Step 3 – Restrict products with productSet (Optional)

If you want this seller’s campaign to only advertise specific SKUs, attach a productSet.

Get the seller-campaign ID

Endpoint

GET  https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/seller-campaigns?sellerId=123&campaignId=456
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/json

Sample response (fragment):

[
{
"id": "SELLER_123.TEMPLATE_CAMPAIGN_456",
"sellerId": "123",
"campaignId": "456",
"productSet": null
}
]
  • id is the seller-campaign identifier you’ll use when updating productSet.

Attach a productSet

Endpoint

PATCH  https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/seller-campaigns
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
Accept: application/json

Example request body

[
{
"id": "SELLER_123.TEMPLATE_CAMPAIGN_456",
"productSet": {
"value": [
{
"operator": "IsIn",
"field": "ExternalItemId",
"values": [
"SKU_001",
"SKU_002",
"SKU_003",
"SKU_004"
]
}
]
}
}
]

Behavior:

  • Creates a productSet if none exists.
  • Replaces the existing rule if one exists.
  • Only products with ExternalItemId in values are eligible.

Constraints:

  • operator: IsIn or IsNotIn.
  • field: ExternalItemId.
  • Advertiser-specific minimum number of product IDs may apply.

Remove the filter later

Request body

{
"productSet": {
"value": null
}
}

Step 4 – Verify budgets and monitor performance

List budgets for this seller/template

Endpoint

GET  https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/budgets?sellerId=123&campaignId=456
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/json

Get a specific budget

Endpoint

GET  https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/budgets/{budgetId}
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/json

Check:

  • Dates and amount match expectations.
  • isSuspended is false for active budgets.
  • No overlapping periods for the same (sellerId, templateCampaignId).

Monitor performance

Use stats endpoints such as:

GET /marketplace-performance-outcomes/stats/campaigns
GET /marketplace-performance-outcomes/stats/sellers
GET /marketplace-performance-outcomes/stats/seller-campaigns

Combine:

  • sellerId
  • templateCampaignId
  • sellerCampaignId

to build dashboards and automated checks.

Step 5 – Common next actions

Scale to more sellers:

  • Repeat Steps 1–2 for each new seller.
  • Optionally configure productSet per seller.

Adjust spend mid-flight:

  • PATCH budgets to change amount or endDate.
  • Always avoid overlapping periods.

Pause or resume a seller:

  • Pause: set isSuspended = true on the active budget.
  • Resume: set isSuspended = false on a valid active/future budget.

For more details, refer to: