Overview
PATCH /contacts/{id} updates a single contact (person) by its ID. It is a partial update: only the fields you include in the body are modified, everything else is left untouched.
The request body uses the same conventions as the response - the English (snake_case) field names returned by GET /contacts/{id}. So you can read a contact, change a few fields, and send them straight back. Pass null on any field to clear it.
Updating a contact automatically emits the
contact.updated webhook when at least one exposed field changes. The country field is stored verbatim as provided - no ISO normalization.Authentication
All requests require a Bearer token (your BookingShake API key):Path Parameters
The contact ID - the
id field carried by the contact.* webhooks.Body Parameters
All body fields are optional, but at least one must be provided. String fields are trimmed and limited to 255 characters. Passnull on any field to clear it. id and created_at are read-only and ignored.
First name.
Last name.
Email address. Must be a valid email when provided; pass
null to clear it.Mobile phone number.
Landline phone number.
Contact’s title.
Job position.
Avatar image URL.
Free-text notes about the contact.
ID of an existing account (company) to link the contact to. Must reference an account within the contact’s venue or venues group, otherwise the request is rejected with
400. Pass null to unlink.Marketing communications opt-in. Must be
true, false, or null.General communications opt-in. Must be
true, false, or null.Address.
Address, line 2.
Postal code.
City.
Country, stored verbatim.
Custom fields configured for your venue. A single-value field takes a string; a multi-select field takes an array of strings. An unknown custom field key is rejected with
400.Request
Response
The full contact is returned in its post-update state, wrapped in the standard{ message, data } envelope - identical in shape to GET /contacts/{id}.
Errors
| Status | Meaning |
|---|---|
400 | Missing/invalid token, missing contact id, empty/invalid body, no updatable fields, a wrongly-typed value (e.g. a non-string on a string field, a non-boolean opt-in), a value over 255 characters, an invalid email, an account_id outside the contact’s scope, or an unknown custom field key |
404 | Contact not found - it does not exist, or belongs to another venue or venues group |
429 | Rate limit exceeded (30 requests/minute) |
500 | Internal server error |
A
404 is returned uniformly whenever the contact is outside your scope, so the existence of another venue’s contact is never disclosed.Next Steps
Get a Contact
Retrieve a contact before updating it
Contact Events
Receive contact changes in real time via the contact.* webhooks
