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

# Receive Webhook

> Start a workflow from an incoming webhook request, and use its payload inside the flow.

## What is this?

**Receive Webhook** starts a workflow whenever an external system sends a request to the workflow's webhook URL — an order placed in your store, a form submitted on your site, a status update from another tool. It's how automations react to events that happen outside the conversation.

## How to use it

<Steps>
  <Step title="Create the workflow">
    Go to **Automation → Create Automation**, choose the channel, and pick **Receive Webhook** as the **Trigger Type**. See [Create a Workflow](/workspace/automation/create-a-workflow).
  </Step>

  <Step title="Copy the webhook URL">
    The trigger gives you a unique URL for this workflow. Add it to the external system that should call it.
  </Step>

  <Step title="Use the payload in later steps">
    Whatever the request sends becomes available as variables — for example `{{webhook.order.amount}}` — for use in messages, conditions, and updates. See [Variables](/workspace/automation/steps/overview#variables-filling-in-details-automatically).
  </Step>

  <Step title="Test, then activate">
    Send a sample request (or trigger the real event once) and check the result in [Inbox](/workspace/inbox/overview) and [Analytics](/workspace/analytics), then activate — see [Manage Live Flows](/workspace/automation/manage-live-flows).
  </Step>
</Steps>

### Tips

* **Send only what you need.** A smaller, well-shaped payload is easier to map into variables and debug.
* **Route by payload with Condition Branch.** One webhook trigger can serve several outcomes — for example different order statuses — by branching on a field in the payload.

## Troubleshooting / Technical Notes

* **The flow never runs.** Check that it's **Active** and that the external system is calling the correct webhook URL for this workflow.
* **A variable shows `{{…}}` instead of a value.** The field name doesn't match what the payload actually sent — check the request body and the variable name.
* **The flow runs on every request, even bad ones.** Add a **Condition Logic** step early in the flow to validate the payload before acting on it.

## Related docs

* [Triggers](/workspace/automation/triggers/overview)
* [Builder Steps](/workspace/automation/steps/overview)
* [Create a Workflow](/workspace/automation/create-a-workflow)
* [Manage Live Flows](/workspace/automation/manage-live-flows)
