Overview
The HTTP Webhook trigger gives any Taskade automation a unique inbound URL. Any system that can POST JSON can start the automation. Pair it with branching, looping, and AI actions to build any pipeline you need.
TL;DR: Add the Webhook Received trigger to any automation, copy the unique URL, and POST JSON from any external system to fire your workflow. Available on Pro, Business, Max, and Enterprise. Pair with Branch, Loop, Utility Actions, and Structured Output to handle real-world payloads end to end.
How the trigger fits the loop
A webhook is the canonical Execution input: an external system tells Taskade something happened, and your automation runs the rest of the loop.
Webhook trigger vs. action
These two sound the same but flow in opposite directions. Pick the one that matches the data direction you need.
| Type | Direction | What it does |
|---|---|---|
| HTTP Webhook trigger (this article) | Inbound | Receives a POST from an external system and starts an automation |
| Webhook action | Outbound | Sends a POST from a running automation to an external system |
If your goal is "when something happens in Stripe, run my Taskade automation," you want the trigger. If your goal is "when my Taskade automation finishes, notify Slack through a custom URL," you want the action.
Set up the trigger
Create the trigger first, then wire your external system to the URL it gives you.
- Open the automation you want to start from a webhook.
- Click Add Trigger.
- Pick Webhook Received from the HTTP trigger list.
- Copy the unique Webhook URL shown in the trigger panel.
- Click Save.
Keep that URL handy. You will paste it into the external service that needs to fire the automation.
Reference fields from the payload
The trigger parses incoming JSON automatically when the request includes Content-Type: application/json. It also accepts a plain HTML form post (application/x-www-form-urlencoded) and a multipart form, and turns the form fields into the same body object. A field that repeats, such as a group of checkboxes, arrives as a list. The full payload is exposed to every downstream action through five variables you can reference with the @ picker or {{ }} syntax.
| Variable | What it holds | Example |
|---|---|---|
body |
Parsed JSON object | {{trigger.body.customer_email}} |
bodyText |
Raw payload as a string | {{trigger.bodyText}} |
headers |
Request headers, without credential headers such as authorization |
{{trigger.headers["x-status-secret"]}} |
method |
HTTP verb (always POST here) |
{{trigger.method}} |
queryParams |
URL query string keys | {{trigger.queryParams.source}} |
To pull a single nested value out of body, pair the trigger with Get Multiple Values (JSONPath) and a JSONPath query like $.user.email. To work with the raw text (for example, to verify a signature header), reach for bodyText.
Test the trigger
Send a real request from your terminal to make sure that the trigger fires and your fields parse correctly.
curl -X POST "YOUR_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"customer_email": "test@example.com",
"order_id": "ORD-1042",
"amount": 49.00
}'
A successful request returns HTTP 202 Accepted. The automation runs in the background and you can watch progress in the Runs tab.
| Response | What it means | What to do |
|---|---|---|
| 202 Accepted | Payload accepted, automation queued | Open Runs to watch the steps complete |
| 400 Bad Request | JSON malformed or field types do not match | Validate the payload at jsonlint.com |
| 404 Not Found | Wrong URL, or automation is paused | Re-copy the URL and toggle the automation on |
Reliability and retries
Taskade stores every accepted delivery before processing it, so a brief downstream hiccup never loses an event.
- Every accepted POST is stored before any action runs. A request that fails the Verify requests check gets
401 Unauthorized, and Taskade does not store it. - Actions that error are retried automatically with backoff. An agent step is the exception. It runs once, with up to 15 minutes to finish.
- You can run a failed delivery again from the Runs tab with the Retry button. The button shows only on a run where a step failed. A run that finished every step, or a run whose trigger failed, has no Retry button.
- Long-running actions do not block the next webhook from being accepted.
This is the same reliable retry behavior used by every action in the automation.
Plan availability
The HTTP Webhook trigger is available on Pro and above because it accepts unbounded inbound traffic from any external service.
| Plan | HTTP Webhook trigger |
|---|---|
| Free, Starter | Use built-in triggers like Forms, Schedule, and task events |
| Pro, Business, Max, Enterprise | Full HTTP Webhook trigger access |
See the pricing page for the latest plan matrix.
Authenticate inbound requests
The URL acts as a shared secret. With Verify requests set to None, anyone who gets the URL can start the automation. Pick a check under Verify requests on the trigger, so that Taskade rejects a request that does not pass. A rejected request gets 401 Unauthorized, and the automation does not run.
| Verify requests | What the sender must send | When to use it |
|---|---|---|
| None | Nothing. The trigger panel warns that the webhook is public. | Only for a test, or for data that is not private |
| Bearer token | Authorization: Bearer <token>, with the Authorization Token that the trigger shows |
Most tools and your own code. Works everywhere |
| Stripe signature | The Stripe-Signature header that Stripe adds. Paste the signing secret of your Stripe webhook endpoint into Signing secret. |
Events from a Stripe webhook endpoint |
| HMAC-SHA256 signature | A hex HMAC-SHA256 digest of <timestamp>.<body>, made with your Signing secret, in X-Taskade-Signature-V2, plus the time in X-Taskade-Timestamp. You can rename both headers. |
A sender that signs each request |
With Stripe signature or HMAC-SHA256 signature, Taskade also rejects a request that is older than 5 minutes. Until you add the signing secret, the trigger rejects every request.
Use the Bearer token
- Set Verify requests to Bearer token.
- Turn on the automation. Taskade then creates the Authorization Token.
- Click Show or Copy next to Authorization Token.
- Paste the token into the sending tool as a Bearer token.
curl -X POST "YOUR_WEBHOOK_URL" \
-H "Authorization: Bearer YOUR_AUTHORIZATION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "order_id": "ORD-1042" }'
Check a header of your own
If the sender can only add a header with a name of its own, send a shared secret in that header, for example x-status-secret. Then compare {{trigger.headers["x-status-secret"]}} with the secret in a Branch or Filter Data step. This check runs inside the automation, so Taskade accepts the request and starts a run. Put the check first, before any step that reads, changes, or sends data.
Taskade removes credential headers from the trigger data before any step runs: authorization, proxy-authorization, cookie, set-cookie, x-api-key, and x-auth-token. A step cannot read them, so do not use one of these names for your own secret.
Security tips
Treat the webhook URL like a password. Anyone holding it can fire your automation.
- Keep the URL out of public repos, screenshots, and shared docs.
- Set Verify requests to Bearer token, or to a signature check when the sender signs its requests.
- If you think that the URL or the token leaked, turn the automation off until you fix the leak.
- Prefer a signature check when the source supports it, for example Stripe signature for Stripe events.
Frequently Asked Questions
What does the HTTP Webhook trigger do?
It gives any Taskade automation a unique inbound URL that an outside system can POST to. When any service sends JSON to that URL, your automation runs. This is the easiest way to start an automation from another tool, like a payment platform or a custom backend.
Where do I find my webhook URL?
Open the automation, click Add Trigger, and pick Webhook Received from the HTTP trigger list. Taskade shows your unique Webhook URL right in the trigger panel. Copy it, click Save, and paste it into the external service you want to fire the automation.
What data does the automation receive from a webhook?
When the request includes a JSON content type, Taskade parses it automatically. A plain HTML form post also works, and its fields arrive in the same parsed body. Every later step then gets five pieces of the request: the parsed body, the raw body text, the headers, the HTTP method, and the URL query parameters. You can reference any of them with the @ picker or {{ }} syntax. This lets you route names, emails, order IDs, and anything else straight into your actions.
How do I keep my webhook URL safe?
Treat the URL like a password, since anyone holding it can fire your automation. Keep it out of public repos, screenshots, and shared docs. For extra protection, set Verify requests to Bearer token or to a signature check. If you think that the URL leaked, turn the automation off.
How do I test the webhook trigger?
Send a real POST request from your terminal with a small JSON body, like the curl example above. A successful request returns HTTP 202 Accepted, which means your payload was accepted and the automation is queued. Open the Runs tab to watch the steps run and make sure that your fields parsed correctly.
What happens if a delivery fails or my automation has a hiccup?
Taskade stores every accepted POST before any action runs, so a brief downstream issue never loses an event. A request that fails the Verify requests check gets 401 Unauthorized and is not stored. Actions that error are retried automatically with backoff, except an agent step, which runs once. When a step fails, click Retry on that run in the Runs tab to run it again. A run that finished every step, or a run whose trigger failed, has no Retry button. Long-running actions also do not block the next webhook from being accepted.
Which plan includes the HTTP Webhook trigger?
The HTTP Webhook trigger is available on the Pro, Business, Max, and Enterprise plans. On Free and Starter you can still use built-in triggers like Forms, Schedule, and task events. On Free and Starter, Taskade refuses each call to the webhook address. If you turn on an automation with this trigger in the web app, Taskade opens the upgrade window instead. The same occurs if you change the trigger of an automation that is on to this one. An automation that is already on stays on, but Taskade still refuses each call to its address until you upgrade. See the pricing page for the latest plan matrix.
Related guides
- Webhooks (Action). Outbound counterpart that sends events from Taskade.
- Branch Action. Route incoming payloads to different paths.
- Loop Action. Iterate over arrays inside a webhook payload.
- Structured Output. Turn raw payloads into typed variables.
- HTTP Request Action. Call external APIs from inside the automation.