TradingView Alert Sources
Use an alert source when TradingView should be the trigger and Tickory should handle routing, delivery tracking, and proof. A source receives the inbound event, and one or more routes decide where that event gets delivered.
Inbound vs outbound
Overview
The full flow looks like this:
- Create a TradingView source in Tickory.
- Copy the source webhook URL and secret into your TradingView alert.
- Add one or more routes so Tickory knows which delivery channels should receive matching events.
- Send a test event or test payload and inspect the resulting source trace and alert history.
Tickory keeps two different views on purpose:
- Source Trace & Proof shows the inbound payload, route evaluation, and receipt proof for one source event.
- Alert History shows provider/channel delivery attempts, retries, and failures after a route enqueues an alert.
Create A Source
- Open Integrations in the dashboard.
- Go to Alert Sources.
- Click Create TradingView Source.
- Give the source a name that matches the TradingView strategy or alert.
Tickory creates two values for that source:
- Inbound Webhook URL: the URL TradingView should POST to.
- TradingView Secret: the shared secret used to authenticate the payload.
One source per feed is usually easiest
Configure TradingView
In your TradingView alert, paste the Tickory source webhook URL into the webhook field. TradingView does not let you set custom headers on native webhook alerts, so include the source secret directly inside the JSON body:
{
"ticker": "{{ticker}}",
"close": {{close}},
"volume": {{volume}},
"time": "{{timenow}}",
"alert_message": "{{strategy.order.action}} {{ticker}}",
"secret": "paste-the-source-secret-from-tickory"
}Tickory normalizes a few fields automatically:
tickeris also available assymbolcloseis also available aspricealert_message,volume, andtimeare preserved for filters and trace inspection
Custom relays can sign instead
X-TradingView-Signature header containing an HMAC SHA-256 of the raw JSON body. The same source secret is used for either method.const crypto = require("crypto");
function tradingViewSignature(secret, rawBody) {
return crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
}Add Routes
After a source accepts an event, routes decide which destinations should receive it. Open the source detail page and click Add Delivery Route.
Current direct destinations include:
- Telegram chat ID
- Webhook URL
- Discord webhook URL
You can also add a CEL route filter if only certain TradingView events should go to that route. For example:
symbol == "BTCUSDT" && price > 40000That route would only fire for BTCUSDT alerts above 40,000. Leave the filter empty when every inbound event for the source should go to the destination.
Test And Inspect
The source detail page gives you two test tools:
- Send Test Event creates a synthetic event using the stored source and routes.
- Test Payload lets you paste custom JSON and see which routes would match before sending a live alert.
After testing, inspect outcomes in this order:
- Open Source Trace & Proof on the source detail page.
- Confirm the inbound payload was accepted and see which routes matched, skipped, or failed.
- Open the proof panel on a route when you need the receipt-level evidence for that alert event.
- Switch to Alert History when you need channel-level retry and provider error details.
No routes means no delivery
Security And Limits
- Keep the source secret private. Anyone with the webhook URL and secret can post events to that source.
- Rotate or recreate the source if you suspect the secret was exposed.
- Tickory enforces per-source and per-IP rate limits on TradingView ingestion.
- Use separate sources when different teams or automations should not share the same secret or trace history.