Contacts
Create or update a contact
POST/v1/contacts/identify
Requires an API key with the contacts:write scope. About keys and scopes
Upsert keyed on identity rather than id: the contact is resolved by externalId, then email, then phone, and created if none matches. Consent flags that are omitted keep their current value rather than resetting to false. attributes merge as on update: null removes a key. This is the endpoint to use for ingestion. Agent keys are refused with 403.
Request body
externalIdstring | nulloptionalYour own id for the contact, up to 255 characters. Identify matches on it first.
1–255 characters
emailstring | nulloptionalemail
firstNamestring | nulloptional1–100 characters
lastNamestring | nulloptional1–100 characters
phonestring | nulloptionalPhone number; normalised to E.164 (a leading
+and country code).timezonestring | nulloptionalIANA timezone, e.g.
Europe/London; used for send-time scheduling.up to 100 characters
countrystring | nulloptionalISO 3166-1 alpha-2 code. Omitted, it is inferred from the phone, else the timezone.
datesContactDatesInputoptionalNamed calendar dates, merged key by key;
nullremoves one.attributesobjectoptionalCustom attributes, merged key by key;
nullremoves one. At most 50 keys and 16 KB.emailConsentbooleanoptionalConsent to email. Omitted, the current value is kept.
pushConsentbooleanoptionalConsent to push. Omitted, the current value is kept.
consentStatementConsentStatementInputoptionalHow the contact agreed, recorded with any consent this request grants.
2 child attributes
basisstringrequiredThe legal basis the contacts agreed under.
one of
opted_in,existing_customerevidencestringrequiredWhere and how they agreed, e.g. "Checkout opt-in on shop.example.com".
1–500 characters
Returns
Returns 200 OK with a ContactDetail in data. Otherwise returns an error; Errors lists every code and which to retry.
200 OKThe existing contact, updated.201 CreatedA new contact was created.
idstringrequireduuid
externalIdstring | nullrequiredYour own id for the contact, if set.
emailstring | nullrequiredemail
firstNamestring | nullrequiredlastNamestring | nullrequiredphonestring | nullrequiredPhone number in E.164 format.
timezonestring | nullrequiredIANA timezone, e.g.
Europe/London.countrystring | nullrequiredISO 3166-1 alpha-2 code: as written, or inferred from the phone, else the timezone.
datesobjectrequiredNamed calendar dates, e.g.
birthday, asYYYY-MM-DDor--MM-DD.attributesobjectrequiredCustom attributes, keyed by attribute name.
emailConsentbooleanrequiredWhether the contact has consented to email.
pushConsentbooleanrequiredWhether the contact has consented to push.
createdAtstringrequireddate-time
updatedAtstringrequireddate-time
emailSuppressionobjectrequired2 child attributes
suppressedbooleanrequiredWhether email to this contact is blocked.
reasonstring | nullrequiredWhy email to this contact is suppressed:
bounced,complained,complained_transactional,unsubscribed,manual,imported, orother_workspace(a bounce or complaint in another workspace with the same owner or partner).