Webhooks

TL;DR

POST /v1/webhookswith a URL and event list. Repull sends HMAC-SHA256 signed JSON payloads on reservation changes, guest messages, listing & calendar updates, payments, and account events.

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 arrived from any connected channel or direct booking
reservation.updatedDates, guest count, status, or pricing changed on a reservation
reservation.cancelledA reservation was cancelled by the guest, host, or platform
reservation.message.receivedA new inbound guest message arrived on a reservation thread
listing.createdA new property was synced from a connected PMS or channel
listing.updatedListing content, amenities, photos, or status changed
listing.deletedA property was removed from Repull or the upstream PMS
calendar.updatedAvailability or pricing for a listing was updated
account.createdAn OAuth or API credential connection was completed
account.disconnectedA connection was revoked, expired, or rejected upstream
ai.operation.completedAn async AI run (review response, message draft, pricing) finished
ai.operation.failedAn async AI run terminated with an error and will not retry
payment.completedA guest payment was successfully captured
payment.refundedA previous payment was refunded in part or in full
repull.pingA diagnostic delivery used to verify endpoint reachability

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 "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