Overview
The MPO Standard Reporting API provides aggregated performance statistics for Marketplace Performance Outcomes (MPO) across both:- Multi-Seller campaigns
- Single-Seller campaigns
They are typically used for:
- Marketplace BI dashboards and data warehouses
- Scheduled exports and reporting pipelines
- Seller-facing performance reports
When to Use Standard vs. Real-Time Stats
Use the Standard Reporting API when you need:- Aggregated metrics over longer time ranges (for example, last 30 days, last quarter)
- Stable, post-processed data suitable for billing, margin analysis, and long-term trends
- Scheduled batch exports into your own reporting stack
- Short-window metrics (for example, last minutes or hours)
- Monitoring of launches, tests, or rapid changes (budgets, activation, CPC)
- Near real-time dashboards or alerts
Shared Concepts
Supported Metrics
All standard MPO stats endpoints expose the same core metrics:impressions– Number of times products were shown in banners.clicks– Number of clicks on products.cost– Amount spent for those clicks.saleUnits– Number of products sold attributed to those clicks.revenue– Revenue generated by attributed sales.cr– Conversion rate (saleUnits / clicks).cpo– Cost per order (cost / saleUnits).cos– Cost of sale (cost / revenue).roas– Return on ad spend (revenue / cost).
Aggregation Interval
You control the aggregation granularity withintervalSize, typically:
- Day – one row per day
- Month – one row per calendar month
- Year – one row per calendar year
- Hour – for shorter windows; may have stricter max range
Common Filtering Parameters
All three endpoints share a common set of filters. The most important are:Time range
startDate– include events from the start of this day (inclusive)endDate– include events up to the end of this day (inclusive)
Row limit
count– maximum number of rows to return
Attribution
clickAttributionPolicy–SameSeller,AnySeller, orBoth(where supported)
campaignId, sellerId).
Endpoints
Seller Statistics
Purpose: Performance aggregated per seller over time.Typical Use Cases
- Per-seller reporting for marketplace account management
- Identifying top or underperforming sellers
- Feeding seller-facing dashboards
Key Parameters
-
advertiserId(integer, optional)
Restrict metrics to a specific advertiser (your marketplace). -
sellerId(string, optional)
Restrict to a single seller. If omitted, returns one row per seller per interval. -
startDate,endDate(date, optional)
Filter events to a given date range. If omitted:endDatedefaults to today.startDatedefaults toendDate(one day).
-
intervalSize(enum, optional)
Aggregation granularity:Day,Month,Year, and in some environmentsHour. -
count(integer, optional)
Maximum number of rows to return (useful for pagination or sampling). -
clickAttributionPolicy(enum, optional)
Attribution mode:SameSeller,AnySeller, orBoth(where supported).
Response Shape (Conceptual)
The response uses a “columns + data” structure like so:- The first columns identify the seller (
sellerId,sellerName) and time bucket. - The remaining columns are the metrics.
sellerId and sellerNamefrom your catalog and seller mapping.
Campaign Statistics
Purpose: Performance aggregated per campaign over time. This endpoint works for:- Multi-Seller MPO campaigns
- Template / Single-Seller campaigns where you want statistics at campaign ID level
Key Parameters
-
advertiserId(integer, optional)
Restrict to a specific advertiser. -
campaignId(string, optional)
Restrict to one campaign. If omitted, returns one row per campaign per interval. -
startDate,endDate,intervalSize,count,clickAttributionPolicy
Same semantics as for seller stats.
Response Shape (Conceptual)
Typical Use Cases
- Overall performance for a Multi-Seller or template campaign
- High-level reporting for commercial or product stakeholders
- Sanity checks before drilling down at seller or seller-campaign level
Seller-Campaign Statistics
Purpose: Performance aggregated per (campaign, seller) pair over time. This endpoint is the most granular standard reporting view and is key for:- Understanding how a specific seller performs within a given campaign
- Comparing sellers within the same campaign
- Single-Seller setups, where each seller effectively has a dedicated campaign ID
Key Parameters
-
advertiserId(integer, optional)
Restrict to a specific advertiser. -
campaignId(string, optional)
Restrict to a specific campaign (or template). -
sellerId(string, optional)
Restrict to one seller. If omitted, you get rows across all sellers/campaigns. -
startDate,endDate,intervalSize,count,clickAttributionPolicy
Same semantics as for the other endpoints.
Response Shape (Conceptual)
Typical Use Cases
- Per-seller performance within a multi-seller campaign
- Single-Seller reporting when you want to filter on one (
sellerId,templateCampaignId) pair - Feeding a seller dashboard that shows per-campaign breakdowns
Multi-Seller vs Single-Seller: How to Think About IDs
The endpoints are shared; what changes is how you interpret IDs:Multi-Seller
campaignId– ID of a shared MPO campaign.sellerId– marketplace seller identifier managed via MPO Sellers.- Seller-campaign rows show how each seller performs inside the pooled campaign.
Single-Seller
campaignId– often the template campaign ID (for high-level views).sellerId– marketplace seller; still the primary key for per-seller reporting.- In some setups, a dedicated
sellerCampaignIdexists and may be used in other APIs; here you still filter bycampaignId+sellerId.
When designing your reporting model
- Use Seller Stats when you care primarily about seller-level performance, regardless of campaign.
- Use Campaign Stats when you care primarily about campaign-level performance, regardless of seller.
- Use Seller-Campaign Stats when you need the intersection and want to understand how a seller behaves inside a specific campaign.
Pagination and Count
Thecount parameter lets you limit the maximum number of rows returned. Combined with startDate / endDate, you can build simple pagination, for example:
- Request
startDate = 2026-03-01,endDate = 2026-03-31,count = 100. - If you receive 100 rows and expect more:
- Use the last date returned as the new
startDatefor the next page (plus one day, depending on your logic). - Repeat until a page returns fewer than
countrows.
- Use the last date returned as the new
Error Handling
The Standard Reporting API uses the same error semantics as other MPO endpoints:4xx – Client errors
- Invalid date range (for example, start date after end date, or too long)
- Unsupported
intervalSize - Invalid
clickAttributionPolicy - Invalid or unauthorized
advertiserId,campaignId, orsellerId
5xx – Server / transient errors
- Retry with backoff; avoid tight retry loops.
- Validate inputs on your side (date formats, ranges, enums) before sending.
- Implement backoff for network errors and 5xx responses.
- Log both the HTTP status and error payload for diagnosis.
Integration Patterns
A few common patterns for marketplaces:Daily batch export for BI
- Once per day, call Seller Stats and Campaign Stats for the previous day.
- Load into your data warehouse and join with internal catalog and seller metadata.
Seller-facing reporting
- Use Seller Stats (and optional Seller-Campaign Stats) filtered by
sellerId. - Aggregate over a seller’s preferred time window (for example, last 7 days, last 30 days).
- Expose metrics via your own portal UI.
Performance diagnosis
- Use Seller-Campaign Stats for a given (
campaignId,sellerId) to diagnose:- Why a seller is under-delivering
- How performance changes after budget or template changes