CDP REST APIAPI Reference
Update Profile
Set, overwrite, or remove custom properties on one of your brand's profiles.
PATCH /cdp/profiles/{id} sets, overwrites, or removes custom properties on ONE profile.
Writes are applied through the rule-processed updateProperties event, so merges, segment
recalculation, and identify rules stay consistent. Reserved and tenant-isolation property
keys (segments, systemProperties, scope, shopDomain, mergeIdentifier, …) are
rejected — you can only write your own custom properties.
Every write is bound to your brand's shop scope. See Tenant Isolation & Scope.
Query parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
profileId | string | Yes | — | Path parameter ({id}) — the Unomi profile id to update. (Not a query parameter.) |
add | string | No | — | Body field — a { key: value } map of properties to set only if currently missing. |
update | string | No | — | Body field — a { key: value } map of properties to overwrite. |
delete | string[] | No | — | Body field — an array of property names to remove. |
Response
The 200 response body:
| Field | Type | Description |
|---|---|---|
profileId | string | |
applied | object | |
applied.added | string[] | |
applied.updated | string[] | |
applied.deleted | string[] | |
status | 'accepted' | |
scope | string | Your brand's resolved shop domain. |
Errors
All errors share the standard envelope { "error": string, "error_description": string }.
| Status | Code | When |
|---|---|---|
400 | bad_request | The body is not valid JSON, or no add/update/delete was supplied. |
400 | invalid_property | A reserved or malformed property key was written. |
401 | unauthorized | Missing or invalid API credential. |
403 | forbidden | No connected Shopify integration resolves a scope for the brand. |
404 | not_found | No such profile in your brand scope (missing or out-of-scope). |
405 | method_not_allowed | The request used a method other than PATCH. |
500 | internal_error | An unexpected error prevented the write. |