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

# Quote Events

> quote.created, quote.updated, quote.deleted - real-time notifications for issued quotes

## Overview

Quote webhooks notify your application when a quote is issued, sent, accepted (manually or through electronic signature), canceled or deleted - the most requested trigger for staffing tools, provisional revenue tracking and document automation.

| Event                           | Triggered when                                                                              |
| ------------------------------- | ------------------------------------------------------------------------------------------- |
| `quote.created` <sup>Beta</sup> | A quote is issued (PDF generated) - including each new version of an existing quote         |
| `quote.updated` <sup>Beta</sup> | The quote lifecycle changes: sent, validated/signed, canceled, validity date or PDF updated |
| `quote.deleted` <sup>Beta</sup> | The quote is deleted                                                                        |

<Note>
  Quote events are currently in **beta**: the payload structure may still evolve before general availability.
</Note>

## Payload

The `data` field carries the **full quote payload**, identical to [`GET /quotes/{id}`](/api-reference/quotes) - amounts, lines, seller/account/contact blocks, `pdf_url`, `signature` included.

```json theme={null}
{
  "event": "quote.updated",
  "timestamp": 1756100000000,
  "venue_id": "venue123",
  "venues_group_id": null,
  "data": {
    "id": "fil_8Kj2Qp5RtXw",
    "number": "BS-2026-d42-v2",
    "status": "validated",
    "validated_at": 1756100000000,
    "valid_until": "2026-09-30",
    "amount_excl_tax": 250000,
    "amount_incl_tax": 300000,
    "booking_id": "3f6c1b2a-9d4e-4f7a-b0c8-2e5a7d9f1c3b",
    "signature": { "signed_at": 1756100000000, "signed_pdf_url": "https://..." }
  }
}
```

There is no dedicated `quote.validated` or `quote.sent` event: read `status` (and `signature` for e-signed quotes) on `quote.updated`. A quote accepted through electronic signature arrives as a `quote.updated` with `status: "validated"` and the `signature` block filled.

## Delivery semantics

* **A new version is a new quote.** Re-issuing a quote creates a new document (`-v2`, `-v3`... suffix in `number`): you receive a `quote.created` for it, and typically a `quote.updated` (`status: "canceled"`) for the previous version.
* Deliveries use the standard envelope, HMAC signature and retry policy - see [Webhooks introduction](/api-reference/webhooks/introduction) and [Security](/api-reference/webhooks/security).

## Typical integrations

* **Staffing / operations** (e.g. staff planners): on `quote.updated` with `status: "validated"`, read the quote `lines` to extract sold quantities (hours, headcount) and the booking dates via `booking_id` → [`GET /bookings/{id}`](/api-reference/bookings).
* **Provisional revenue**: accumulate `amount_excl_tax` of validated quotes by `service_start_date` month.
* **Document automation**: on `quote.updated` with `status: "sent"` or `"validated"`, fetch `pdf_url` and generate downstream documents without polling.
