Get own abandonment insights
Cart abandonment rate and value for your own carts.
Reports
/api/v1/scent/reports/cart-insights/abandonmentCart-lifecycle counts (created / checked-out / expired-or-abandoned) within the given window
and the resulting abandonment rate, plus the estimated value CURRENTLY sitting in YOUR OWN
live abandoned carts. abandonedCartsValue is deliberately NOT restricted to the [from, to)
window — it’s a present-tense snapshot of what’s parked in abandoned carts right now,
independent of when they were abandoned. from/to default to the last 30 days when
omitted; no window-size limit applies to this endpoint (see the lost-demand endpoint’s
identical note above).
Query parameters
fromstring (date-time)Window start (UTC), inclusive. Defaults to 30 days before ‘to’. Read as UTC when it carries no offset; a date-only value means 00:00Z. An unparseable value, or a from/to pair with from after to, returns 400 VALIDATION_INVALID_DATE.
tostring (date-time)Window end (UTC), exclusive. Defaults to now. Read as UTC when it carries no offset; a date-only value means 00:00Z. An unparseable value, or a from/to pair with from after to, returns 400 VALIDATION_INVALID_DATE.
Response
fromstring (date-time)tostring (date-time)cartsCreatedintegerCount of Created events in the window (new carts opened).
cartsCheckedOutintegerCount of CheckedOut events in the window (carts converted to an order).
cartsExpiredOrAbandonedintegerCount of Expired + Abandoned events in the window (carts that reached a terminal non-purchase outcome).
abandonmentRatenumber (decimal)cartsExpiredOrAbandoned / (cartsCheckedOut + cartsExpiredOrAbandoned) — deliberately NOT divided by cartsCreated, since a cart still Open has no terminal outcome to count either way. 0 when no cart reached a terminal outcome in the window.
abandonedCartsValuenumber (decimal)Estimated SAR value CURRENTLY sitting in your own live Abandoned carts — a present-tense snapshot, deliberately NOT restricted to the [from, to) window (so it always answers “how much is parked in abandoned carts right now,” not only for carts abandoned recently).
abandonedCartsValueIsTruncatedbooleanTrue when the reconstruction hit its internal materialization cap and abandonedCartsValue covers only the most-recently-abandoned carts, not every one. False under normal volume.
Other responses
400A query parameter was rejected. Unknown parameter name: VALIDATION_UNKNOWN_QUERY_PARAMETER (details.allowedParameters). Value that does not parse (id, enum, number, boolean): VALIDATION_INVALID_QUERY_PARAMETER (enums add details.allowedValues). Unknown include token: VALIDATION_UNKNOWN_INCLUDE (details.allowedValues). pageSize outside 1–100: VALIDATION_INVALID_PAGE_SIZE. page below 1: VALIDATION_INVALID_PAGE. Unparseable date, or a from/to pair with from after to: VALIDATION_INVALID_DATE. details.errors names every offending parameter.401No bearer token (UNAUTHORIZED_MISSING_TOKEN), an invalid token (UNAUTHORIZED_INVALID_TOKEN) or an expired one (UNAUTHORIZED_TOKEN_EXPIRED — mint a new token). UPSTREAM_AUTH_FAILED is different: a dependent service refused the Gateway itself. That is a server-side fault — retry later and do NOT re-mint your token. See the Errors guide.403The route is not available to your credential (FORBIDDEN).404No API route matches this path (NOT_FOUND_ROUTE). A missing resource on a real route returns that service’s own NOT_FOUND_* code instead.429Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).502A dependent service returned an invalid response (BAD_GATEWAY). Retry with backoff.503The service is temporarily unavailable (SERVICE_UNAVAILABLE). Retry with backoff.504A dependent service did not respond in time (GATEWAY_TIMEOUT). Retry with backoff.curl --request GET \ --url https://api-omni.linra.net/api/v1/scent/reports/cart-insights/abandonment \ --header 'Authorization: Bearer $TOKEN'const res = await fetch('https://api-omni.linra.net/api/v1/scent/reports/cart-insights/abandonment', { headers: { Authorization: `Bearer ${token}`, },});const { payload } = await res.json();var response = await httpClient.GetAsync("https://api-omni.linra.net/api/v1/scent/reports/cart-insights/abandonment");
var envelope = await response.Content.ReadFromJsonAsync<ApiResponse<AbandonmentInsightsResponse>>();Response
{ "state": "SUCCESS", "payload": { "from": "2026-08-22T09:14:03Z", "to": "2026-08-22T09:14:03Z", "cartsCreated": 0, "cartsCheckedOut": 0, "cartsExpiredOrAbandoned": 0, "abandonmentRate": 0, "abandonedCartsValue": 0, "abandonedCartsValueIsTruncated": true }, "details": null}
