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

# Outbound delivery

> Receive and acknowledge generic buyer webhook deliveries from Airlead.

# Outbound delivery

When Airlead delivers an interest to a generic buyer webhook, it sends an HTTPS `POST` request. Return a `2xx` response only after your system has durably accepted the event.

## Event example

The exact blocks can vary with the buyer's payload configuration.

```json theme={null}
{
  "event": "lead.delivered",
  "transactionId": "txn_...",
  "deliveryChannel": "webhook",
  "leadRequestId": "...",
  "leadId": "...",
  "deliveryMode": "multi",
  "sentAt": "2026-07-12T10:00:00.000Z",
  "buyer": { "id": "...", "name": "Acme Buyer" },
  "product": { "id": "...", "name": "Heat pump", "slug": "heat-pump" },
  "pricing": {
    "buyerPrice": 80,
    "supplierCost": 24,
    "marginAmount": 56
  },
  "lead": {
    "firstName": "Max",
    "lastName": "Mustermann",
    "email": "max@example.com",
    "phone": "+49170",
    "street": "Beispielstrasse",
    "houseNumber": "12",
    "postalCode": "40210",
    "city": "Duesseldorf",
    "country": "DE"
  },
  "fieldValues": {
    "future_heating": "Wärmepumpe"
  }
}
```

## Required receiver behavior

1. Validate the request according to your agreed webhook authentication.
2. Parse the JSON body.
3. Deduplicate using `transactionId`.
4. Store the event durably.
5. Return `2xx` promptly.
6. Process slower CRM or workflow actions asynchronously.
7. Use the same `transactionId` for lifecycle callbacks.

If the same transaction arrives again, return success without creating another lead in your system.

## Payload configuration

Markets operators can configure which payload blocks are included. Never assume an optional block is present unless your buyer configuration requires it.

Before production:

* send a synthetic delivery from Airlead
* verify field names and value formats
* confirm authentication headers
* test duplicate delivery handling
* test temporary `5xx` recovery
* verify that a lifecycle callback updates the correct transaction

## Responses

| Response | Meaning to Airlead                                                           |
| -------- | ---------------------------------------------------------------------------- |
| `2xx`    | Delivery accepted by the buyer system                                        |
| `4xx`    | Request is invalid or not authorized; retrying unchanged is unlikely to help |
| `5xx`    | Temporary buyer failure; the delivery may be retried                         |

Technical acceptance does not replace commercial confirmation. Report acceptance, rejection, Storno, and payout through the [partner lifecycle](/developers/partner-lifecycle).

Full field list: [Outbound `lead.delivered` payload](/api-reference/misc/outbound-payload)
