get analytics products

GET /v2/ecommerceReports/coupons/{couponId}/analytics/products — Paginated product breakdown

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

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

ParameterTypeDescription
couponIdstringEcommerce coupon id

Query

ParameterTypeRequiredDefaultDescription
dateRangestringNolast_7_daysSame presets as analytics (last_180_days supported)
startDatestringWhen custom—YYYY-MM-DD
endDatestringWhen custom—YYYY-MM-DD
pageintegerNo1Page number (≥ 1)
limitintegerNo5Page size (1–50)

Invalid preset, missing custom dates, bad date format, or reversed custom range → 422 (key: INVALID_FIELD).

Auth and errors

StatusWhen
400Affiliate context is required
401Missing or invalid bearer token
403Role or couponAnalytics view access denied (AFFILIATE_SUPER_ADMIN or AFFILIATE_ADMIN only — not AFFILIATE_AGENT)
404Unknown couponId or coupon owned by another affiliate
409Conflicting record exists

Response (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
  }
}
FieldNotes
revenueNet allocated line revenue after discount and order-level refunds; null when any line lacks a persisted purchase-time unit price
sharePctrevenue / 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.

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here!