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

# Signals Overview

> Subscribe to real-time signals — engagement, job changes, founder moves, and more

A **Signal** is something worth knowing the moment it happens. You subscribe by creating a **monitor**:

```
monitor = signal + watch + url
```

* **signal** — what kind of event (`post_engagement`). Browse them at [GET /signals](/api-reference/signals-catalog).
* **watch** — who to watch: the author's profile URL (one value or a list).
* **url** — your HTTPS endpoint (and optional `secret`).

```json theme={null}
{ "signal": "post_engagement", "watch": "https://www.linkedin.com/in/jane/", "url": "https://your-server.com/webhook" }
```

One API key can have many monitors. Create them with [POST /monitors](/api-reference/monitors-create).

## One envelope for every signal

Every signal is delivered with the **same envelope** — write one handler, one signature check, then branch on `signal`:

```json theme={null}
{
  "signal": "post_engagement",
  "event_type": "post_engagement",
  "target": { "type": "profile", "value": "ACoAA…" },
  "data": { /* signal-specific — see the catalog */ },
  "chunk": { "index": 1, "total": 1 },
  "delivered_at": "2026-06-12T10:47:18.000000+00:00"
}
```

| Field          | Meaning                                                                                     |
| -------------- | ------------------------------------------------------------------------------------------- |
| `signal`       | which signal fired                                                                          |
| `event_type`   | the sub-event (for `post_engagement`, also `post_engagement`)                               |
| `target`       | what the event is about (`null` for market-wide signals)                                    |
| `data`         | the signal-specific body — see each signal in the [catalog](/api-reference/signals-catalog) |
| `chunk`        | a large event is split across several webhooks; `index`/`total` let you reassemble          |
| `delivered_at` | ISO 8601                                                                                    |

## Verifying authenticity

When a monitor has a `secret`, each delivery is signed: header `X-Webhook-Signature: sha256=<hmac>` where `<hmac>` is `HMAC-SHA256(secret, raw_body)`. Recompute and compare.

## Delivery & retries

Deliveries retry on failure (up to 5 attempts, exponential backoff). A very active event is chunked so no single webhook is oversized.

<Note>
  Need full details on a person or company referenced in a signal? Pass the `profile_id` / id to [Enrich Profile](/api-reference/enrich-profile) or [Enrich Company](/api-reference/enrich-company).
</Note>
