Short answer: When TradingView alerts are not working, the fault sits in one of four layers. Either the alert never triggered (condition, trigger frequency, an outdated script snapshot, expiration or a stopped alert), or it triggered but the notification was not delivered (app or push settings). Otherwise the webhook request failed (URL, port, TLS, timeout or an error reply from your server), or the plan does not include the feature. The alert log shows which layer failed, including a Webhook status column for every delivery.
TradingView alerts run on TradingView's servers, so they keep working when your browser is closed, and a failure can sit anywhere between the condition and your phone or server. Check the layers in a fixed order.
This guide follows that order, with limits from TradingView's Help Center and plan comparison as of October 2026. Designing the bridge that receives webhooks is covered in TradingView webhook bot, and message templates in TradingView alert message JSON.
Start with the alert log: did the alert trigger at all?
The alert log in the Alert manager separates trigger problems from delivery problems: no entry means the alert never fired, while an entry with a failed Webhook status means delivery failed.
| What the log shows | Where the problem is | Next check |
|---|---|---|
| No trigger at the expected time | Condition, frequency, snapshot, expiry or a stopped alert | Frequency, snapshot and limit sections below |
| Trigger logged, no push or email | Notification options or the device | Mobile checks |
| Trigger logged, Webhook status shows an error | URL, network, TLS or your server | Webhook error table |
| Trigger logged and delivered, but no order | Your bridge or the exchange | Your own server logs |
Keep the evidence: a daily cleanup at 21:00 UTC deletes triggers older than 30 days and keeps only the latest 100 per alert (as of October 2026), so download the log as CSV first.
TradingView's Terms of Use (opens in a new tab), read on 5 November 2026, describe alerts and webhooks as licensed for display use and prohibit using them for automated trading, including through third-party products or services. Read those terms and take legal advice before relying on this route; it is your agreement with TradingView.
Trigger frequency: once per bar vs once per bar close
An alert that fires at an odd moment, or later contradicts the chart, usually combines a frequency setting with repainting.
- Options. The alert dialog's Trigger setting offers Only once, Every time, Once per bar close and Once per minute (Help Center, October 2026). Pine's alert() takes alert.freq_once_per_bar, alert.freq_once_per_bar_close or alert.freq_all and has no only-once option.
- Intrabar alerts. With any other frequency than once per bar close, an indicator alert can trigger while the bar is forming, on values that can change before the close; the Pine Script FAQ recommends Once Per Bar Close.
- Late bar-close alerts. To confirm a close, the server waits for the first trade of the next bar, which on thin symbols can come seconds late. If nothing trades, for example after a session ends, it closes the bar one minute after its formal close (Help Center, October 2026).
Hypothetical example. An alert on RSI crossing below 30 on a 1-hour chart is not set to once per bar close. At 14:20 RSI dips to 29.6 and the alert fires; by the 15:00 close RSI is back at 31, so no closed bar shows the crossing. Once per bar close would not have fired.
Alerts on old script versions, changed inputs and strategies
An alert does not follow your later edits: it runs on a snapshot of the script, its inputs and the chart context taken when it was created.
- Edited code or inputs. Changes to the script or its settings do not reach existing alerts. Delete the alert and create a new one.
- Runtime errors. If the script hits a runtime error, alerts from that instance cannot fire because execution stops; exceeded collection limits and slow loops are common causes.
- Strategy alerts. They fire only for orders filled in real time, never on historical bars. Differences from the orders drawn on the chart come from calc_on_every_tick, calc_on_order_fills and trailing orders, which behave differently on live and historical data.
Related report settings are covered in the TradingView Strategy Tester guide.
TradingView alerts limit, expiration and stopped alerts
Every plan caps how many alerts are active and how long they run, and an alert that triggers too often is stopped.
| Feature | Basic | Essential | Plus | Premium | Ultimate |
|---|---|---|---|---|---|
| Active price alerts | 3 | 20 | 100 | 400 | 1,000 |
| Technical alerts on indicators, strategies and drawings | None | 20 | 100 | 400 | 1,000 |
| Watchlist alerts | None | None | None | 2 | 15 |
| Alert duration | 1 month | 2 months | 2 months | Open-ended | Open-ended |
| Webhook notifications | No | Yes | Yes | Yes | Yes |
| Second-based alerts | No | No | Yes | Yes | Yes |
- Free plan. The comparison lists no technical alerts for Basic, so alerts on indicators and strategies need a paid plan.
- Too many triggers. As of October 2026, more than 15 triggers in 3 minutes stops a regular alert. A watchlist alert stops one symbol after 15 triggers in 3 minutes, and stops entirely after 1,000 triggers across its symbols in 3 minutes.
- Expiration. Open-ended alerts exist on Premium and Ultimate only, not for watchlist alerts; after an upgrade, set each alert's Expiration to Open-ended and save it. Separately, alerts are deactivated if they were created more than a year ago and have neither triggered nor been edited for over a year.
- What counts. Each alertcondition() alert counts toward the total; all alert() calls in a script, or a strategy's order-fill alert, count as one.
TradingView alerts not working on iPhone or Android
When the log shows a trigger but the phone stays silent, the cause is on the account or device side, and TradingView's Help Center lists the checks:
- Confirm that the alert was created correctly, with the app notification option selected.
- Make sure the app is logged in with the account that owns the alert.
- Allow push notifications for the TradingView app in the phone's settings.
- On Android, also whitelist the app in the Autorun manager.
- Log out of the app and log in again.
Because alerts are evaluated on TradingView's servers, the alert log in the web or desktop app records a trigger even while the phone is off; if it is there, the problem is delivery.
TradingView webhook delivery failed: what each error means
Every webhook attempt is recorded in the alert log's Webhook status column, and the message there names the layer that failed.
| Message | Meaning | Fix |
|---|---|---|
| 3xx | Your server redirected the request | Put the final URL in the alert |
| 4xx | Your server rejected the parameters, data or access | Check the path, secret and firewall rules |
| 5xx | Valid request, but your server failed to process it | Fix the server; resent after 5 seconds, up to three times, except after 504 |
| Request took too long and timed out | No reply within 3 seconds | Reply first, process in the background |
| URL not allowed, domain not found, server unreachable | Typo, localhost or internal IP, unconfigured domain | Use a public hostname |
| HTTP instead of HTTPS, connection not secure | Faulty TLS configuration | Fix the certificate and TLS setup |
| Connection refused or closed | Server down, overloaded or too slow | Check the process and its capacity |
| Invalid response, server behaved unexpectedly | A bug in the receiving code | Read your server's error log |
| IP is not allowed | The URL resolves to a private, internal or restricted address | Point DNS at a public address |
| Something went wrong | Temporary failure or network problem | Watch whether it repeats |
Rule out the requirements before debugging code (as of October 2026): webhooks need a paid plan and two-factor authentication on the account, only ports 80 and 443 are accepted, and IPv6 is not supported. If your firewall uses an allowlist, TradingView sends from 52.89.214.238, 34.212.75.30, 54.218.53.128 and 52.32.178.7. The Help Center describes no request signing or custom headers, so a webhook secret travels inside the message and is checked as shown in the alert JSON guide. TradingView also warns that webhooks may occasionally fail to arrive.
A minimal endpoint to test TradingView webhooks
To separate TradingView problems from bridge problems, point a test alert at an endpoint that only records requests and replies 200 at once.
import json
import logging
import re
import time
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
TV_IPS = {"52.89.214.238", "34.212.75.30", "54.218.53.128", "52.32.178.7"}
logging.basicConfig(filename="webhooks.jsonl", level=logging.INFO, format="%(message)s")
# the value after the word secret, up to its closing quote or the line end; broken JSON still holds it
SECRET_RE = re.compile(r"""(?im)(secret\w*["“”'\\\s:=]*).*?(?=\\?["“”']\s*[,}\]]|$)""")
def redact(body: bytes) -> str:
return SECRET_RE.sub(r"\1***", body[:2000].decode("utf-8", "replace"))
class Hook(BaseHTTPRequestHandler):
def do_POST(self):
start = time.perf_counter()
body = self.rfile.read(int(self.headers.get("Content-Length", 0)))
self.send_response(200) # acknowledge first, work later
self.end_headers()
# behind a TLS proxy on port 443, take the client IP the proxy reports
ip = self.headers.get("X-Real-IP", self.client_address[0])
logging.info(json.dumps({
"received": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
"ip": ip, "known_tv_ip": ip in TV_IPS, "path": self.path.split("?")[0], # no query string
"content_type": self.headers.get("Content-Type"), "bytes": len(body),
"body": redact(body), "ms": round((time.perf_counter() - start) * 1000, 2)}))
def log_message(self, *args): # silence the default stderr log
pass
if __name__ == "__main__":
ThreadingHTTPServer(("127.0.0.1", 8080), Hook).serve_forever()Tested locally with one JSON message, one plain-text message and one template with a trailing comma, it wrote these three lines:
{"received": "2026-11-05T17:22:25Z", "ip": "127.0.0.1", "known_tv_ip": false, "path": "/tv-hook", "content_type": "application/json", "bytes": 80, "body": "{\"secret\": \"***\", \"alert_id\": \"Long-2026-11-05T02:00:00Z\", \"side\": \"buy\"}", "ms": 0.39}
{"received": "2026-11-05T17:22:25Z", "ip": "127.0.0.1", "known_tv_ip": false, "path": "/tv-hook", "content_type": "text/plain", "bytes": 18, "body": "BTCUSDT crossed up", "ms": 0.35}
{"received": "2026-11-05T17:22:25Z", "ip": "127.0.0.1", "known_tv_ip": false, "path": "/tv-hook", "content_type": "text/plain", "bytes": 40, "body": "{\"secret\": \"***\", \"side\": \"buy\",}", "ms": 0.39}Run it behind a reverse proxy that terminates TLS on port 443 and forwards to 127.0.0.1:8080, and trust X-Real-IP only if the proxy overwrites it. The handler replies before anything else, records the content type, which reveals a broken JSON template as text/plain, and masks the secret, because secrets must never reach logs (see API key security for trading bots). The mask works on the raw text, so it also covers broken JSON, typographic quotes and an uppercase key, but a text pattern is a best effort, so use a throwaway secret with this test endpoint. Then check in order:
- Alert log: did it trigger, and what does Webhook status say?
- Proxy access log: did a request arrive from a TradingView address?
- Endpoint log: content type, body and handling time.
- Bridge and exchange logs: what happened after the reply.
A fuller receiver with a schema check and a duplicate filter is in a tested Python receiver. Even then, timely delivery is not guaranteed, and automated orders can lose money. Setting up monitoring and hardening such a chain is part of the TradingView automation service. If you already have a bridge that misbehaves, Fincode can review the code.
Frequently asked questions
Why did my TradingView alert not trigger?
It may have expired, been stopped after more than 15 triggers in 3 minutes (the October 2026 rule), or be running an old snapshot of the script. No entry in the alert log means it never fired.
Why are TradingView alerts delayed?
Once per bar close alerts wait for the first trade of the next bar, which can take seconds on thin symbols; with no trades the bar closes one minute late.
What IP addresses does TradingView send webhooks from?
As of October 2026: 52.89.214.238, 34.212.75.30, 54.218.53.128 and 52.32.178.7, per the Help Center.
Does TradingView retry a failed webhook?
As of October 2026, only after a 5xx reply other than 504: up to three resends, 5 seconds apart. Store an alert ID to ignore repeats.
Why are TradingView alerts not working on my iPhone?
Usually push notifications are off for the app, the app uses another account, or the alert has no app notification selected.
How many alerts can I set on TradingView?
On 25 October 2026: 3 price alerts and no technical alerts on Basic; 20, 100, 400 and 1,000 of each on Essential, Plus, Premium and Ultimate.
Sources
- TradingView Help Center: How to configure webhook alerts (opens in a new tab)
- TradingView Help Center: What do errors mean when sending webhooks? (opens in a new tab)
- TradingView Help Center: Webhook resubmission (opens in a new tab)
- TradingView Help Center: Delays in OncePerBarClose alerts (opens in a new tab)
- TradingView Help Center: Alert was triggered too often and stopped (opens in a new tab)
- TradingView Help Center: Learn how to configure alerts (opens in a new tab)
- TradingView Help Center: I upgraded to the Premium plan but my alerts still expire in 2 months (opens in a new tab)
- TradingView Help Center: Automatic deletion of old alert triggers from the Log (opens in a new tab)
- TradingView Help Center: iOS: I am not receiving notifications about triggered alerts (opens in a new tab)
- TradingView Help Center: Android: I am not receiving notifications about triggered alerts (opens in a new tab)
- TradingView Help Center: Strategy alerts (opens in a new tab)
- TradingView Help Center: Common reasons for mismatches between strategy alert triggers and strategy orders on the chart (opens in a new tab)
- TradingView Pine Script v6 FAQ: Alerts (opens in a new tab)
- TradingView Help Center: Will alerts work if TradingView is not open on the computer? (opens in a new tab)
- TradingView: Plans and pricing (alerts comparison) (opens in a new tab)
This guide is general information about software and markets, not investment, legal or tax advice. Automated trading can lose money, past or backtested performance does not guarantee future results, and the rules that apply depend on your jurisdiction and your exchange's terms. Sources, checks and corrections: see the editorial policy.