TradingView webhook errors and how to fix each one
Short answer
A TradingView webhook fails in one of two places. Either TradingView never sends it (a free plan, two-factor authentication off, a link with a port other than 80 or 443, a receiver slower than three seconds), or it arrives and the receiver turns the message away. In Shifu’s records the most common reason is a message that is not JSON.
Updated: October 20, 2026
When TradingView never sends the webhook
| Cause | What TradingView does | Fix |
|---|---|---|
| A free (Basic) plan | Webhook notifications come with the Essential, Plus, Premium and Ultimate plans, not Basic. Basic also has no alerts on indicators or strategies. | Use a paid plan for any alert that sends a webhook. |
| Two-factor authentication is off | TradingView only allows webhook alerts when two-factor authentication is on. | Turn on two-factor authentication in your TradingView account. |
| The link names a port | Only ports 80 and 443 are accepted. A link with any other port is rejected. | Use a plain https:// link with no :port in it. |
| The receiver answers slowly | TradingView cancels the request if the receiving server takes longer than three seconds. | Point the alert at a receiver that answers within three seconds. |
| A firewall blocks TradingView | Webhooks come from four TradingView addresses: 52.89.214.238, 34.212.75.30, 54.218.53.128 and 52.32.178.7. | If your receiver filters by address, allow those four. |
| The receiver has only an IPv6 address | IPv6 is not supported for webhooks. | Give the receiver an IPv4 address. |
| The alert is older than your last change | An alert keeps a snapshot of the script and settings from when it was created. Later changes on the chart do not reach it. | Delete the alert and create a new one after any change. |
| The order happened on history | Strategy alerts fire on live bars only. Orders on historical bars send nothing. | Wait for a live bar to test it. |
TradingView’s alert log has a Webhook status column for each fire. Checked against TradingView’s help pages and plan table on October 12, 2026.
When the webhook arrives but the message is refused
These are the reasons Shifu turned alerts away between September 7 and October 12, 2026, ranked by how many members hit each one. They come from what was in TradingView’s Message box, so the fix is the same whatever receiver you use.
| What was in the Message box | Members it happened to | Why it is refused | Fix |
|---|---|---|---|
| Text that is not JSON | About two in three | TradingView sends anything that is not valid JSON as plain text. A receiver that reads JSON cannot act on a sentence. | Replace everything in the Message box with the JSON your receiver documents. |
| ↳ TradingView’s default strategy message, left in place | About three in ten | A new strategy alert starts with a sentence for people. It begins with the strategy’s name and reads like "order buy @ 1 filled on MES1!. New strategy position is 1". | Delete it and paste your receiver’s JSON. Placeholders such as {{strategy.order.action}} and {{strategy.order.contracts}} fill in the side and size. |
| ↳ Other text: an alert’s own description, a note, a symbol and a side | Almost half | Price, drawing and indicator alerts send whatever words their Message box holds. Receivers that read JSON cannot act on them. | Use your receiver’s JSON in that alert’s Message box too. |
| JSON written for another platform | About one in seven | It is valid JSON, but without the fields the receiver needs. Every one we saw had an action and no symbol, so the receiver could not tell which contract to use. | Use your receiver’s own message format, and include the symbol, usually as {{ticker}}. |
| A {{strategy.…}} placeholder on an indicator alert | About one in seven | TradingView fills placeholders that start with "strategy" only on strategy alerts. On an indicator alert the word arrives exactly as typed, braces and all. | On an indicator alert, write the number itself, such as a quantity of 1, or send orders from a strategy alert. |
| A message to a bot that was switched off | About one in seven | The message was fine; the bot was set not to act. | Turn the bot back on. |
Shares are of members whose alerts Shifu refused. One member can appear in more than one row.
Where Shifu shows the reason
Shifu writes every refused alert to the Alerts page, with the reason in plain words and the message quoted back. Every reason Shifu itself can give, from a paused bot to a hand-off that timed out, is in Why your TradingView alert fired but no order appeared.
Questions people ask
Which TradingView plan do I need for webhooks?
Any paid plan: Essential, Plus, Premium or Ultimate. The free Basic plan has no webhook notifications. Two-factor authentication also has to be on.
What are TradingView’s webhook IP addresses?
52.89.214.238, 34.212.75.30, 54.218.53.128 and 52.32.178.7. Allow all four if your receiver filters by address.
Does TradingView send JSON or plain text?
If the Message box holds valid JSON, TradingView sends it as JSON, with an application/json content type. Anything else goes as plain text, which a receiver that reads JSON will refuse.
I changed my strategy’s settings. Why does the alert still act the old way?
An alert keeps a snapshot of the script and settings from when it was created, so later changes never reach it. Delete the alert and create a new one.
Why did {{strategy.order.contracts}} arrive as text?
The alert is on an indicator, not a strategy. TradingView fills words that start with {{strategy. only on strategy alerts.
