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
campaignIdin budget calls.
- This is often referred to as
- 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
productSetfor this seller:- The seller has at least ~20 in-stock products mapped correctly in the catalog.
- This helps avoid under-delivery and
productSetvalidation errors.
Catalog and sellers
- Your product catalog is integrated and includes
sellerNameon relevant products. - The MPO Sellers endpoints return sellers:
- You can call
/marketplace-performance-outcomes/sellersand see your sellers. - Each seller you want to onboard to Single-Seller has a corresponding
sellerId.
- You can call
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):
advertiserIdtemplateCampaignId(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
sellerIdUse 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"
}
]idis thesellerIdto use in later calls.- Store
sellerIdin 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/jsonRequest body
{
"campaignIds": ["456"],
"sellerId": "123",
"startDate": "2026-04-16",
"endDate": "2026-04-30",
"budgetType": "Capped",
"amount": "1200"
}
]Guidelines:
campaignIdsmust contain exactly one ID: your Single-SellertemplateCampaignId.amountmust be more: the per-seller minimum by the number of days.startDateandendDate:- Must form a valid range (
startDate <= endDate). - Must not overlap any other budget for the same (
sellerId,templateCampaignId).
- Must form a valid range (
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:
budgetIdfor future updates and troubleshooting.- Mapping between
sellerId,templateCampaignId, and budget(s).
Step 3 – Restrict products with productSet (Optional)
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/jsonSample response (fragment):
[
{
"id": "SELLER_123.TEMPLATE_CAMPAIGN_456",
"sellerId": "123",
"campaignId": "456",
"productSet": null
}
]idis the seller-campaign identifier you’ll use when updatingproductSet.
Attach a productSet
productSetEndpoint
PATCH https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/seller-campaigns
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
Accept: application/jsonExample 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
productSetif none exists. - Replaces the existing rule if one exists.
- Only products with
ExternalItemIdinvaluesare eligible.
Constraints:
operator:IsInorIsNotIn.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/jsonGet a specific budget
Endpoint
GET https://api.criteo.com/{version}/marketing-solutions/marketplace-performance-outcomes/budgets/{budgetId}
Authorization: Bearer <ACCESS_TOKEN>
Accept: application/jsonCheck:
- Dates and
amountmatch expectations. isSuspendedisfalsefor 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-campaignsCombine:
sellerIdtemplateCampaignIdsellerCampaignId
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
productSetper seller.
Adjust spend mid-flight:
PATCHbudgets to changeamountorendDate.- Always avoid overlapping periods.
Pause or resume a seller:
- Pause: set
isSuspended = trueon the active budget. - Resume: set
isSuspended = falseon a valid active/future budget.
For more details, refer to:
Updated about 22 hours ago