Webhooks
Webhooks notify you in real time when messages are sent or received and when an inbound FaceTime Audio call rings, is answered, or ends. Configure webhooks from within the Project Blue dashboard alongside your API keys.
On this page
Configuration
In the Project Blue app, you can:
- Paste the webhook URL you want to receive events at
- Choose which events the webhook receives: inbound messages, outbound messages, inbound FaceTime calls
- Send test payloads to verify your endpoint is working
Delivery
Your endpoint should answer 2xx. Anything else — including a network error or a timeout — counts as a failure.
There are no retries. Each event is delivered exactly once; a failed delivery is not queued or replayed, so a webhook is not a durable log. Reconcile with /get-messages-api if you need guaranteed coverage.
After 20 consecutive failures the webhook is automatically disabled. The counter resets on the first success. Today that happens silently — there is no email and no dashboard banner, so check the Webhooks tab if events stop arriving.
Webhook payload
Message payloads include an additive event key, message.inbound or message.outbound. No other message fields changed. The direction field still indicates whether the message was inbound or outbound. Call payloads are documented at Inbound FaceTime calls.
event"message.inbound" | "message.outbound"RequiredmessagestringRequireddestinationstringRequiredreceivedAtstringRequireddirectionstringRequiredmessageIdnumberRequiredguidstringRequiredlinePhoneNumberstringRequiredcontactPhoneNumber, dateReceived (a legacy alias for receivedAt), hubspotContactId (number), and hubspotContactIdText (the same id as a string). Those webhooks have no inbound/outbound toggles and are not covered by the auto-disable behaviour described above.