Customer Orders
GET /cdp/customers/{identifier}/orders — list a single customer’s orders,
resolved from the same identifier as Get Customer. The
response is the exact same contract as List Orders:
a normalized order list plus offset pagination — just pre-filtered to one customer.
Requires the beta:cdp-commerce permission on your brand.
Request
Section titled “Request”GET /cdp/customers/{identifier}/ordersAuthorization: Bearer vyg_…Path parameters
Section titled “Path parameters”| Param | Type | Description |
|---|---|---|
identifier | string | A profile id, email, phone, Shopify customer id, or contact id — classified by shape (see Get Customer). Pass the customer.contact_id from an order here to list that customer’s full history. |
Query parameters
Section titled “Query parameters”| Param | Type | Default | Description |
|---|---|---|---|
limit | integer | 25 | Page size, clamped to a maximum of 100. |
offset | integer | 0 | Offset; offset + limit must stay within the 10,000-row window or the request is rejected 400. |
Response 200
Section titled “Response 200”{ "list": [ { "id": "b2c1…", "external_id": "4501234567890", "number": "1001", "state": "complete", "billing_status": "complete", "total": "120.00", "currency_code": "USD", "customer": { "contact_id": "c9f0…" }, "created_at": "2026-03-02T14:21:00.000Z", "recovered_at": null } ], "totalSize": 1, "offset": 0, "pageSize": 25, "scope": "your-shop.myshopify.com", "nextCursor": null}The envelope and each order are identical to List Orders —
see Get Order for the full per-order field reference and
line-item detail. Orders here include all states (not just completed), unlike
the commerce.total_spend summary on Get Customer,
which counts completed orders only.
A customer that resolves a profile but no local order contact returns an empty
page (list: [], totalSize: 0) — never another brand’s orders.
Example
Section titled “Example”curl -s "https://cdp.vyg.app/cdp/customers/alice@example.com/orders?limit=25" \ -H "Authorization: Bearer vyg_your_key_here"Errors
Section titled “Errors”| Status | When |
|---|---|
400 | Missing identifier, or a deep offset past the result window. |
401 | Missing or invalid credential. |
403 | Brand not enrolled in the commerce beta (beta_not_enabled), or no connected Shopify integration (integration_not_connected). |
404 | The customer is absent from both the profile and commerce stores — an unknown identifier or one belonging to another brand, indistinguishable by design. |
405 | Non-GET method. |
See Tenant Isolation & Scope for why cross-brand
identifiers return 404 and never leak another brand’s orders.