
TradingView Webhook Not Working? How to Find Where the Alert Stopped
When a TradingView webhook is not working, the alert has stopped at one of four places: it never triggered, TradingView could not deliver it, the receiving service refused it, or the trading platform rejected the order that followed. Since each of those stages keeps its own log, the fastest fix is to check them in order and stop at the first one that shows a problem, rather than changing settings everywhere at once.
This guide walks through the four checks for any webhook receiver and then shows where each one appears when the receiver is PineHook. If you already know the alert reached PineHook and no trade followed, you can jump straight to webhook delivered but no trade.
Check 1: did the TradingView alert trigger?#
Open the Alerts panel in TradingView and select Log, where every trigger is listed with its time and message whether or not the webhook succeeded. If the alert you expected is missing from that log, the webhook never had a chance to run, which means the problem sits in the alert itself and not in anything that comes after it.
The usual reasons are an alert that has expired or been stopped, a condition that has not happened yet, or a trigger setting such as Once per bar close that waits for the bar to finish before it fires. Alerts created from a script also keep the version of the script and inputs they were created with, so an edited strategy keeps running its old logic until you delete and recreate the alert. Our guide to TradingView alerts not firing goes through each of these causes in detail.
Check 2: is TradingView sending the webhook?#
When the alert does appear in the log, look at its Webhook status column. A failed delivery there means TradingView could not complete the HTTP request, and TradingView's own webhook configuration guide lists the rules that most often cause it:
- webhooks are only sent when two-factor authentication is enabled on your TradingView account,
- only ports 80 and 443 are accepted, so a URL that names any other port is refused,
- the request is cancelled if the receiver takes longer than three seconds to answer,
- IPv6 addresses are not supported.
Webhooks also need a TradingView plan that includes them, and the free plan does not, so if you cannot turn on Webhook URL in the alert's Notifications tab, check your plan and your 2FA setting before anything else.
After that, check the URL character by character. It has to be the receiver's exact address, with no leading or trailing space, no line break pasted in from a document and no extra path on the end. For PineHook the address is https://relay.pinehook.io/webhook, and the license key goes inside the alert message rather than in the URL.
Check 3: did the receiver accept the webhook?#
A delivered webhook still gets an HTTP status back, and TradingView records it in the same alert log. A 200 means the receiver accepted the request, while a 4xx code means it read the request and refused it. TradingView does not resend after a 4xx, so the refused alert is gone for good and the fix has to be in place before the next trigger.
The refusals you will meet most often are a malformed message (400), an unknown or inactive key (401), a sender the receiver does not trust (403), a message over the size limit (413) and a rate limit (429). Our guide to TradingView webhook error codes explains what causes each one, including the 415 error that some receivers return when a message is not valid JSON.
Check 4: did MT5 execute the trade?#
Once the receiver accepts the message, the order still has to get through the trading platform and the broker. On MT5 that means the EA has to be running with algorithmic trading enabled, the symbol has to exist under the broker's own name, and the broker has to accept the volume, the stops and the margin the order needs. Any one of those can turn a delivered webhook into a failed trade, and these guides cover the errors you are most likely to see at this stage:
- MT5 EA not trading, for Algo Trading and permission problems
- Symbol not found in MT5, for suffixes and broker names
- MT5 invalid volume, for lot step and minimum size
- MT5 error 10016 invalid stops, for stop placement
- MT5 error 10019 not enough money, for margin
How PineHook shows you where the webhook stopped#
Most of the time spent on a broken webhook goes into working out which stage failed, so PineHook puts every stage on one screen. An accepted alert appears in Dashboard → Signal Logs with its delivery and execution status, and a refused one appears in the Rejected panel with the faulty parameter highlighted and a sentence explaining what was wrong. When MT5 or the broker refuses the trade, the same row shows the reason in words, such as a stop that is too close to the price, next to the broker's own code, so you never have to decode a bare number before you can fix anything.
The one alert PineHook cannot record is one whose license key it cannot match to an account. With no account to store it against, that alert only appears in TradingView's log, which is why a missing Signal Logs row is itself a strong hint to check the key.
If you are tired of piecing together TradingView's log, a bridge's log and the MT5 Experts tab to find out why one alert did nothing, create a PineHook account without payment details and point a demo alert at it. The next failure will then arrive with its reason written out on the row where you first look.
Test the fix without waiting for the market#
Waiting for a strategy condition to happen again makes every fix slow to confirm, so test the route directly instead. Paste the alert message into Signal Logs → Alert Test & Validate and select Check alert to run it through PineHook's parser without placing a trade. Then use Test EA Connection to check the live route to your license and the MT5 trading permissions, again without placing a trade or using your alert allowance.
For a full end-to-end test, create a temporary alert on a demo account with a condition you can trigger on purpose, such as price crossing a level just above the market. Compare TradingView's webhook status, the Signal Logs row and the order in MT5 for the same timestamp, and once all three agree, delete the test alert so it cannot fire again later.
FAQ#
Does TradingView retry a failed webhook?
Only for some failures. TradingView's webhook resubmission page says it resends when the receiver answers with a status from 500 to 599 other than 504, waiting five seconds between attempts for up to three resends, while a timeout, a 4xx response or a refused port is never retried.
Can I test a TradingView webhook URL in my browser?
Not in a useful way. A browser sends a GET request, while webhooks arrive as POST requests with the alert message in the body. Some receivers, PineHook included, also accept requests only from TradingView's published IP addresses, so a test from your own computer can be refused even when TradingView's request would succeed.
Why did my TradingView webhook work yesterday and stop today?
Check whether the alert expired, whether you edited the script or its inputs without recreating the alert, and whether your TradingView plan or 2FA setting changed. If the alert log shows a delivered webhook, the change happened further along the route, so read the receiver's response and the platform's error for that trigger.
Related guides#
- TradingView webhook error codes
- TradingView alert not firing
- Webhook delivered but no trade on MT5
- Set up TradingView webhook alerts
TradingView and MetaTrader are trademarks of their owners, and PineHook is an independent product that is not affiliated with, endorsed by, or sponsored by TradingView or MetaQuotes. Leveraged trading carries a high risk of loss, so test any automated setup on a demo account before you trade it live.
