Email is the default delivery channel on Trader. Pro adds HTTPS webhooks: configure a URL on your alert and Tradient POSTs a JSON payload every time it fires. There is no separate native Discord, Telegram, or push channel — point a webhook at Slack or Discord’s incoming-webhook URL (often via a small adapter), Zapier, or your own bot.
https:// and must resolve to a public host. Private or loopback addresses are rejected.Configuring a webhook
- Open the alert in Alerts settings.
- Set delivery channel to Webhook.
- Paste your URL.
- (Optional) Set a shared secret for signature verification.
- Click “Send test” to verify reachability.
- Save.
From this point on, every alert firing generates a POST to your URL.
The payload
POST /your-webhook-url
Content-Type: application/json
X-Tradient-Signature: sha256=<hmac of body with your shared secret>
{
"event": "alert.fired",
"timestamp": "2026-04-07T14:32:11Z",
"alert": {
"id": "alt_4b8c...",
"name": "SPY iron condors 70+ score",
"frequency": "daily",
"threshold_kind": "top_score_gte",
"threshold_value": 70
},
"scan": {
"id": "scn_91ee...",
"name": "SPY iron condors 70+ score",
"strategy": "iron_condor"
},
"trigger": {
"result_count": 4,
"previous_count": 2,
"top_score": 73.4,
"previous_top_score": 68.1
},
"top_results": [
{
"symbol": "SPY",
"strategy": "iron_condor",
"score": 73.4,
"pop": 0.78,
"credit": 0.92,
"max_loss": 408,
"expiration": "2026-05-15",
"deep_link": "https://tradient.app/radar/scn_91ee..."
}
]
}Field reference
- event — always “alert.fired” for now. Future event types will use the same envelope.
- timestamp — ISO 8601 UTC of when the alert fired.
- alert — the alert that triggered.
- scan — the saved scan the alert is attached to.
- trigger — the diff between the current snapshot and the previous one. Always populated.
- top_results — up to 5 of the best-scoring results from the snapshot, with deep links back to Radar.
Signature verification
If you set a shared secret, Tradient signs the body with HMAC-SHA256 and includes the signature in the X-Tradient-Signature header. To verify on your side:
# Python
import hmac, hashlib
expected = "sha256=" + hmac.new(
secret.encode(),
request.body,
hashlib.sha256
).hexdigest()
if not hmac.compare_digest(expected, request.headers["X-Tradient-Signature"]):
abort(401)Always verify on production endpoints. Anyone who knows your webhook URL could otherwise POST fake events to it.
Retry behavior
- On non-2xx responses or timeouts, Tradient retries up to 3 times with exponential backoff (10s, 60s, 300s).
- After 3 failures, the alert is marked “delivery degraded” and you get an email notification. The alert remains active.
- After 10 consecutive failures, the alert is auto-paused and you get a second email asking you to fix the URL.
Common integrations
Slack
Use a Slack incoming webhook URL. Slack expects a { "text": "..." }body, so you’ll need a small adapter (a Cloudflare Worker or AWS Lambda) to translate Tradient’s payload into Slack’s format. Or use Zapier as a no-code adapter.
Discord
Create an Incoming Webhook in your Discord channel settings and paste that URL into Tradient. Discord expects { "content": "..." }, so use a tiny adapter (or Zapier) to map Tradient’s JSON into Discord’s shape — same pattern as Slack. This is still a generic HTTPS webhook, not a built-in Discord login.
Custom bot
If you’re building your own automation, point Tradient directly at your bot’s ingest endpoint. The full result payload is in the body — you don’t need to re-fetch from Tradient.