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

# Connect Zapier to Default by webhook or API

> Zapier connects to Default by webhook or through the public API, not natively, so a Zap starts a workflow through the Incoming Webhook or API trigger and a workflow starts a Zap with the Send to Webhook node.

Zapier connects to Default by webhook or through the Default API. Default has no native Zapier
integration: Zapier has no card on the **Connections** page. A Zap starts a Default workflow by sending
a request to a webhook URL or to the API, and a Default workflow starts a Zap with the
**Send to Webhook** node.

## How Zapier data flows to and from Default

| Direction | How it works | Default side |
| - | - | - |
| Zapier to Default, any JSON | A Zap step sends a JSON `POST` to a Default webhook URL. | [**Incoming Webhook** trigger](/workflows/triggers.md#incoming-webhook), authenticated with the [webhook secret](/settings/webhook-secret.md) |
| Zapier to Default, a lead to route | A Zap step calls the API with the lead's email and form field values, and gets back the workflow's outcome. | [**API** trigger](/workflows/triggers.md#api), called with [Fire a trigger](/api-reference/triggers/fire-a-trigger.md) |
| Default to Zapier | A workflow sends an HTTP request to the webhook URL of a Zap. | [**Send to Webhook** node](/workflows/steps-actions.md#send-to-webhook) |

## Choose between the webhook and the API

| | Incoming webhook | API trigger |
| - | - | - |
| Authentication | The workspace [webhook secret](/settings/webhook-secret.md) as `Authorization: Bearer` | An API key with `triggers:write`, which an admin creates in **Settings** → **API Keys** |
| Request body | Any JSON, up to 1 MB. You pick fields from a captured sample. | `email`, plus `responses` keyed by the field names of the trigger's **Connected Form** as of the workflow's last publish, and optional `context` |
| Response | `"accepted": true` | An `executionId` and the workflow's `outcome`: `scheduler` with a `schedulerUrl`, `redirect`, or `none` |
| Good for | Passing data from any app in the Zap into a workflow | Routing a lead from the Zap and using the booking link in a later Zap step |

The API allows 30 requests per minute per key, and a `429` response carries a `Retry-After` header. API
setup and request examples: [Route and book through the API](/api/route-and-book.md).

## Start a Default workflow from a Zap

**1. Add the Incoming Webhook trigger**

In **Workflows**, create a workflow and add the **Incoming Webhook** trigger. Under
**Connected Webhook**, select **Create new webhook**, or choose an existing webhook.

**2. Copy the URL and the secret**

Copy the **Ingestion URL**. Reveal and copy the **Bearer secret**. It is your workspace's
[webhook secret](/settings/webhook-secret.md), shared by every webhook in the workspace.

**3. Add a request step to the Zap**

In the Zap, add a step that sends a `POST` with a JSON body to the **Ingestion URL**, with the
header `Authorization: Bearer <secret>`. Map the values you need from earlier Zap steps into the
body.

**4. Capture a sample**

Select **Listen for test event**, then test the Zap step. For the next 5 minutes, Default saves the
first request it receives as the **Captured payload** and does not start the workflow with it. You
can also select **Paste a sample**, paste an example body, and select **Save sample**.

**5. Map the person or company (optional)**

Under **Identity mapping**, choose the field that holds the **Person email** or the
**Company domain**.

**6. Build, test, and publish**

Add the nodes that act on the data. Type `{{` to insert values from the captured payload. Select
**Test**, then **Run Test**, to try it. Select **Publish**, then check that the status next to
the [deployment switch](/workflows.md#the-deployment-switch) reads **Live**. A new workflow goes live
when you first publish it. If the status reads **Paused**, turn the switch on. The Zap step now
starts the workflow.

Each request starts 1 run of every published, enabled workflow that uses the webhook. A missing or wrong
secret gets a `401` response, malformed JSON gets a `400`, a body over 1 MB gets a `413`, and a webhook
whose **Active** switch is off gets a `410`. A mapped **Person email** field that holds text that is
not a valid email address also gets a `400`. An empty or non-text value is not checked: the run starts
with the **Company domain** instead, if one is mapped, or with no person or company. Default answers `200` even when no published, enabled
workflow uses the webhook, so a successful Zap step does not by itself mean a run started.

## Start a Zap from Default

**1. Start the Zap**

In Zapier, start a Zap with a webhook trigger that gives you a URL to send data to.

**2. Add Send to Webhook**

In the Default workflow, add **Send to Webhook**. Set **Request Type** to **POST** and paste the
Zap's URL into **Request URL**.

**3. Set the authorization**

Set **Authorization** to what the Zap's URL expects.

**4. Build the body**

Build the **Body** under **Fields** or **JSON**. Type `{{` to insert values, such as the lead's
email or the assigned rep.

**5. Send a sample and finish the Zap**

Run a workflow test so the Zap receives a sample, then finish the Zap in Zapier. Once the
workflow is published and turned on, each run starts the Zap.

Default stops a request after 30 seconds and does not follow redirects. See
[Send to Webhook](/workflows/steps-actions.md#send-to-webhook).

> [!WARNING]
>
> A workflow test sends the request for real. If the Zap is turned on, it runs its actions. Use test
> data.

## What Default does not support with Zapier

* A native Zapier integration, or a Zapier card on the **Connections** page.
* Webhooks without an `Authorization: Bearer` header. Default rejects them with a `401`.

Related: [Default integrations](https://www.default.com/integrations)


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