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

# Send webhook action

> Send an HTTP request to any external URL from your workflow. Connect Nedzo to CRMs, analytics platforms, automation tools, or custom backends via webhooks.

Send an HTTP request to any URL. Use this to connect Nedzo to services that don't have a native integration — CRMs, analytics tools, automation platforms, or your own backend.

## Configuration

| Field   | Required | Default | Description                                                              |
| ------- | -------- | ------- | ------------------------------------------------------------------------ |
| URL     | Yes      | —       | The endpoint to send the request to. Supports `{{variables}}`.           |
| Method  | Yes      | POST    | HTTP method: GET, POST, PUT, PATCH, or DELETE.                           |
| Headers | No       | —       | Custom headers as key-value pairs. Supports `{{variables}}` in values.   |
| Body    | No       | —       | Request body for POST, PUT, PATCH, and DELETE. Supports `{{variables}}`. |

## Variables

Use variables in the URL, headers, and body:

```json theme={null}
{
  "contact_name": "{{firstName}} {{lastName}}",
  "phone": "{{phone}}",
  "email": "{{email}}",
  "call_outcome": "{{outcome}}"
}
```

When the body is valid JSON, variables are substituted in a JSON-safe way (special characters are properly escaped).

## Output

| Field        | Description                   |
| ------------ | ----------------------------- |
| `statusCode` | The HTTP response status code |
| `body`       | The response body (max 1 MB)  |
| `headers`    | Response headers              |

The response data is available to subsequent steps. For example, if the webhook returns `{"orderId": "123"}`, you can reference `{{nodeId.body.orderId}}` in later actions.

## Example: Send call data to a CRM

```json theme={null}
{
  "method": "POST",
  "url": "https://your-crm.com/api/calls",
  "headers": {
    "Authorization": "Bearer your-api-key",
    "Content-Type": "application/json"
  },
  "body": {
    "contact_name": "{{firstName}} {{lastName}}",
    "phone": "{{phone}}",
    "email": "{{email}}",
    "outcome": "{{outcome}}"
  }
}
```

## Common use cases

* **CRM updates** — Push call outcomes to Salesforce, HubSpot, or any CRM with an API
* **Zapier / Make** — Trigger Zapier Zaps or Make scenarios via webhook URL
* **n8n workflows** — Trigger n8n automations from Nedzo
* **Custom logging** — Send conversation data to your own analytics backend
* **Slack alternatives** — Post to any service that accepts incoming webhooks

## Limits

| Limit              | Value                   |
| ------------------ | ----------------------- |
| Request timeout    | 30 seconds              |
| Max response size  | 1 MB                    |
| Retries on failure | 3 (exponential backoff) |

5xx, 408, and 429 responses are automatically retried. 4xx responses fail immediately.

## Security

* Only `http://` and `https://` URLs are allowed
* Requests to private/internal IP addresses are blocked (localhost, 10.x.x.x, 172.16.x.x, 192.168.x.x, etc.)
* Always use HTTPS for endpoints that require authentication
