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

# Webhooks overview

> Real-time event notifications for order state changes and Eagle Eye watch activity.

LMN sends webhooks to your registered URL on **server-side state changes and observed external events**. Partner-initiated API calls are confirmed by the API response and do not fire a duplicate webhook.

## Event families

| Family    | Event type                  | When it fires                                                             |
| --------- | --------------------------- | ------------------------------------------------------------------------- |
| Orders    | `order.status_changed`      | LMN-owned order lifecycle transitions.                                    |
| Orders    | `order.auction_rescheduled` | An auction source changes the scheduled auction date for an active order. |
| Orders    | `order.price_updated`       | A watched listing price changes while an order is still `placed`.         |
| Orders    | `order.re_auctioned`        | A vehicle tied to a terminal order appears again in a new auction round.  |
| Eagle Eye | `eagle_eye.match`           | A saved watch has additions, price changes, or removals.                  |

See [event types](/webhooks/event-types) for payload examples and per-event semantics.

## Order firing rules

| #  | Trigger                                                | By                             | Event type                    |
| -- | ------------------------------------------------------ | ------------------------------ | ----------------------------- |
| 1  | → `placed`                                             | Partner POST                   | —                             |
| 2  | `placed` → `cancelled`                                 | Partner DELETE                 | —                             |
| 3  | `placed` → `inspection_in_progress` (optional)\*\*     | LMN                            | ✅ `order.status_changed`      |
| 4  | `placed` → `acquiring` (skip inspection)               | LMN                            | ✅ `order.status_changed`      |
| 5  | `inspection_in_progress` → `inspection_ready`          | LMN                            | ✅ `order.status_changed`      |
| 6  | `inspection_ready` → `acquiring`                       | LMN                            | ✅ `order.status_changed`      |
| 7  | `inspection_ready` → `cancelled` (`inspection_failed`) | LMN                            | ✅ `order.status_changed`      |
| 8  | `acquiring` → `secured`                                | LMN                            | ✅ `order.status_changed`      |
| 9  | `acquiring` → `failed`                                 | LMN                            | ✅ `order.status_changed`      |
| 10 | `secured` → `export_processing`                        | LMN                            | ✅ `order.status_changed`      |
| 11 | `export_processing` → `in_transit`                     | LMN                            | ✅ `order.status_changed`      |
| 12 | `in_transit` → `customs`                               | Partner POST                   | —                             |
| 13 | `customs` → `delivered`                                | Partner POST                   | —                             |
| 14 | `placed` → `cancelled` (LMN auto)\*                    | LMN auto                       | ✅ `order.status_changed`      |
| 15 | `auction_date` shifts †                                | Source reschedule              | ✅ `order.auction_rescheduled` |
| 16 | `listing_price` shifts on `placed` †                   | Upstream price refresh         | ✅ `order.price_updated`       |
| 17 | Terminal vehicle re-listed †                           | Scraper match by license plate | ✅ `order.re_auctioned`        |

\* `cancellation_reason` is one of `auction_rescheduled_too_soon`, `auction_cancelled` (pre-acquiring), `seller_withdrew` (pre-acquiring).
\*\* Inspection is **optional** — `placed → acquiring` directly (row 4) remains valid for orders that skip inspection. `inspection_in_progress` and `inspection_ready` are LMN-owned; partners cannot set them.
† No status change — informational signal only.

## Eagle Eye firing rule

`eagle_eye.match` fires per saved watch when LMN observes at least one change worth notifying:

| Change          | Meaning                                                                                                              |
| --------------- | -------------------------------------------------------------------------------------------------------------------- |
| `additions`     | New vehicles match the watch's saved buying condition.                                                               |
| `price_changes` | Existing matches dropped enough to notify. Price increases do not emit this entry while the vehicle still qualifies. |
| `removals`      | Previously matched vehicles disappeared, completed auction, or no longer qualify.                                    |

Muted watches still collect matches but suppress webhook delivery. Paused watches do not collect new matches until resumed.

## Delivery model — fire-and-forget

On state transition, LMN enqueues the event and returns the API/admin response immediately. A background worker picks up pending events on the cron cadence, typically within the next minute. **The write path never blocks on webhook delivery.**

If your endpoint is slow or down, the order transition still completes immediately. Delivery is retried per the [retry policy](/webhooks/signing-and-retries).

## Pilot mode — webhooks optional

For pilot integrations, you may skip registering a webhook URL and rely on polling API reads instead. LMN still records events server-side for every qualifying transition; if no URL is registered, delivery is a no-op (recorded as `delivery_skipped` in the event log).

Post-pilot (production volume), webhooks become required — LMN cannot support polling at scale.

## Self-service event history

LMN exposes the event log for recovery and audit:

| Subject         | Endpoint                                      |
| --------------- | --------------------------------------------- |
| Order           | `GET /v1/orders/{id}/events`                  |
| Eagle Eye watch | `GET /v1/eagle-eye/watches/{watch_id}/events` |

Each entry includes delivery status, attempts, response code, and the payload LMN sent. Useful for "did I miss a webhook?" debugging without contacting LMN support.
