> ## 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 **Integrations** 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#incoming-webhook), authenticated with the [webhook secret](/settings/webhook-secret) |
| 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#api), called with [Fire a trigger](/api-reference/triggers/fire-a-trigger) |
| Default to Zapier | A workflow sends an HTTP request to the webhook URL of a Zap. | [**Send to Webhook** node](/workflows/steps-actions#send-to-webhook) |

## Choose between the webhook and the API

| | Incoming webhook | API trigger |
| - | - | - |
| Authentication | The workspace [webhook secret](/settings/webhook-secret) 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).

## Start a Default workflow from a Zap

<Steps>
  <Step title="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.
  </Step>

  <Step title="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), shared by every webhook in the workspace.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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**.
  </Step>

  <Step title="Map the person or company (optional)">
    Under **Identity mapping**, choose the field that holds the **Person email** or the
    **Company domain**.
  </Step>

  <Step title="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#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.
  </Step>
</Steps>

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

<Steps>
  <Step title="Start the Zap">
    In Zapier, start a Zap with a webhook trigger that gives you a URL to send data to.
  </Step>

  <Step title="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**.
  </Step>

  <Step title="Set the authorization">
    Set **Authorization** to what the Zap's URL expects.
  </Step>

  <Step title="Build the body">
    Build the **Body** under **Fields** or **JSON**. Type `{{` to insert values, such as the lead's
    email or the assigned rep.
  </Step>

  <Step title="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.
  </Step>
</Steps>

Default stops a request after 30 seconds and does not follow redirects. See
[Send to Webhook](/workflows/steps-actions#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.
</Warning>

## What Default does not support with Zapier

* A native Zapier integration, or a Zapier card on the **Integrations** 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.