# Webhook

> Start a workflow from any service that can call a URL, with whatever it sends, and reply to it with a status code and a body.

Built-in step · 1 step. Web page: https://docs.lodol.com/docs/integrations/built-in/webhook

## Steps

### Reply to the caller

Answer the service that called this workflow's webhook URL, with the status code and body you choose. Without this step the caller gets a 200 as soon as the run starts; with it, the caller waits for your reply (up to a minute), so you can send back a result, a thank-you message, or a 4xx that tells it what was wrong. The run carries on after replying. Reply once per run: a second reply has nobody to go to. Workspace secrets in the reply are sent as ***.

**Inputs**

- Status code (`status_code`, number): The HTTP status to answer with: 200 for success, 201 for something created, 202 for accepted, 400 or 422 to refuse what was sent. From 200 to 599. Default: `200`.
- Response body (`body`, text): What to send back: text, or a value from an earlier step. An object or a list is sent as JSON; text is sent as it is. Leave empty to send no body.
- Headers (`headers`, object): Extra response headers. Headers that start with X- are sent as they are, and a Content-Type of application/xml or text/xml sends the body as XML. Any other header is left out, and the step says so.

**Outputs**: Whether the caller got the reply. A caller that had already been answered, or that gave up waiting, can't be replied to; the run carries on either way.

- `delivered` (true/false): Whether the reply reached the caller.
- `note` (text): What happened, in a sentence, and any headers the reply went without.
- `status_code` (number): The status code that was sent.

**Example output**

```json
{
  "delivered": true,
  "note": "Replied 200 to the caller.",
  "status_code": 200
}
```
