sync.error
Fired when a PMS/OTA data sync fails. Check the error field for details.
Payload
Every delivery uses the same outer envelope (event, eventId, apiVersion, timestamp, data). Dedupe on eventId — it stays stable across retries and replays, while the X-Repull-Delivery-Id header changes on every attempt.
{
"event": "sync.error",
"timestamp": "2026-04-04T03:05:00Z",
"data": {
"provider": "guesty",
"syncType": "incremental",
"error": "Authentication failed — token expired",
"retriesRemaining": 2
}
}Verifying signatures
Every delivery includes a timestamped X-Repull-Signature header of the form t=<unix_ts>,v1=<hex>, where v1 is HMAC-SHA256(signing_secret, `${t}.${raw_body}`). Verify it before processing — see Verify Signatures for full Node.js and Python examples.
Use the raw body
Sign the raw request body exactly as received, not a re-stringified JSON object. Re-serialisation can reorder keys or change whitespace and break the signature.
Example handler
if (event === 'sync.error') {
console.error('Sync failed:', data.provider, data.error)
if (data.retriesRemaining === 0) {
// Alert: connection may need re-authentication
}
}Tip: Acknowledge with a 2xx status within 10 seconds. Failed deliveries are retried up to 5 times with exponential backoff.Webhook reliability →
AI