# Overview

> Real-time notifications for your Firecrawl operations

import CrawlWebhookCURL from "/snippets/v2/crawl-webhook/base/curl.mdx";
import BatchScrapeWebhookCURL from "/snippets/v2/batch-scrape-webhook/base/curl.mdx";
import WebhookConfigBasic from "/snippets/v2/webhook-config/basic/json.mdx";

Get notified the moment a crawl, batch scrape, extract, agent job, or monitor check starts, progresses, or finishes. Instead of polling for status, you provide an HTTPS endpoint and Firecrawl delivers events to it in real time.

## Supported Operations

| Operation    | Events                                                  |
| ------------ | ------------------------------------------------------- |
| Crawl        | `started`, `page`, `completed`                          |
| Batch Scrape | `started`, `page`, `completed`                          |
| Extract      | `started`, `completed`, `failed`                        |
| Agent        | `started`, `action`, `completed`, `failed`, `cancelled` |
| Monitor      | `check.completed`                                       |

See [Event Types](/webhooks/events) for full payload details and examples.

## Configuration

Add a `webhook` object to your request:

<WebhookConfigBasic />

| Field      | Type   | Required | Description                           |
| ---------- | ------ | -------- | ------------------------------------- |
| `url`      | string | Yes      | Your endpoint URL (HTTPS)             |
| `headers`  | object | No       | Custom headers to include             |
| `metadata` | object | No       | Custom data included in payloads      |
| `events`   | array  | No       | Event types to receive (default: all) |

## Usage

### Crawl with Webhook

<CrawlWebhookCURL />

### Batch Scrape with Webhook

<BatchScrapeWebhookCURL />

## Timeouts & Retries

Your endpoint must respond with a `2xx` status within **10 seconds**.

If delivery fails (timeout, non-2xx, or network error), Firecrawl retries automatically:

| Retry | Delay after failure |
| ----- | ------------------- |
| 1st   | 1 minute            |
| 2nd   | 5 minutes           |
| 3rd   | 15 minutes          |

After 3 failed retries, the webhook is marked as failed and no further attempts are made.
