Quick answer: a TradingView webhook is an HTTP POST request that TradingView sends to a URL of your choice the moment an alert fires. Whatever you write in the alert's Message box becomes the request body. Point that URL at a service like CopyConnectFX and the alert becomes a Telegram message, a log entry — or eventually, a real order.
How the request actually works
When your alert condition triggers, TradingView sends a POST to your
webhook URL within about a second. The body is exactly your alert message — plain text
or JSON. There is no retry queue on TradingView's side worth relying on, so your
endpoint should be fast and always online (this is why hosting your own bot script on a
laptop fails eventually).
Every placeholder worth knowing
{{ticker}}— symbol without exchange (XAUUSD){{exchange}}— the exchange (OANDA, BINANCE...){{close}}/{{open}}/{{high}}/{{low}}— bar prices at trigger time{{volume}}— bar volume{{interval}}— chart timeframe (5, 15, 240, D){{time}}— bar time in UTC{{timenow}}— exact trigger time{{plot_0}},{{plot("Name")}}— indicator plot values
Strategy alerts unlock the most useful ones:
{{strategy.order.action}}— buy or sell{{strategy.order.price}}— order price{{strategy.order.contracts}}— position size{{strategy.position_size}}— resulting position
Copy-paste message templates
Simple price alert
🚨 {{ticker}} crossed your level
Price: {{close}} ({{interval}}m)
Strategy signal with direction
📊 {{ticker}} — {{strategy.order.action}}
Entry: {{strategy.order.price}}
Size: {{strategy.order.contracts}}
TF: {{interval}}
JSON format (for structured processing)
{"message": "🟢 BUY {{ticker}} @ {{close}} | TF {{interval}}"}
CopyConnectFX accepts both: raw text is forwarded as-is, and if you send JSON with a
message field, that field becomes the Telegram message.
Common mistakes that break webhooks
- Webhook URL in the wrong field — it goes in Notifications → Webhook URL, not in the message.
- Free TradingView plan — the webhook checkbox simply won't exist. You need Essential+.
- Bot not admin — Telegram silently rejects messages if your bot can't post to the channel.
- Invalid JSON — a stray quote turns your JSON into plain text. When in doubt, use plain text.
- Once-per-bar settings — "Once per bar close" fires at candle close, not intra-bar. Pick deliberately.
FAQ
Pipe every alert into your Telegram in one webhook.
Set up your webhook →