Customer Profile (materialized)
A customer's materialized CDP profile — identity graph, consolidated attributes, and computed tags from CDP Aurora.
GET /cdp/customers/{identifier}/profile returns a customer's consolidated CDP profile for your
brand: the deterministic identity graph (every resolved key — shopify_customer_id, email,
phone, vyg_aid, …), the US-009 materialized attributes (orders count, total spend, AOV,
recency, engagement, browse rollups), and computed tags. It is the REST twin of the
cdp_customer_profile MCP tool: both return the same identity graph, attributes, and tags,
computed by one shared capability.
Every read is bound to your brand's scope. See Tenant Isolation & Scope.
Materialized read vs. the live join
This route reads the materialized CDP identity-graph truth from the CDP Aurora cdp.* schema
(what the CDP materializer writes). It differs from
GET /cdp/customers/{identifier}, which is a live join of the
Unomi behavioral profile with the commerce store, computed on-read. Same audience, different
substrate and freshness: use this route for the consolidated identity graph + materialized
attributes; use /cdp/customers/{identifier} for the live profile + commerce summary.
Path parameters
The {identifier} is classified by shape (the same shapes the MCP tool accepts):
| Shape | Interpreted as |
|---|---|
| UUID | CDP customerId |
contains @ | email |
starts with + | phone |
| all digits | shopify_customer_id |
Response 200
{
"customerId": "8f2b…",
"brandId": "b1a2…",
"identities": [
{ "type": "email", "value": "jane@example.com", "source": "shopify", "confidence": 1, "verified": true },
{ "type": "shopify_customer_id", "value": "1234567890", "source": "shopify", "confidence": 1, "verified": true }
],
"profile": {
"customer_id": "8f2b…",
"orders_count": 12,
"total_spend": 1840.5,
"aov": 153.38,
"recency_days": 19,
"engagement_score": 88.2
},
"tags": [
{ "tag": "high_value", "source": "materializer" },
{ "tag": "repeat", "source": "materializer" }
],
"scope": "your-shop.myshopify.com"
}identities— the deterministic identity graph (every resolved key + provenance).profile— the materialized attributes row.nulluntil the materializer has run for this customer (the identity graph + tags still return).tags— the computed tags for this customer.scope— your brand's resolved shop domain.
Calling this route by email and by customerId for the same customer returns the same identity
graph, attributes, and tags.
Example
curl -s "https://cdp.vyg.app/cdp/customers/jane@example.com/profile" \
-H "Authorization: Bearer vyg_your_key_here"Errors
| Status | When |
|---|---|
400 | Missing identifier (bad_request). |
401 | Missing or invalid credential. |
403 | No connected Shopify integration resolves a scope for the brand. |
404 | No CDP customer resolves for the identifier in this brand. |
405 | Non-GET method. |
503 | The CDP is temporarily unavailable — retry (upstream_unavailable). |
Get Customer
Fetch a unified customer record — CDP profile, commerce summary, connected integrations, and subscription — by profile id, email, phone, Shopify customer id, or contact id.
Customer Orders
List a single customer's order history, resolved by profile id, email, phone, Shopify customer id, or contact id, in the standard order-list contract.