Docs/Webhooks

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

  1. You register a webhook URL and select which event types to subscribe to
  2. When an event occurs (e.g. a new reservation is created), Repull sends an HTTP POST to your URL
  3. The request body contains the full event payload with all relevant data
  4. Your server verifies the HMAC-SHA256 signature and processes the event
  5. Return a 2xx status within 5 seconds to acknowledge receipt

Available Events

EventDescription
reservation.createdA new reservation was created
reservation.updatedReservation details changed (dates, guests, status)
reservation.cancelledA reservation was cancelled
message.receivedA new guest message was received
message.sentA message was sent to a guest
property.updatedProperty details or availability changed
sync.completedA PMS sync cycle completed
sync.failedA 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