> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.nowbookit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Receive real-time event notifications from NowBookIt when bookings and gift cards change

## How NowBookIt webhooks work

NowBookIt **pushes events to your system** when things happen — a booking is created, updated, or a gift card is redeemed. You register a callback URL for each event type, and NowBookIt will `POST` a JSON payload to that URL whenever the event fires.

This eliminates the need to poll the API for changes and keeps your system in sync in real time.

<Note>
  These are **outbound webhooks** — NowBookIt calls your endpoint. If you need to push events *to* NowBookIt, see [Partner Inbound Webhooks](/ipos/partner-inbound/index).
</Note>

***

## Supported events

| Event                 | Trigger                                                   |
| --------------------- | --------------------------------------------------------- |
| `BOOKING_CREATED`     | A new booking is created at the venue                     |
| `BOOKING_UPDATED`     | An existing booking is modified (time, pax, status, etc.) |
| `GIFTCARDS_CREATED`   | A new gift card is issued                                 |
| `GIFTCARDS_UPDATED`   | A gift card record is modified                            |
| `GIFTCARDS_CANCELLED` | A gift card is cancelled                                  |
| `GIFTCARDS_REDEEMED`  | A gift card is redeemed                                   |

***

## Payload structure

All webhook payloads share the same envelope structure. The `data` object varies by event category.

### Booking events (`BOOKING_CREATED`, `BOOKING_UPDATED`)

```json theme={null}
{
  "eventType": "BOOKING_CREATED",
  "data": {
    "bookingId": "bk_abc123",
    "locationId": "loc_xyz789"
  }
}
```

After receiving a booking event, use the `bookingId` to fetch the full booking details from [GET /Bookings/{id}](/bookings/get).

### Gift card events (`GIFTCARDS_*`)

```json theme={null}
{
  "eventType": "GIFTCARDS_REDEEMED",
  "data": {
    "cardNumber": "GC-12345",
    "locationId": "loc_xyz789"
  }
}
```

After receiving a gift card event, use the `cardNumber` to fetch full details from [GET /GiftCards/{cardNumber}](/gift-cards/get).

***

## Webhook security

NowBookIt does not currently sign outbound webhook payloads with an HMAC header. To secure your webhook endpoint:

* **Allowlist NowBookIt IP addresses** — contact [platform.integrations@nowbookit.com](mailto:platform.integrations@nowbookit.com) for the current IP range
* **Validate the payload** — always re-fetch the resource using the ID in the payload rather than trusting payload data directly
* **Use HTTPS** — your callback URL must be HTTPS

***

## Retry behaviour

If your endpoint returns a non-`2xx` status code, NowBookIt will retry delivery. Ensure your endpoint:

1. Returns `200` promptly (ideally within 5 seconds)
2. Processes the event asynchronously if the work takes longer
3. Is idempotent — the same event may be delivered more than once

***

## Managing webhooks

Use the following endpoints to manage your webhook subscriptions:

<CardGroup cols={2}>
  <Card title="List Webhooks" icon="list" href="/ipos/webhooks/list">
    View all active webhook subscriptions for your location.
  </Card>

  <Card title="Create Webhook" icon="plus" href="/ipos/webhooks/create">
    Subscribe to a new event type with a callback URL.
  </Card>

  <Card title="Get Webhook" icon="magnifying-glass" href="/ipos/webhooks/get">
    Retrieve a specific webhook subscription by event type.
  </Card>

  <Card title="Update Webhook" icon="pen" href="/ipos/webhooks/update">
    Change the callback URL for an existing subscription.
  </Card>

  <Card title="Delete Webhook" icon="trash" href="/ipos/webhooks/delete">
    Remove a webhook subscription.
  </Card>
</CardGroup>
