CDP REST APIAPI Reference
Link Profile Alias
Link an external id (email, Shopify customer id, …) to a profile.
PUT /cdp/profiles/{id}/aliases/{aliasId} links an external id to a profile. The id is
namespaced under your brand's scope, so two brands linking the same external id never
collide and an alias can never resolve across tenants. Idempotent when the alias already
links to this profile; a 409 when it already resolves to a DIFFERENT profile.
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 profile to link the alias to. (Not a query parameter.) |
aliasId | string | Yes | — | Path parameter ({aliasId}) — the external id to link (email, Shopify customer id, …). |
Response
The 200 response body:
| Field | Type | Description |
|---|---|---|
profileId | string | |
aliasId | string | |
status | 'linked' | |
scope | string | Your brand's resolved shop domain. |
Errors
All errors share the standard envelope { "error": string, "error_description": string }.
| Status | Code | When |
|---|---|---|
400 | invalid_property | The aliasId is empty or contains a forbidden character. |
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). |
409 | conflict | The alias already links to a different profile in scope. |
405 | method_not_allowed | The request used a method other than PUT. |
500 | internal_error | An unexpected error prevented the link. |