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

# Start a Workflow from Another App with a Webhook

> Give a workflow its own web address, protect it with a secret, have another app send to it, and see what arrived

A webhook is a web address that another app sends information to, such as an order form, a booking tool or your shop. When it does, your workflow starts and can use what arrived: a name, an order, an amount.

This guide builds a Northwind workflow that turns each wholesale order from an outside order form into a packing task for the team. A command typed in a terminal stands in for the order form.

## Add the webhook

**1. Create a blank workflow**

Click **Workflows** in the left rail, then **New Workflow**. Type a name, then click **Create Blank Workflow**. It starts switched off.

**2. Add the Inbound Webhook trigger**

Click the gear at the top right, then **Browse All Nodes**. Type "webhook" and click **Inbound Webhook**, the one that reads "Run the workflow when a form or external service POSTs to its webhook URL".

**3. Give it a path and a secret**

In the trigger's settings, type a **Path**, such as `wholesale-orders`. It goes on the end of the address, so you can tell your webhooks apart.

Under **Authentication**, choose a **Type**. **Bearer Token** is the simplest: the other app sends a secret with every delivery, and anything sent without it is refused. With **None**, anyone who finds the address can start your workflow.

![The trigger's settings: Path wholesale-orders, outlined, and Authentication Type Bearer Token, outlined, with the line Callers send an Authorization: Bearer header](https://mintcdn.com/locusdigital/jCMzgJ5S09cflH-5/images/how-tos/workflows/wh-01-path-and-key-closeup.webp?fit=max\&auto=format\&n=jCMzgJ5S09cflH-5\&q=85\&s=67c24cd2bd754356fc95bc2a2cc56bbc)

The path, and a Bearer Token

**4. Create the address**

Click **Create Webhook URL**. The **Production URL** is the address the other app sends to. Copy it, and copy the token in the yellow box: it is shown only once. Then click **I have saved it**.

![Webhook URL: the Production URL ending in wholesale-orders, outlined, the Test URL, Apply authentication and Rotate token, and the box Save this bearer token now. It will not be shown again, outlined. The address and token are blurred](https://mintcdn.com/locusdigital/jCMzgJ5S09cflH-5/images/how-tos/workflows/wh-02-url-and-token-closeup.webp?fit=max\&auto=format\&n=jCMzgJ5S09cflH-5\&q=85\&s=27bbf37aa7ba14c2885170b7e742accc)

The address and the token (both blurred here)

Lost the token? Click **Rotate token** for a new one, and give it to the other app.

Under **What arrives here**, **Deliveries are** is set to **Leads and form submissions**: each delivery is also saved in Forms as a lead, and your team gets the usual new-submission email. If the app sends data for a dashboard rather than leads, choose one of your Your data tables there instead.

## Use what arrives

Add the next step the same way (gear, **Browse All Nodes**). Here it is **Create CRM Task**. What the other app sends arrives under the webhook's `payload`. The **{ }** button next to a field lists `payload`, but not the fields inside it, so add those yourself:

1. Click **{ }** and **Insert** next to `payload`. A chip appears in the field.
2. Click the chip. Its box shows the whole variable, such as `{{af07ac56-….output.payload}}`.
3. Type that variable with the field's name added before the closing braces, such as `{{af07ac56-….output.payload.cafe}}`, then remove the chip.

![Create CRM Task's Subject, outlined: Pack, then Inbound Webhook payload.bags, bags of, Inbound Webhook payload.coffee, for, Inbound Webhook payload.cafe](https://mintcdn.com/locusdigital/jCMzgJ5S09cflH-5/images/how-tos/workflows/wh-03-use-what-arrives-closeup.webp?fit=max\&auto=format\&n=jCMzgJ5S09cflH-5\&q=85\&s=fa1b75be359daacd0d79137ab06a684d)

The task's subject, filled in from each order

Connect the trigger to the step (drag from the dot on the right of the trigger to the dot on the left of the step), then click **Save Workflow**.

## Switch it on

A webhook runs your workflow only while it is switched on. Click the switch at the top so it reads **Enabled**.

![The workflow header with the switch reading Enabled, outlined, beside Runs](https://mintcdn.com/locusdigital/jCMzgJ5S09cflH-5/images/how-tos/workflows/wh-04-switch-on-closeup.webp?fit=max\&auto=format\&n=jCMzgJ5S09cflH-5\&q=85\&s=9bdc02117191ffa96d154a687aaee6e6)

Switched on

## Send to it from the other app

In the other app's webhook settings, paste the **Production URL**, choose POST, send the body as JSON, and add a header named `Authorization` whose value is `Bearer` followed by a space and your token. Most apps have a box for each.

Here is the same delivery sent from a terminal, with the address and token left out:

```bash theme={null}
curl -X POST "<your Production URL>" \
  -H "Authorization: Bearer <your token>" \
  -H "Content-Type: application/json" \
  -d '{"cafe": "Fernwood Bakery", "contact": "Ava Larsen", "email": "ava.larsen@example.com", "coffee": "Alberta Street Espresso", "bags": 12}'
```

The answer starts with `"success":true`. A delivery without the right token is refused.

## See what arrived

**1. Open the run**

In the workflow, click **Runs**. Each delivery is a run marked **Webhook**. Click it, then click a step. Its **Output** shows what the other app sent, under `body`.

![Run History with a Completed Webhook run, outlined, and the Create CRM Task step, Completed, with its Output: body with bags 12, cafe Fernwood Bakery, email ava.larsen@example.com, coffee Alberta Street Espresso and contact Ava Larsen, outlined](https://mintcdn.com/locusdigital/jCMzgJ5S09cflH-5/images/how-tos/workflows/wh-05-the-run-closeup.webp?fit=max\&auto=format\&n=jCMzgJ5S09cflH-5\&q=85\&s=c10a166be18ee7d4772c38faec615f7b)

The delivery, and what the task step received

**2. Check the result**

The task is on the team's list: **CRM**, then **Tasks**.

![The Task Queue with the new task Pack 12 bags of Alberta Street Espresso for Fernwood Bakery, No due date, outlined](https://mintcdn.com/locusdigital/jCMzgJ5S09cflH-5/images/how-tos/workflows/wh-06-the-task-closeup.webp?fit=max\&auto=format\&n=jCMzgJ5S09cflH-5\&q=85\&s=5119ba90c8b69ee7792991587ec9659f)

The packing task the order made

## Good to know

* **Switched off, it still answers.** While the workflow is off, a delivery gets a success answer and is saved with your form submissions, but the steps do not run, and nothing is run later when you switch it back on.
* **Keep the token secret.** Anyone with the address and the token can start the workflow. If it leaks, click **Rotate token** and give the new one to the other app.
* **A failed delivery never pauses the workflow,** so a flaky step cannot stop your orders coming in. To hear about failures, see [Get Told When a Workflow Fails, and Fix It](/how-tos/workflows/fix-a-failed-run.md).
* **More:** [Workflows](/integrations/workflows.md) and [See What a Workflow Did](/how-tos/workflows/see-what-a-workflow-did.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.