get
https://example.com
GET /v2/ecommerceReports/coupons/{couponId}/analytics/redeemers — Redeemer segments and retention (lifetime)
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
Returns lifetime redeemer segmentation and new-customer retention for the Coupon analytics Redeemers tab. Not filtered by the modal KPI date range — do not pass dateRange / startDate / endDate.
KPIs and usage limit: GET .../analytics. Products: GET .../analytics/products. All-coupon report: GET .../used-on-orders.
Full metric definitions: Coupon analytics metrics and definitions.
Path
| Parameter | Type | Description |
|---|---|---|
couponId | string | Ecommerce coupon id |
Query
None.
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": {
"coupon": {
"id": "ecpn::example",
"code": "SAVE20",
"description": "",
"discountType": "percent",
"discountMode": "one-time",
"amount": 20
},
"users": {
"totalDistinctRedeemers": 100,
"totalRedemptions": 250,
"new": {
"count": 50,
"pct": 50,
"redemptions": 60,
"redemptionPct": 24
},
"existingFirstUse": {
"count": 10,
"pct": 10,
"redemptions": 10,
"redemptionPct": 4
},
"returning": {
"count": 40,
"pct": 40,
"redemptions": 180,
"redemptionPct": 72
}
},
"retention": {
"day30": { "eligible": 45, "retained": 10, "pct": 22.22 },
"day60": { "eligible": 45, "retained": 10, "pct": 22.22 },
"day90": { "eligible": 40, "retained": 8, "pct": 20 },
"day180": { "eligible": 25, "retained": 5, "pct": 20 }
}
}
}| Area | Notes |
|---|---|
users.new / existingFirstUse | One qualifying order per patient (lifetime); prior affiliate orders checked at first redeem |
users.returning | Patient has more than one qualifying deduped order on this coupon |
users.existingFirstUse | UI label: Existing customers, first use |
users.*.redemptionPct | Use for segment bar width vs total redemptions |
retention | New customers only; retained = later qualifying order or active subscription at milestone; pct is null when eligible === 0 |
OpenAPI schema: CouponAnalyticsRedeemersSuccessEnvelope → CouponAnalyticsRedeemersResponse.
