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

# Webhooks Overview

> Get notified in real time when bookings, listings, and reviews change

Webhooks push events from Way to your systems as they happen - a booking confirmed, cancelled, or rescheduled; a listing published; a review submitted - so you don't have to poll the API.

## How delivery works

When a subscribed event occurs, Way sends an HTTP `POST` to your configured URL:

```json theme={null}
{
  "event": "booking.completed",
  "payload": { ... }
}
```

* **`event`** identifies the event type; **`payload`**'s shape depends on it - see the [event catalog](/webhooks/events/overview).
* If you configured a **secret**, the request carries an `X-Way-Signature` header you should verify - see [Verify signatures](/webhooks/verify-signatures).
* Your endpoint has **10 seconds** to respond with a `2xx`. Failures are retried - see [Delivery and retries](/webhooks/delivery-and-retries).
* Webhooks are managed in the **Way dashboard**, not through the API - see [Setup](/webhooks/setup).

## Events

| Event                                                                     | Fires when                                                      |
| ------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [`booking.completed`](/webhooks/events/booking-completed)                 | A booking is confirmed                                          |
| [`booking.modified`](/webhooks/events/booking-modified)                   | A booking's details change                                      |
| [`booking.rescheduled`](/webhooks/events/booking-rescheduled)             | A booking moves to a different session                          |
| [`booking.cancelled`](/webhooks/events/booking-cancelled)                 | A booking is fully or partially cancelled                       |
| [`booking.refunded`](/webhooks/events/booking-refunded)                   | A booking is fully or partially refunded                        |
| [`experience.published`](/webhooks/events/experience-published)           | An experience is published                                      |
| [`listing.published`](/webhooks/events/listing-published)                 | A listing is published                                          |
| [`listing.unpublished`](/webhooks/events/listing-unpublished)             | A listing is unpublished                                        |
| [`review.completed`](/webhooks/events/review-completed)                   | A guest submits a review                                        |
| [`financialReport.updated`](/webhooks/events/financialreport-updated)     | Financial report rows change (booking completed, refunded, ...) |
| [`financialReportV2.updated`](/webhooks/events/financialreportv2-updated) | Financial report rows change (v2 report format)                 |

## A typical integration

1. [Set up a webhook](/webhooks/setup) in the dashboard pointing at your endpoint, with a secret.
2. [Verify the signature](/webhooks/verify-signatures) on every delivery, respond `200` fast, and process asynchronously.
3. Use `booking.*` events to keep your systems in sync, fetching full records via the [Bookings API](/api-reference/bookings/get-bookings) when you need more than the payload carries.
4. [Test locally](/webhooks/testing) by triggering real events on staging.
