TradingView webhook not working: find where it stops
An alert that produces no order has stopped at one of four steps: the alert itself, the webhook, the reading of the message, or the order in your platform. This page walks the chain in order, with what to look at for each step and the fix that goes with it.
The alert message
{
"action": "buy",
"symbol": "EURUSD",
"volume": 0.10,
"sl": 1.0820,
"tp": 1.0910
}
Four steps, four places to look
Follow the alert in the order it travels, and stop at the first step that fails: looking further is useless. On TradingView, the alert manager tells whether the alert is active, and the alert log whether it fired and whether the webhook went out. In TheConnector, the Alert history shows the alerts that reached your account, with their outcome. In your platform, the account journal gives the broker's exact answer.
- The alert fires: TradingView's alert manager
- The webhook leaves: the delivery status in the alert log
- The message is read: the Alert history in TheConnector
- The order is placed: the account journal in MT4, MT5 or cTrader
The alert does not fire
Most silent alerts have a simple cause, visible in TradingView's alert manager. The alert expired, or it was set to “only once” and switched itself off after its first trigger. TradingView also stops an alert that fires more than 15 times in 3 minutes. On a closed market no new quote arrives, so nothing fires. And an alert set to trigger on bar close waits for the bar to close, then fires only if the condition still holds.
- Reactivate an expired alert, or one set to “only once”
- More than 15 triggers in 3 minutes: make the condition more selective
- On bar close, the signal leaves when the bar ends, not before
The alert fires, but no webhook leaves
The Webhook URL field only appears on a paid TradingView plan, Essential or higher, and TradingView only sends webhooks when two-factor authentication is on. The box must be ticked in the alert's Notifications tab, with the full address of your account. If the alert log shows a failed delivery, start with the address: read it again, character by character.
- A paid plan, Essential or higher, with two-factor authentication on
- The Webhook URL box ticked in the Notifications tab
- The address copied whole from My accounts, access key included
Nothing shows up in the Alert history
The Alert history lists the alerts that reached your account, accepted or refused; only the refusal for the daily quota is not repeated for each alert. Apart from that case, an alert missing from it never got that far: either it never left TradingView, or its address carries a wrong access key. An alert with an unknown key cannot be attached to any account: it shows nowhere and does not count against your quota. Each account has its own key, and an alert must carry the key of the account it targets.
- One key per account: check it is the key of the account you expect
- No account field in the message unless you need one: a mismatch refuses the alert
- A webhook sent but absent here: the address or the key is at fault
The alert is refused because of its message
When TheConnector cannot read a message, the alert appears under the “Failed” filter of the Alert history, with its reason. Next to it, the “Understand this rejection” button opens the webhook tester with the message exactly as it arrived, access key removed. A malformed JSON, such as a forgotten quote or an extra comma, is refused too, as “Unsupported command”.
Unsupported commandNo command could be read: TradingView's default text, or a malformed JSONA command in action, or first on the line: buy, sell, closelong…Missing symbol in the alertThe message names no symbolAdd symbol, for example {{ticker}}Invalid numeric fieldA value contains text, such as 20pips or 1%Plain numbers only: 20, 1Daily webhook quota exceededToday's alerts for this account on your plan are used upWait for the next day, and fix any alert that loops- Paste the refused message into the tester to see which field breaks
- A refused message still counts against the day's quota
The trap of TradingView's default message
When you create an alert, TradingView fills the Message field with its own text, such as “EURUSD Crossing 1.0850”. That text is not a command: TheConnector refuses it as “Unsupported command”, and every trigger counts against your quota. If a comma appears in it, as a decimal or thousands separator, the text is even cut in two, and the history can show a symbol unrelated to your chart, such as a number. Replace the whole text with a TheConnector message.
{"action":"buy","symbol":"{{ticker}}","risk":1,"sl":20,"tp":40}
- Erase all the text TradingView proposes
- Paste a TheConnector message in its place
- Check it in the webhook tester before saving the alert
The robot is offline
“Robot offline — alert not delivered” means no robot was connected to that account when the alert arrived. The alert is not kept for later: a signal that cannot be executed at once is dropped, never replayed, and it counts against the day's quota. The robot runs inside your platform: with the platform closed or the computer asleep, there is no robot. This reason also appears when an alert still targets an account you have archived: delete that alert in TradingView.
- Open your platform on the computer where the robot runs
- Check the TheConnector robot shows “Play” in green
- Leave the platform open and the computer awake
The platform refuses to send the order
“Trading disabled” means your platform refused to send the order: nothing reached the market. In MT5, Algo Trading must be on (AutoTrading in MT4), and the platform can switch it off by itself when you change account. The robot must also be allowed to trade, and you must be logged in with your trading password: the investor password opens the account read-only. If all of this is already on, ask your broker whether automated trading is allowed on this account.
- Algo Trading on in MT5, AutoTrading on in MT4
- Robot properties, Common tab: “Allow Algo Trading” ticked
- Logged in with the trading password, not the investor one
The broker refuses the order
Here routing worked: the robot received the order, and the platform or the broker said no. The reason shows under the alert in the Alert history, and the account journal in your platform gives the broker's exact wording. The most frequent reasons:
Unknown symbolThe broker does not know this name: another suffix, or missing from Market WatchShow it in Market Watch, or add a symbol mapping to the accountMarket closedThe market was closed when the signal arrivedNothing to fix: the signal is not replayed at the openStop too close to priceThe stop breaks the broker's minimum distanceMove sl further away in the alertInsufficient marginNot enough free margin for this volumeLower the risk or the volumeRisk too small for the minimum lotEven the broker's smallest lot exceeds your riskRaise the risk, or set volume in the alertInvalid volumeThe volume is outside the broker's limits or stepRespect the minimum lot and its stepA late alert is never replayed
TheConnector executes a signal at once or not at all. A command that could not leave in time expires: it is neither kept nor sent later, so that no order is ever placed at a price your strategy did not choose. A command that reached the robot too late shows as “Command too old (blocked)”. If a signal was lost while your robot was offline, taking that trade again is your decision: nothing will place it for you.
- No retry, no replay: an expired signal stays expired
- Keep the robot connected during your trading hours
Test the message before the real alert
The webhook tester runs the exact parser of the production gateway, then stops: it looks up no account, touches no quota and reaches no broker. Paste your message there first: it tells you how the gateway reads each field, or why it would refuse it. Then send a first alert to a demo account, and read the result in the Alert history.
- The tester first: free, and without touching any account
- Then one real alert, on a demo account
- Then the Alert history, to see what the robot did
Still stuck? What to send to support
Three facts let support find your alert: the time it fired, the account it targeted, and the reason shown in the Alert history. Add the message as you wrote it in TradingView, but never your access key: whoever holds it can send orders to your account.
- The alert's time and the account it targets
- The reason shown in the Alert history
- The message, without the access key
Related guides
FAQ
Why does my TradingView alert not fire?
Three causes come up most: it reached its expiry date, it was set to “only once” and switched itself off, or it fired more than 15 times in 3 minutes and TradingView stopped it. On a closed market, nothing fires. TradingView's alert manager shows the alert's status.
Do I need a paid TradingView plan for the webhook?
Yes: the Webhook URL field requires a paid plan, Essential or higher, with two-factor authentication turned on. Without a paid plan, the Relay browser extension lets you test TheConnector from an open TradingView tab.
The webhook leaves TradingView but nothing shows in TheConnector: why?
The alert was not attached to your account: the address or its access key is wrong. Copy the full address again from My accounts, key included. An alert with an unknown key shows nowhere and does not count against your quota.
The alert is received but no order is placed: what should I check?
The reason shown under the alert in the Alert history. The most frequent: robot offline, Algo Trading switched off in the platform, a symbol the broker does not know, a stop too close to the price, or insufficient margin. Each reason comes with what to check.
Is an alert that arrived during an outage replayed later?
No. A signal that cannot be executed at once expires: TheConnector neither keeps it nor sends it later, so that no order is ever placed at a price your strategy did not choose.
Why does the Alert history say “Unsupported command”?
The message carries no command TheConnector can read. Most often, it is the text TradingView puts in the Message field by default, or a JSON broken by a forgotten quote or an extra comma. Replace it with a TheConnector message, then check it in the webhook tester.