Fire a Zap with a payload - reach anything a Zap can reach from an automation.
Connect one Zap by its Catch Hook URL and hand it data from an automation or an agent: send a JSON object (or a raw body, for a Catch RAW Hook Zap) and Zapier runs the Zap's action steps - Slack, Sheets, a CRM, or anything else in its app directory. This is a one-way door: Zapier answers with a request id and nothing the Zap produced, so a fire is never proof the Zap ran. The hook URL is the credential; it is stored encrypted and never appears in a result, an error or a log line.
Connect
| Credential field | Required | Where it comes from |
|---|
Zap hook URL (HOOK_URL) | Yes | The Webhook URL from the Zap's Catch Hook trigger step (https://hooks.zapier.com/hooks/catch/<id>/<key>/). It is the credential - anyone holding it can run the Zap. |
| Setting | Required | What it is |
|---|
Zap name (ZAP_NAME) | No | What the Zap is called, e.g. “Notify #sales in Slack”. Used to label runs and results. |
What it does (ZAP_PURPOSE) | No | One or two lines describing what firing this Zap causes. This is what an agent reads before deciding to call it. |
Expected fields (EXPECTED_FIELDS) | No | Comma-separated payload keys the Zap's action steps map, e.g. customer, amount, dealUrl. |
| Tool | Access | What it does |
|---|
Describe Zap (yekar.zapier.describe-zap) | Read | What this connection's Zap is for and which fields it expects, as its operator described them, plus a check that the stored hook URL is a well-formed Zapier catch hook. Reads the connection only - no call to Zapier. A catch hook is write-only, so this is the only way to learn what firing will do. |
Trigger Zap (yekar.zapier.trigger-zap) | Write | Run this connection's Zap by POSTing a JSON object to its catch hook. One-way: Zapier acknowledges the payload with a request id and returns nothing the Zap produced, so the ack is not proof the Zap ran. |
Trigger Zap with a raw body (yekar.zapier.trigger-zap-raw) | Write | Run this connection's Zap by POSTing a raw body (XML, CSV, plain text) with an explicit content type. For a Zap whose trigger is Catch RAW Hook - the ordinary Catch Hook parses the body into fields instead, which is what Trigger Zap is for. |
Notes
- Build the Zap first. Its trigger must be Webhooks by Zapier → Catch Hook (or Catch RAW Hook), and the Webhook URL that step shows is what you paste here - it is the credential, so treat it like a password: anyone holding it can run the Zap.
- Publish the Zap and turn it ON before wiring anything to it - the ack says Zapier took the payload, not that a live Zap consumed it.
- One connection = one Zap, because the hook URL is the address. To reach several actions from one automation, point this at a single Zap that starts with Paths by Zapier branching on a field you send (an
event key, say).
- Firing is one-way. The result carries Zapier's request id - the handle to find that payload in the Zap's run history - and nothing the Zap produced. If an automation needs the outcome, have the Zap write it somewhere the automation can read.
- Keep payloads shallow: when a Zap maps fields, Zapier flattens nested objects into
parent__child and arrays into list__0, which is tedious to wire up in the action steps.
- Fill in Zap name, What it does and Expected fields. A catch hook tells us nothing about the Zap behind it, so those properties are the only thing Describe Zap - and therefore an agent deciding whether to fire - has to go on.
- Requests only ever go to hooks.zapier.com. A URL for any other host, or a Zapier path that is not a catch hook, is refused before the call.