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

# Webhooks overview

> Destinations, events, formats, the envelope, the headers, and what TIKT guarantees.

## Destinations

A **destination** is an address that receives TIKT's events. A workspace has up to **10**. Each one listens to:

* **All events** — every event TIKT sends today, and the ones it adds later;
* or a list of [events](/webhooks/events) you pick;
* or none: a connection that only receives what your [workflows](/webhooks/workflows) send it (`lead.matched`).

A destination sends **every** event it listens to, for every lead: it doesn't filter leads. To send only some leads — a score of 4 or more, a role that matches — use a [workflow](/webhooks/workflows).

You can turn a destination off at any time: nothing is sent and nothing is lost. Turn it back on, and the events since are sent.

## Formats

| Format | What your endpoint receives | For |
| - | - | - |
| **One request per event** (`single`) | one event per request | Zapier, Make, Clay, Slack |
| **Batches** (`batch`) | up to 100 events per request, as a list | n8n, your own code — see [Batches](/webhooks/batches) |

## The envelope

Every event has the same envelope; only `data` changes with its [type](/webhooks/events).

```json theme={null}
{
  "id": "0b8f7a52-3c1d-4e2a-9f6b-7d5c4b3a2e10",
  "type": "lead.created",
  "created_at": "2026-10-06T08:10:07Z",
  "api_version": "2026-10-01",
  "workspace_id": "6c1f0e2a-9b8d-4e7f-8a6b-5c4d3e2f1a0b",
  "data": { "lead": { "…": "…" }, "signal": { "…": "…" } }
}
```

| Field | Meaning |
| - | - |
| `id` | The event's identifier. The same event sent twice has the same `id`. |
| `type` | What happened, for example `lead.created`. |
| `created_at` | When it happened, ISO 8601 in UTC. |
| `api_version` | The version of the payload, set on the destination (see [Versioning](/webhooks/versioning)). |
| `workspace_id` | Your workspace. |
| `data` | What the event carries: the [objects](/webhooks/objects) it is about. |

The body is compact JSON in UTF-8, with `content-type: application/json`.

## Headers

| Header | Value |
| - | - |
| `content-type` | `application/json` |
| `user-agent` | `TIKT-Webhooks/1` |
| `webhook-id` | The message: the event's `id` in `single` format, the batch's `id` in `batch` format. The same on every attempt and on a resend. |
| `webhook-timestamp` | When this attempt was sent, in Unix seconds. |
| `webhook-signature` | The signature: `v1,<base64>` — see [Verify signatures](/webhooks/signatures). |
| `x-tikt-event` | The event's type, or `batch`. Handy for a filter in Zapier or Make. |
| Your headers | Up to three, set on the destination, for example `Authorization`. They never replace the ones above. |

## Three guarantees

* **At least once.** An event can arrive twice — after a timeout, for instance. Use `webhook-id` (or the event's `id`) to ignore a duplicate.
* **No order between events.** Two events can arrive in a different order than they happened. Inside a batch, events are in the order TIKT wrote them.
* **The whole object, as it is now.** Each event carries the complete objects, as they are when the request is sent: your tool has nothing to fetch, and a resend carries today's data.

## When events arrive

TIKT sends events **within minutes**: what a cycle of the agent finds goes out a few minutes after the cycle; what you do in the console (a list, a status, a pause), within five minutes. A test and a resend go out right away.

Your endpoint has **15 seconds** to answer with a `2xx` status. Anything else is retried on a schedule, and a destination that keeps failing is turned off after three days — see [Delivery and retries](/webhooks/delivery).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.