← All articles

Automation

Trading Webhooks Explained: Getting Signals Into Discord, Zapier, and Your Own Code

July 23, 2026 · 7 min read

A webhook is the least glamorous and most useful piece of trading infrastructure you can set up. It's the difference between "I saw the alert forty minutes later" and "my Discord posted the setup before I'd finished my coffee."

What a webhook actually is

A push, not a pull. Instead of your app asking a server "anything new?" every thirty seconds, the server sends an HTTP POST to a URL you own the moment something happens. The payload is JSON. That's the whole idea.

For trading, that means the signal reaches your systems in seconds rather than whenever your next poll happens to land — and you don't need to run anything that stays awake watching.

Lifecycle events: why one alert isn't enough

A single "buy AAPL" ping is nearly useless for automation, because a trade has stages. A well-designed signal feed sends an event at each one. Finradar's uses three:

  • new_setup — the AI found a trade idea. You get the whole plan before anything happens: symbol, direction, entry zone, stop loss, TP1 and TP2, the chart pattern, and the written thesis.
  • trigger — price entered the entry zone; the trade is live. This carries the exact trigger price.
  • close — the trade finished, with outcome and closing price.

Why it matters: new_setup is what you read and decide on. trigger is what a bot acts on. close is what your journal and stats dashboard consume. Wire each one to a different destination and the system starts doing your bookkeeping for you.

{
  "event": "trigger",
  "symbol": "AAPL",
  "direction": "buy",
  "trigger_price": 224.35,
  "stop_loss": 221.80,
  "tp1": 228.10,
  "tp2": 234.50,
  "confidence_score": 87,
  "rr_ratio": 2.4,
  "pattern": "bull_flag_breakout"
}

Filter at the source, not at your inbox

The most common webhook mistake is routing everything and then ignoring 80% of it — which trains you to ignore the other 20% too. Filter server-side. Finradar lets you set a minimum confidence score (say 80) so lower-scoring setups are never delivered at all. Your Discord stays readable, and an alert appearing means something.

Where to route them

  • Discord / Slack — paste the channel's incoming-webhook URL. Best for community rooms and for a personal "trades" channel you can scroll back through.
  • Zapier / Make / n8n — for anything with an "if this, then that" shape: append rows to a Google Sheet, create a Notion journal entry, text yourself only on high-confidence setups.
  • Your own server — full control. Persist to a database, run your own filters, forward to a broker API.
  • Spreadsheet journal — genuinely underrated. A close event appended to a sheet gives you a trade log you never have to maintain by hand.

The three implementation details people get wrong

1. Duplicates. Networks retry. If your endpoint is slow or returns a 500, a well-built sender will send again — and a naive receiver opens the trade twice. Make your handler idempotent: key on a unique field (Finradar sends a setup id and, for the copier, a per-trade key) and ignore anything you've already processed.

2. Responding too slowly. Reply 200 OK immediately, then do your work asynchronously. Don't place the order, write to your database, and post to Discord before answering — that's how you time out and trigger the retry storm above.

3. Treating the URL as public. Anyone with your endpoint URL can post fake signals to it. Use HTTPS, keep the URL secret, and if you're building your own receiver, verify a shared secret in the payload before acting on it.

Webhook or trade copier?

A webhook delivers information. It doesn't place trades. If you want signals to actually execute on a broker account, that's a different piece — see copy trading vs a trade copier. Many traders end up with both: the copier handles execution, the webhook handles the Discord post, the journal row, and the phone notification.

A sane starting setup

  1. One Discord channel receiving new_setup above your confidence threshold — your reading feed.
  2. Phone push (via Zapier or your app) on trigger only — the things happening now.
  3. A Google Sheet appending every close — your journal, maintained by nobody.

That's fifteen minutes of setup and it removes almost all of the "I missed it" failure mode.

Bottom line

Webhooks are how a signal stops being a notification you might see and becomes a piece of data your systems act on. Filter at the source, handle duplicates, answer fast, and keep the URL private. See Finradar's webhook docs for the full payload reference.

Not financial advice. Automating delivery does not automate good decisions.