LiveRecoverVYG Developer Docs
CDP REST APIAPI Reference

Brand Overview

A one-call snapshot of your brand's customer base — totals, tag distribution, spend, and recent event volume.

GET /cdp/overview summarizes your brand's entire customer base in one call — the "how are my customers doing?" snapshot, instead of ten separate lookups. It is the REST twin of the cdp_overview MCP tool: both return the same data, computed by one shared capability, so the two surfaces cannot drift.

Every read is bound to your brand's shop scope. See Tenant Isolation & Scope.

Query parameters

ParameterTypeRequiredDefaultDescription
since_daysnumberNo30Length of the recent-event window in days. Clamped to [1, 365] — an out-of-range value is clamped, a non-numeric value returns 400.

Response

The 200 response body:

FieldTypeDescription
totalsobjectBase counts across your customer base.
totals.customersnumberCount of your materialized customer profiles.
totals.identifiedProfilesnumber | nullIdentified (known-contact) profiles from the CDP profile store; null when that store is degraded.
totals.anonymousProfilesnumber | nullAnonymous (pixel-only) profiles, derived as total minus identified; null when the profile store is degraded.
totals.ordersnumber | nullCDP-witnessed order count (since ingest, not lifetime store history); null when the commerce reads degraded.
totals.productsnumber | nullDistinct product keys seen in the product rollup; 0 before backfill, null when the commerce reads degraded.
tagDistributionobject[]Per-derived-tag customer counts, busiest tag first.
tagDistribution[].tagstringThe derived tag (e.g. high_value, lapsed).
tagDistribution[].countnumberHow many of your customers carry this tag.
spendobjectSpend aggregates over your materialized profiles.
spend.avgTotalSpendnumber | nullMean lifetime spend within the modal-currency cohort; null for an empty base.
spend.avgAovnumber | nullMean average-order-value within the modal-currency cohort; null for an empty base.
spend.currencystring | nullModal (most common) currency the averages are denominated in.
spend.mixedCurrencybooleantrue when your base transacted in more than one currency.
recentEventsobjectRecent event volume and the window it covers.
recentEvents.sincestringISO-8601 lower bound of the window (inclusive).
recentEvents.sinceDaysnumberThe effective (clamped) window length in days.
recentEvents.byEventTypeobject[]Per-event-type counts over the window, busiest first.
recentEvents.byEventType[].eventTypestringThe event type.
recentEvents.byEventType[].countnumberEvent volume within the window.
degradedobjectWhich optional sources degraded on this call.
degraded.unomibooleantrue when the profile store was briefly unavailable — the identified/anonymous counts come back null while every Postgres-derived field still returns.
degraded.commercebooleantrue when the commerce reads were unavailable — totals.orders/totals.products come back null while everything else still returns.
scopestringYour brand's resolved shop domain.

Errors

All errors share the standard envelope { "error": string, "error_description": string }.

StatusCodeWhen
400bad_requestsince_days is present but not a number.
401unauthorizedMissing or invalid API credential.
403forbiddenNo connected Shopify integration resolves a scope for the brand.
405method_not_allowedThe request used a method other than GET.
503upstream_unavailableThe CDP is temporarily unavailable — retry.
500internal_errorAn unexpected error prevented computing the overview.

On this page