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

# Webhook event catalog

> Every Get2Dial webhook event you can subscribe to, with a real example payload shape shown for each one.

Nine event types are available to subscribe to. Every payload includes `tenant_id` and
`trace_id` for correlating events from the same call.

## Call events

### `call.originated`

Fires when a call origination starts.

```json theme={null}
{
  "tenant_id": "...",
  "call_id": "...",
  "trace_id": "...",
  "direction": "outbound",
  "caller_id": "+14155550100",
  "destination": "+14155550101",
  "node_id": "...",
  "timestamp": "2026-08-05T14:30:00Z",
  "variables": {}
}
```

### `call.answered`

Fires when a call is answered.

```json theme={null}
{
  "tenant_id": "...",
  "call_id": "...",
  "trace_id": "...",
  "answered_by": "agent_id",
  "timestamp": "2026-08-05T14:30:05Z"
}
```

`answered_by` is one of `agent_id` (an agent's ID), `ivr`, or `ai_agent`.

### `call.bridged`

Fires when two call legs are connected.

```json theme={null}
{
  "tenant_id": "...",
  "call_id": "...",
  "trace_id": "...",
  "leg_a_id": "...",
  "leg_b_id": "...",
  "timestamp": "2026-08-05T14:30:06Z"
}
```

### `call.hangup`

Fires when a call ends.

```json theme={null}
{
  "tenant_id": "...",
  "call_id": "...",
  "trace_id": "...",
  "hangup_cause": "NORMAL_CLEARING",
  "duration_ms": 125000,
  "timestamp": "2026-08-05T14:32:11Z"
}
```

### `call.recording`

Fires when a recording is saved.

```json theme={null}
{
  "tenant_id": "...",
  "call_id": "...",
  "trace_id": "...",
  "recording_url": "...",
  "duration_ms": 125000,
  "format": "wav",
  "size_bytes": 2004480,
  "timestamp": "2026-08-05T14:32:12Z"
}
```

### `call.dtmf`

Fires per keypress during a live call. Delivered at-most-once — not retried like other
events, since a missed keypress isn't worth a retry storm.

```json theme={null}
{
  "tenant_id": "...",
  "call_id": "...",
  "trace_id": "...",
  "digit": "1",
  "duration_ms": 120,
  "timestamp": "2026-08-05T14:30:20Z"
}
```

### `call.amd_result`

Fires when answering machine detection completes.

```json theme={null}
{
  "tenant_id": "...",
  "call_id": "...",
  "trace_id": "...",
  "result": "human",
  "timestamp": "2026-08-05T14:30:04Z"
}
```

`result` is one of `human`, `machine`, `uncertain`, or `no_answer`.

## Campaign events

### `campaign.lead_state_changed`

Fires when a lead moves between states (fresh, attempted, contacted, closed) — see
[Lead fields](/outbound/leads/lead-fields).

### `campaign.abandoned`

Fires when a connected call is abandoned — no agent became available before the connect
window elapsed.

<Note>
  Field-level payload examples for the two campaign events above aren't published yet — check
  back, or capture one from a real delivery in your own test webhook.
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Webhooks overview" href="/developers/webhooks/overview" />

  <Card title="Verify signatures" href="/developers/webhooks/verify-signatures" />
</CardGroup>
