conversation.updated
Fired when a new message is received in a guest conversation, or a conversation status changes.
Payload
Every delivery uses the same outer envelope (type, deliveryId, createdAt, data). Dedupe on deliveryId — retries reuse the same id.
{
"event": "conversation.updated",
"timestamp": "2026-04-04T15:45:00Z",
"data": {
"threadId": "thread_abc123",
"reservationId": "215906",
"platform": "airbnb",
"latestMessage": {
"sender": "guest",
"text": "What time can we check in?",
"sentAt": "2026-04-04T15:44:30Z"
}
}
}Verifying signatures
Every delivery includes an X-Repull-Signature header containing an HMAC-SHA256 of the raw request body computed with your subscription's signing secret. Verify it before processing — see Verify Signatures for full Node.js and Python examples.
Use the raw body
Verify the HMAC against the raw request body, not a re-stringified JSON object. Re-serialisation can reorder keys or change whitespace and break the signature.
Example handler
if (event === 'conversation.updated') {
const { latestMessage } = data
if (latestMessage.sender === 'guest') {
// Auto-respond or notify host
console.log('New guest message:', latestMessage.text)
}
}Tip: Acknowledge with a 2xx status within 5 seconds. Failed deliveries are retried up to 5 times with exponential backoff.Webhook reliability →
AI