Create or update a contact
POST /api/v1/customer/create
Upserts a contact and returns 201 Created. If a contact with the same email or phone already exists, it’s updated; otherwise it’s created. This endpoint does not add anyone to a list — for that, see the Lists API.
Request
You must sendemail or phone — at least one. Everything else is optional.
The contact’s email address. Required unless you send
phone.Phone number, 7–20 characters. Required unless you send
email. Needed for WhatsApp messaging.Your own identifier for this person (your database ID), for reconciling across systems.
Max 100 characters.
Max 100 characters.
Email marketing consent:
SUBSCRIBED, NON_SUBSCRIBED, or UNSUBSCRIBED. Defaults to NON_SUBSCRIBED when omitted. Only send SUBSCRIBED when the person actually opted in.SMS/WhatsApp consent, same values. Defaults to
NON_SUBSCRIBED.Whether the contact is suppressed. Defaults to
false.Whether to require email confirmation before the contact counts as subscribed. Defaults to
false.Where this contact came from, e.g.
booking-platform. Defaults to api.Date of birth as an ISO 8601 date, e.g.
1990-01-15.MALE, FEMALE, or OTHER. Case-sensitive.Max 100 characters. Normalized to a country code on write.
Max 100 characters.
Max 100 characters.
Max 255 characters.
Max 255 characters.
3–20 characters.
Key–value pairs stored as custom fields — usable in segments and personalization. Maximum 30 keys per request, string values.
Unrecognized fields are rejected with
400. Send first_name, not firstName.Example request
Response
201 Created
id — it’s the stable identifier for fetching this contact later, and for sending events with contactUUID.
Custom properties
- Maximum 30 keys per request; more returns
400. - Values are stored as strings. Numbers and booleans are converted; nested objects are not — they store as unusable text, so flatten them before sending.
- Empty and whitespace-only values are dropped rather than stored.
Get a contact
GET /api/v1/customer/{id}
404 if no contact has that ID.
List contacts
GET /api/v1/customer
Returns contacts in pages.