> ## 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.

# Ingest payload schema

> Native JSON shapes accepted by Airlead source ingest webhooks.

# Ingest payload schema

Native schema (when no published mapping is applied).

## Lead object

| Field                       | Type           | Required | Notes                                                                                          |
| --------------------------- | -------------- | -------- | ---------------------------------------------------------------------------------------------- |
| `externalId`                | string         | no       | 1–128 chars; idempotency key                                                                   |
| `firstName`                 | string         | yes      |                                                                                                |
| `lastName`                  | string         | yes      |                                                                                                |
| `email`                     | string         | no       | email or empty string                                                                          |
| `phone`                     | string         | no       |                                                                                                |
| `street`                    | string         | no       |                                                                                                |
| `houseNumber`               | string         | no       |                                                                                                |
| `postalCode`                | string         | no       |                                                                                                |
| `city`                      | string         | no       |                                                                                                |
| `country`                   | string         | no       |                                                                                                |
| `consentStatus`             | string         | no       |                                                                                                |
| `legalBasis`                | string         | no       |                                                                                                |
| `consentCapturedAt`         | string         | no       |                                                                                                |
| `consentTextVersion`        | string         | no       |                                                                                                |
| `capturedByExternalId`      | string         | no       |                                                                                                |
| `capturedByName`            | string         | no       |                                                                                                |
| `capturedByTeam`            | string         | no       |                                                                                                |
| `capturedAt`                | string         | no       |                                                                                                |
| `captureMethod`             | string         | no       |                                                                                                |
| `capture`                   | object         | no       | nested capture metadata                                                                        |
| `request` / `requests`      | object / array | no       | interest payload(s)                                                                            |
| `productSlug` / `productId` | string         | no       |                                                                                                |
| `routingReady`              | boolean        | no       |                                                                                                |
| `triggerAutoDelivery`       | boolean        | no       | Requests Delivery 1.0 evaluation when `true`; effective channel and buyer settings still apply |
| `fieldValues`               | object         | no       | string map                                                                                     |

### Nested `capture`

`capturedByExternalId`, `capturedByName`, `capturedByTeam`, `capturedAt`, `captureMethod`, `metadata`.

### Nested `request`

`productSlug`, `productId`, `routingReady`, `triggerAutoDelivery`, `fieldValues`.

## Accepted top-level shapes

### 1. Flat lead

```json theme={null}
{ "firstName": "Alex", "lastName": "Example", "productSlug": "heat-pump" }
```

### 2. Person + interests (channel)

```json theme={null}
{
  "externalId": "ext-1",
  "person": {
    "firstName": "Alex",
    "lastName": "Example",
    "email": "alex@example.com"
  },
  "interests": [{ "productSlug": "heat-pump", "fieldValues": { "city_zone": "north" } }],
  "triggerAutoDelivery": false
}
```

Use `false` while validating a new source. Enable the flag only after a manual test delivery succeeds and Delivery 1.0 is configured for the channel.

### 3. Batch

```json theme={null}
{
  "leads": [
    { "firstName": "A", "lastName": "One" },
    { "firstName": "B", "lastName": "Two" }
  ]
}
```

Constraints: `leads` min 1, max **100**.
