get
https://example.com
GET /v2/ecommerceReports/coupons/{couponId}/analytics/products — Paginated product breakdown
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
Paginated Products tab for coupon analytics. Same auth, date-range rules, and order-qualify logic as GET .../analytics. Sorted by revenue descending, then orders descending. Redeemers: GET .../analytics/redeemers.
See Coupon analytics metrics and definitions.
Path
| Parameter | Type | Description |
|---|---|---|
couponId | string | Ecommerce coupon id |
Query
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dateRange | string | No | last_7_days | Same presets as analytics (last_180_days supported) |
startDate | string | When custom | — | YYYY-MM-DD |
endDate | string | When custom | — | YYYY-MM-DD |
page | integer | No | 1 | Page number (≥ 1) |
limit | integer | No | 5 | Page size (1–50) |
Invalid preset, missing custom dates, bad date format, or reversed custom range → 422 (key: INVALID_FIELD).
Auth and errors
| Status | When |
|---|---|
| 400 | Affiliate context is required |
| 401 | Missing or invalid bearer token |
| 403 | Role or couponAnalytics view access denied (AFFILIATE_SUPER_ADMIN or AFFILIATE_ADMIN only — not AFFILIATE_AGENT) |
| 404 | Unknown couponId or coupon owned by another affiliate |
| 409 | Conflicting record exists |
Response (200)
200){
"success": true,
"data": {
"range": {
"startDate": "2026-09-17T00:00:00.000Z",
"endDate": "2026-09-24T23:59:59.999Z",
"preset": "last_7_days"
},
"totalOrders": 52,
"result": [
{
"productId": "ecpr::example",
"productName": "Example product",
"orders": 30,
"revenue": 9000.0,
"sharePct": 100
}
],
"count": 1,
"page": 1,
"limit": 5
}
}| Field | Notes |
|---|---|
revenue | Net allocated line revenue after discount and order-level refunds; null when any line lacks a persisted purchase-time unit price |
sharePct | revenue / top product revenue in range × 100 — use for performance bar width (not orders / totalOrders). 0 when the top product revenue is 0 |
OpenAPI schema: CouponAnalyticsProductsSuccessEnvelope.
