Skip to main content

Overview

Contact events notify you of every change to contacts in BookingShake: contact.created, contact.updated, and contact.deleted. A contact represents a person, optionally attached to an account through account_id. Common use cases:
  • Sync contacts to external CRM systems (Salesforce, HubSpot, etc.)
  • Trigger automated workflows when new contacts are created
  • Keep marketing opt-in statuses in sync with your emailing tools

Payload Examples

Contact Created

Triggered when a new contact is added to your venue.
{
  "event": "contact.created",
  "timestamp": 1731493800000,
  "venue_id": "venue123",
  "venues_group_id": "group456",
  "data": {
    "id": "contact-456",
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "phone": "+33612345678",
    "landline_phone": "+33145678901",
    "title": "CEO",
    "account_id": "account-123",
    "optin_marketing": true,
    "address_line_1": "10 rue Example",
    "postal_code": "75001",
    "city": "Paris",
    "country": "France",
    "created_at": 1731493800000
  }
}

Contact Updated

Triggered when contact information is modified. Contains all contact data after the update.
{
  "event": "contact.updated",
  "timestamp": 1731493900000,
  "venue_id": "venue123",
  "venues_group_id": "group456",
  "data": {
    "id": "contact-456",
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.newemail@example.com",
    "phone": "+33698765432",
    "landline_phone": "+33145678901",
    "title": "CEO",
    "account_id": "account-123",
    "optin_marketing": true,
    "address_line_1": "10 rue Example",
    "postal_code": "75001",
    "city": "Paris",
    "country": "France",
    "created_at": 1731493800000
  }
}
contact.updated is only emitted when at least one field exposed in the payload (including custom fields) actually changes. Internal or technical changes do not emit events.

Contact Deleted

Triggered when a contact is removed. Only includes the contact ID.
{
  "event": "contact.deleted",
  "timestamp": 1731494000000,
  "venue_id": "venue123",
  "venues_group_id": "group456",
  "data": {
    "id": "contact-456"
  }
}

Data Fields

FieldTypeDescription
idstringUnique contact ID
first_namestringFirst name
last_namestringLast name
emailstringEmail address
phonestringMobile phone number
landline_phonestringLandline phone number
titlestringContact’s title
positionstringJob position
avatarstringAvatar image URL
commentsstringFree-text notes about the contact
account_idstringID of the account this contact belongs to
optin_marketingbooleanMarketing communications opt-in
optin_generalbooleanGeneral communications opt-in
address_line_1stringAddress
address_line_2stringAddress, line 2
postal_codestringPostal code
citystringCity
countrystringCountry, verbatim as entered
created_atnumberCreation timestamp, Unix milliseconds
custom_<uuid>anyCustom fields configured for your venue
Fields without a value are omitted from contact and account payloads (no explicit null), so the exact set of keys varies per contact. This differs from invoice and payment payloads, where every field is always present with an explicit null.

Next Steps

Account Events

Track the companies your contacts belong to

Security & Verification

Verify webhook signatures before processing