Skip to main content
Webhooks let KYC tell your system when something happens, such as a new guest message. KYC sends an HTTPS POST to your endpoint for each event you subscribe to. Each request is signed, so you can check that it came from KYC and wasn’t changed on the way.

Events

Event types are named module.object.action. New event types are added over time, and you only receive the ones you subscribe to.

Setting up an endpoint

KYC sets up your endpoint. You can’t create or change one through the API. Send KYC:
  • The URL. It must be HTTPS on port 443, with a publicly trusted certificate.
  • The event types you want, or all public event types.
  • The property, or all properties in the brand.
  • An optional credential header, such as X-Api-Key: <value>. KYC sends it with every request, so your endpoint can authenticate KYC before it checks the signature.
KYC gives you a signing secret that starts with whsec_. It is shown only once, so store it securely, for example in a secrets manager. Ask KYC for a ping to test your endpoint.

What a request looks like

The body uses the same { data, meta } envelope as API responses:
  • data is the event. It is identical on every retry. Its id is also the webhook-id header.
  • meta is this delivery attempt. It changes on every retry.

Payloads carry IDs, not content

data.resource holds IDs and metadata only. It never contains message text, attachments, or guest personal data such as names, phone numbers or email addresses. Use the IDs to fetch the details you need through the API, with your usual credentials. This keeps personal information behind API authentication, and you always get current data, even when a retry arrives late.
API endpoints for guest messages are not yet published. Ask KYC about access in the meantime.

Next steps