Webhooks
TL;DR
POST /v1/webhooks with a URL and event list. Repull sends HMAC-SHA256 signed JSON payloads on reservation changes, messages, sync events, and account updates.
Receive real-time HTTP POST notifications when events happen in connected PMS accounts. Instead of polling the API, webhooks push data to your server the moment something changes.
How It Works
- You register a webhook URL and select which event types to subscribe to
- When an event occurs (e.g. a new reservation is created), Repull sends an HTTP POST to your URL
- The request body contains the full event payload with all relevant data
- Your server verifies the HMAC-SHA256 signature and processes the event
- Return a 2xx status within 5 seconds to acknowledge receipt
Available Events
| Event | Description |
|---|---|
reservation.created | A new reservation was created |
reservation.updated | Reservation details changed (dates, guests, status) |
reservation.cancelled | A reservation was cancelled |
message.received | A new guest message was received |
message.sent | A message was sent to a guest |
property.updated | Property details or availability changed |
sync.completed | A PMS sync cycle completed |
sync.failed | A PMS sync cycle failed |
See Event Types for the full payload schema of each event.
Quick Example
Create a webhook subscription that listens for new and updated reservations:
curl -X POST https://api.repull.dev/v1/webhooks \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "X-Workspace-Id: YOUR_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.com/webhooks",
"events": ["reservation.created", "reservation.updated"]
}'Security
Every delivery is signed with HMAC-SHA256 using a per-subscription signing secret. Always verify the X-Repull-Signature header before processing events. See Verify Signatures for implementation examples in Node.js and Python.
Reliability
Failed deliveries are automatically retried up to 5 times with exponential backoff. You can also manually replay any delivery from the last 7 days. See Retries & Replay for details.
AI