You set up a TradingView alert. You wait. Nothing happens. The price clearly crossed your level, but your phone stays silent.
I have been running TradingView alerts daily for my USDJPY momentum strategy for over a year. In that time, I have debugged every possible alert failure mode — missed entries, phantom triggers, alerts that fire 47 times in a row, and alerts that simply refuse to activate. This guide covers every reason your TradingView alert might not be triggering, with the exact fix for each one.
---
1. Wrong Alert Frequency Setting
This is the #1 reason alerts fail, and I wrote a dedicated deep-dive on alert frequency settings if you want the full breakdown.
The problem: You set your alert to "Only Once," and it already fired. Now it will never trigger again. How to fix it:- Open the alert in Manage Alerts (right panel or Alt+A)
- Check the "Trigger" dropdown
- For ongoing monitoring, use Once Per Bar Close (most reliable for strategies)
- For one-time price levels, use Only Once — but know it is a single-shot
| Use case | Best setting |
|---|---|
| Strategy signal (entry/exit) | Once Per Bar Close |
| Price crossing a support/resistance level | Once Per Bar |
| One-time notification (earnings, event) | Only Once |
| Debugging / testing an indicator | Every Tick |
---
2. Alert Condition No Longer True
TradingView does not retroactively re-evaluate alerts. If you set an alert for "RSI crosses above 70" and RSI was already at 72 when you created it, the alert needs RSI to drop below 70 and then cross back above 70 to trigger.
How to fix it:- Delete the alert and recreate it
- Or use "RSI greater than 70" instead of "RSI crosses above 70" if you want it to fire when the condition is currently true
- Check the current value of your indicator on the chart before setting the alert
---
3. Wrong Timeframe
This one catches people constantly. You are looking at a 1-hour chart but your alert was set on a 15-minute chart. The alert evaluates on the timeframe it was created on, not the one you are currently viewing.
How to fix it:- Switch to the exact timeframe you want the alert to evaluate on
- Create the alert while on that timeframe
- In the alert dialog, verify the timeframe shown next to the condition
---
4. Alert Expired
Free TradingView accounts get alerts that expire after 2 months. Even paid plans have expiration dates — you just get longer durations.
How to fix it:- Go to Manage Alerts (clock icon in right panel)
- Look for alerts marked with a yellow warning icon or "Expired" status
- Restart them or set a new expiration date
- On Essential plan or higher, you get longer expiration periods and more active alerts
| Plan | Active alerts | Server-side alerts | Expiration |
|---|---|---|---|
| Free (Basic) | 1 | 1 | 2 months |
| Essential | 20 | 20 | 2 months |
| Plus | 100 | 100 | Open-ended |
| Premium | 400 | 400 | Open-ended |
---
5. Too Many Active Alerts
You hit your plan's alert limit. TradingView silently stops creating new alerts once you are at the cap — or it may deactivate older ones depending on the plan.
How to fix it:- Check how many alerts you have: Manage Alerts → count them
- Delete alerts you no longer need
- Consolidate multiple alerts into one using Pine Script conditions (e.g., combine RSI + EMA + MACD checks into a single all-in-one indicator)
6. Server-Side vs Client-Side Alert Confusion
TradingView has two types of alerts:
- Server-side alerts run on TradingView's servers 24/7, even when your browser is closed
- Client-side alerts (from some custom indicators) only work while your TradingView tab is open
- Keep your TradingView tab open if you suspect client-side alerts
- Better: rewrite your Pine Script indicator to use alert-compatible functions
- Use
alertcondition()in your Pine Script — this creates proper server-side alerts
7. Pine Script alertcondition() Not Set Up
If you wrote a custom Pine Script indicator, you need to explicitly add alertcondition() calls for TradingView to know when to fire alerts.
//@version=6
indicator("My Momentum Signal")
longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 50))
shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 50))
// Add these lines to enable alerts:
alertcondition(longCondition, title="Long Signal", message="SMA 10 crossed above SMA 50 on {{ticker}} ({{interval}})")
alertcondition(shortCondition, title="Short Signal", message="SMA 10 crossed below SMA 50 on {{ticker}} ({{interval}})")
plot(ta.sma(close, 10), color=color.blue)
plot(ta.sma(close, 50), color=color.red)
Key points:
Like what you're reading? Try it yourself — this link supports ChartedTrader at no cost to you.
Start Charting with TradingView →alertcondition()must be in anindicator(), not astrategy()- For strategies, use
strategy.entry()and set alerts on strategy events instead - The
messageparameter supports placeholders like{{ticker}},{{interval}},{{close}}
8. The Symbol Changed or Was Delisted
If you set an alert on "BTCUSD" from exchange A, but that trading pair was delisted or the exchange changed its symbol format, your alert is orphaned.
How to fix it:- Open Manage Alerts and check the symbol on each alert
- If you see a warning icon or the chart shows "No Data," the symbol is no longer valid
- Delete the alert and recreate on the correct symbol
- For crypto: use a major exchange feed (Binance, Coinbase) to avoid this
9. Webhook Not Receiving Alerts
If you are sending alerts to a webhook (for automated trading via OKX Signal Bot or a Google Sheets journal), the alert might be firing but your webhook is not receiving it.
Troubleshooting steps: 1. Test with a simple webhook endpoint first (use webhook.site to verify TradingView is sending) 2. Check that your webhook URL is HTTPS (TradingView requires SSL) 3. Verify the webhook URL has no trailing spaces (copy-paste errors are common) 4. Check your webhook server logs for 4xx/5xx errors 5. TradingView webhooks require a paid plan (Essential+) — free accounts cannot use webhooks Common gotcha: If you changed your webhook URL or your server went down, TradingView may have temporarily disabled the webhook after repeated failures. Delete and recreate the alert with the correct URL.---
10. Market Is Closed
For stocks and forex, TradingView only evaluates alerts during market hours by default. If you set an alert on AAPL at 10 PM ET on a Saturday, nothing will happen until Monday at 9:30 AM ET.
How to fix it:- For 24/7 monitoring, use crypto pairs or forex pairs on exchanges that support extended hours
- Check the "Extended Hours" toggle in your alert settings if available
- For forex (like my USDJPY setup), alerts work Sunday evening through Friday evening — but not on weekends
11. Indicator Repainting
Your indicator repaints — meaning it changes historical values after the bar closes. This causes a mismatch between what you see on the chart (which shows the repainted, corrected values) and what the alert evaluated in real-time.
How to fix it:- Use
barstate.isconfirmedin your Pine Script to only evaluate conditions on closed bars - Set alert frequency to "Once Per Bar Close" (this naturally avoids repaint issues)
- Test your indicator by watching it in real-time — if the signal arrow moves or disappears as the bar develops, it repaints
//@version=6
indicator("Non-Repainting Signal")
longSignal = ta.crossover(ta.sma(close, 10), ta.sma(close, 50)) and barstate.isconfirmed
alertcondition(longSignal, title="Confirmed Long", message="Confirmed crossover on {{ticker}}")
---
12. TradingView Server Issues
Rarely, TradingView's alert servers have outages or delays. This is uncommon but does happen.
How to check:- Visit TradingView Status
- Check r/TradingView — if alerts are down, you will see 50 posts about it within minutes
- Check your email — TradingView sends notifications about major outages to paid subscribers
---
Quick Diagnostic Checklist
When an alert is not triggering, run through this list:
1. ✅ Is the alert active (not expired, not paused)?
2. ✅ Is the frequency setting correct for your use case? 3. ✅ Is the condition currently possible (not already satisfied)? 4. ✅ Is the timeframe correct? 5. ✅ Is the symbol still valid? 6. ✅ Is the market open? 7. ✅ Do you have server-side alerts (not client-side)? 8. ✅ For custom indicators: isalertcondition() implemented?
9. ✅ For webhooks: is the endpoint receiving traffic?
10. ✅ Does your plan support the number of alerts you need?
If you check all 10 and the alert still does not fire, delete it and recreate it from scratch. Sometimes the alert state gets corrupted internally, and a fresh alert solves it.
---
My Alert Setup (What Actually Works)
For my USDJPY momentum strategy, I run alerts with these settings:
- Condition: Custom Pine Script indicator with
alertcondition() - Frequency: Once Per Bar Close
- Timeframe: Daily (I check signals at the daily close)
- Notification: Push notification + webhook to my trading system
- Plan: I use TradingView Plus — 100 alerts is more than enough for a focused strategy
---
Related Guides
- TradingView Alert Frequency Explained: Once Per Bar vs Once Per Bar Close — deep dive on frequency settings
- TradingView Plans Compared: Essential vs Plus vs Premium — which plan for your alert needs
- OKX Signal Bot + TradingView: No-Code Automation Setup — webhook alert → auto-trade
- TradingView Webhook to Google Sheets Journal — log alerts automatically
- Pine Script Beginner Guide — learn alertcondition() from scratch
*I use TradingView daily for my USDJPY momentum strategy. If you are looking for a charting platform with reliable server-side alerts, start with TradingView here — the free plan lets you test one alert before committing to a paid plan.*