Skip to main content
for-producers

Automate with Webhooks

How to set up a webhook link to trigger your workflow automatically without using the UI.

Written By Philippe

Last updated 3 days ago

Automate with Webhooks

Webhooks let you trigger a workflow programmatically β€” from Zapier, Make, another system, or any HTTP client β€” without using the indie.money UI.

Webhook Flow:

  1. Your System (Zapier/Make) sends POST with payload
  2. indie.money receives it
  3. Workflow executes (billed per the link you used)
  4. JSON Response returns with output data

How It Works

StepWhat Happens
1. πŸ”—Each webhook trigger gives you two labelled links
2. πŸ“€Send a POST request to the link that matches the caller
3. ⚑indie.money executes the workflow
4. πŸ’°Payment follows the link: your workflow balance, or the caller's payment
5. πŸ“₯Returns the result as JSON

Setting Up a Webhook

StepAction
1.From your Producer Dashboard, find the workflow card
2.Turn the workflow on
3.Next to the webhook trigger, open Copy URL; pick You pay or Caller pays (single-rail workflows show a flat button labelled with that rail)
4.Paste the link into your external system or listing

Webhook Request Format

POST {your-webhook-link}Content-Type: application/json{  "key": "value",  "inputs": "here"}

Copy the link from the producer dashboard next to the trigger.

Your webhook only accepts the HTTP method your workflow's Webhook node is set to β€” if the node doesn't say otherwise, that's GET only, even though the examples on this page use POST. If callers start getting 405 Method Not Allowed after you turn your workflow back on, check your workflow's Webhook node settings to confirm it's set to accept the method your caller actually sends.

Authentication & Payment

Your workflow's webhook triggers have two links.

For your own systems. This link behaves the way your workflow's webhook always has: anyone who has it can call it, and the only sign-in it asks for is the one you set in the workflow. What differs is who pays β€” runs through this link draw on your workflow balance. If your workflow requires no sign-in, possession of this link is permission to spend. Keep it out of public repositories, client-side pages, support tickets, and listings.

Caller pays. Safe to publish. A call arriving without payment gets a price back instead of a run, so your balance is never reachable through it. This is the only link to hand to a stranger, put in a listing, or let other workflows discover.

Triggers connected to another service β€” a Telegram bot, a form service like Typeform, a payment provider β€” work differently. That service calls your workflow directly and cannot pay, so those runs always draw on your workflow balance.

When your workflow balance cannot cover a run on the You pay link, the call is refused (403) rather than charged to the caller. Callers with a wallet pay per run on the Caller pays link.

When a Run Fails

A webhook that answers when the run ends answers a failed run with 500 and {"message":"Error in workflow"}, as in n8n. A sender that retries on a 5xx answer runs the workflow again, and each run is charged. To stop the retries, answer from the error path yourself with a Respond to Webhook node. See Webhook Node (Trigger).

Testing Your Webhook

Use curl or a tool like Postman to test:

curl -X POST {your-webhook-link} \  -H "Content-Type: application/json" \  -d '{"message": "Hello from webhook"}'

Limitations

LimitationDetails
βš™οΈ Workflow stateWebhooks require workflow to be "ready" (credentials configured, turned on)
⏱️ Response timeDepends on workflow complexity (typically 2–30 seconds)
πŸ“Š StreamingNo streaming β€” full result returned in one response