Skip to main content

What it does

A webhook trigger gives you a unique URL. Any system that can send an HTTP POST request — Zapier, Make, n8n, Pipedream, your own backend, or any tool with an outgoing webhook — can fire it by posting JSON to that URL. This is the source to use for connecting Swan to anything that isn’t already a native integration. Create one from New trigger → Webhook on Triggers.

The URL

Each webhook trigger’s URL includes an embedded secret and is unique to that trigger. Treat the URL itself as a credential: anyone who has it can fire the trigger, so don’t post it somewhere public, and rotate the trigger (delete and recreate it) if you think it’s leaked. Find the URL (with a copy button and a sample curl request) by opening the trigger from Triggers and clicking into its configuration card.

Sending data

POST any JSON body you want — the whole payload becomes the run’s input, so Swan’s instructions can reference whatever fields you send. Two fields get special handling:
  • companyDomain — if you include this field with a valid domain, Swan associates the event with that company (creating it if it doesn’t already exist), so the run shows up on the company’s activity and Swan has that context going in.
  • context — if you include this field, it’s used as the additional context passed to the run instead of the whole raw payload.
Requests are capped at 1 MB — if you need to send more, summarize the payload before sending or reference an ID Swan can look up.

Cost

A webhook fire costs 1 credit as a flat fee by default, plus whatever the run’s own actions spend. Some built-in integrations that use a webhook-style trigger under the hood define their own per-event cost instead of the default — check the specific app event if you’re connecting through a built-in integration rather than a raw webhook URL.

Common questions

Do I need to authenticate requests beyond the URL itself? No — the secret embedded in the URL is the authentication. There’s no separate API key or header required. What happens if I send a malformed companyDomain? The request is rejected with an error rather than silently ignoring the field, so double-check the domain format if a webhook call isn’t behaving as expected. Can I test a webhook trigger before wiring up the real system? Yes — send a POST request to the URL yourself (with curl, Postman, or your webhook tool’s test-send feature) with sample JSON, and check the run it produces in monitoring runs. Will a disabled trigger still accept requests to its URL? No — requests to a disabled webhook trigger’s URL are rejected rather than queued for later. Can one webhook trigger handle several different event shapes? Yes, since the whole payload is passed through as-is — write the trigger’s instructions to handle the different shapes you expect, or set up separate webhook triggers per event type if the logic gets complex.