Skip to main content
For common questions between Single-seller and Multi-seller documentation, refer to the shared documentation.

Campaigns

A Single-Seller campaign (identified by sellerCampaignId) is a per-seller campaign derived from a template campaign configured by Criteo. You do not create it directly via the API. Instead, Criteo automatically creates the campaign when the first valid budget is submitted for a (sellerId, templateCampaignId).After the first budget is accepted, allow for a short asynchronous provisioning delay before impressions begin.
A template campaign is a non-delivering campaign configuration managed by Criteo. It acts as the blueprint used to generate Single-Seller campaigns.The template defines settings such as:
  • optimization goal
  • bidding strategy
  • audiences
  • creatives
  • delivery configuration
Template campaigns cannot be created via the API.
The templateCampaignId is provided to you directly by Criteo when your Single-Seller template is configured. It is not retrievable via a self-serve API endpoint.

Entity

Who creates it

What it does

Campaign

Criteo

Top-level ad configuration; not managed via MPO API

Template campaign (templateCampaignId)

Criteo

Single-Seller blueprint; defines shared settings for all derived seller-campaigns

Seller-campaign (sellerCampaignId)

Created implicitly by Criteo on first budgetPOST

Per-seller delivery campaign; managed via budgets andproductSet

You do not pause seller-campaigns directly. Instead, suspend or resume the associated budget.Pause:
HTTP
PATCH /marketplace-performance-outcomes/budgets
{ "budgetId": "789", "isSuspended": true }
Resume:
HTTP
PATCH /marketplace-performance-outcomes/budgets
{ "budgetId": "789", "isSuspended": false }
If the budget’s endDate is in the past, resuming will not restart delivery. Create a new budget with a future period instead.
Check the suspendedSince and suspensionReasons fields on the seller-campaign. If suspendedSince is null and suspensionReasons is null, the campaign appears active to the API but may still not be delivering. Check that the template campaign is active and the budget meets the minimum per-seller threshold.If suspensionReasons contains a value, refer to the table below:

Reason

Meaning

Action

ManuallyStopped

Budget manually suspended

Resume via budgetPATCH

NoBudgetDefined

No active budget exists

Create a valid budget

NoMoreBudget

Budget fully spent

Create a new budget for a future period

RemovedFromCatalog

All products removed

Restore products in the catalog

NotYetStarted

Newly created, not yet processed

Wait for provisioning

NoMoreDailyBudget

Daily spend limit reached

No action needed; resets the next day

Other

Internal error

Contact Criteo Product or R&D

Other indicates that an internal issue is preventing the campaign from delivering, for example, a click spike prevention mechanism. This is not a client-side configuration error and cannot be resolved through API calls alone. Surface this to your operations team and notify your Criteo Product or R&D contact for investigation.
Yes. Use the productSet feature to attach a whitelist of product IDs (by ExternalItemId) to a seller-campaign:
PATCH /marketplace-performance-outcomes/seller-campaigns
[{
  "id": "SELLER_123.TEMPLATE_CAMPAIGN_456",
  "productSet": {
    "value": [{ "operator": "IsIn", "field": "ExternalItemId", "values": ["SKU_1", "SKU_2"] }]
  }
}]
Notes:
  • productSet is optional; without one, all eligible products from the seller’s catalog are used.
  • A minimum number of product IDs is required per productSet (default: 20). Providing fewer will return a 4xx error.
  • productSet is only supported on Single-Seller campaigns. It cannot be used on multi-seller campaigns.
  • To remove the productSet and revert to all eligible products, set productSet.value to null.

Budgets

Only capped total budgets over a fixed date range are supported. Daily and uncapped budget types are not available in Single-Seller mode.If your use case requires always-on or short-duration delivery, the following patterns are supported as workarounds:Always-on delivery
Schedule a sequence of consecutive, non-overlapping capped budgets — for example, monthly budgets submitted in advance. Each budget covers a fixed period and the next begins where the previous ends.
Short-duration budgets
Submit individual capped budgets for the desired interval (daily, weekly, or monthly). Each must be a separate non-overlapping request for the same (sellerId, templateCampaignId) pair.
Daily pacing is automatic. The system distributes the total budget evenly across the budget period, computing a daily target. Under-delivery or over-delivery on a given day is compensated across the remaining days, as long as the budget period is active.
There is no dedicated endpoint for remaining budget. Calculate it using:
remaining budget = amount − spend
Both amount and spend are available from:
  • GET /marketplace-performance-outcomes/budgets
  • GET /marketplace-performance-outcomes/budgets/{budgetId}
No. For a given (sellerId, templateCampaignId) pair, budget periods must not overlap. Suspended budgets are treated as logically canceled and do not block new budgets for the same dates.
Yes. You can create budgets with future startDate values as long as their date ranges do not overlap with any existing active budgets for the same (sellerId, templateCampaignId) pair.
The minimum budget amount for a given period is:
minimum amount = minimum daily budget per seller (provided by Criteo) × number of days in the period
If the amount is below this threshold, the API will return a 4xx error.

Statistics

Single-Seller performance uses the same stats APIs as multi-seller. Choose the endpoint based on the granularity you need:

Endpoint

Use case

GET /marketplace-performance-outcomes/stats/campaigns

Aggregated across all sellers for a template

GET /marketplace-performance-outcomes/stats/sellers

Per-seller aggregation

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

Per seller-campaign (most granular)

Statistics data defaults to UTC. However, a timezone parameter is available in the Stats API request to retrieve data in a specific time zone.
Statistics are typically available with a latency of a few hours. Refer to the Getting Statistics page for current SLA guidance.
This is expected immediately after the first budget creation. Criteo creates the underlying seller-campaign synchronously when the first budget is accepted, but there is a short asynchronous provisioning delay before delivery begins.If impressions do not appear after a reasonable wait, check:
  • The template campaign is active (not paused or archived).
  • The budget amount meets the minimum per-seller threshold.
  • The budget isSuspended is false.
  • The seller has eligible products in the catalog (no RemovedFromCatalog suspension reason).
  • If a productSet is configured, the product IDs are valid and active in the seller’s catalog.