You built a strategy in TradingView. You set up an alert. The alert fires — you see it pop up, you get the email — but when you check your exchange, no trade was placed. Nothing happened. Your stop loss isn't set, your position isn't open, and the move you were trying to catch is already gone.
This is one of the most common and frustrating problems in automated crypto trading. The good news: it's almost always one of a short list of fixable configuration issues. Below are the nine reasons a TradingView alert fails to turn into an actual trade, ordered roughly from most to least common, with the fix for each.
1. You're on the free TradingView plan
Webhook alerts — the kind that send a request to an external service to place a trade — are a paid feature. On the free plan, the "Webhook URL" field in the alert dialog is greyed out. Your alert can still fire visually and send you an email, but it physically cannot send the webhook that triggers execution.
Fix: Upgrade to at least the TradingView Essential tier. This is the single most common reason beginners see "alerts but no trades." If the Webhook URL box is disabled when you create the alert, this is your problem.
2. The webhook URL is missing or wrong
Even on a paid plan, the webhook only works if you've pasted the correct destination URL into the alert's Notifications tab. A blank field, a typo, an http:// URL where https:// is required, or an old URL from a previous setup will all silently fail.
Fix: Open the alert, go to the Notifications tab, check the Webhook URL box, and paste the exact endpoint your trading platform gave you. Confirm it's HTTPS and has no trailing spaces. Re-create the alert after changing it — editing an existing alert doesn't always re-bind the webhook.
3. The alert message doesn't match what your bot expects
When the webhook fires, TradingView sends whatever is in the alert's Message box to your endpoint. Your bot parses that message to decide what to do. If the message is empty, free-form text, or in a format your bot doesn't recognize, the request arrives but the bot can't act on it.
Most platforms expect a structured JSON payload, something like:
"symbol": "{{ticker}}",
"action": "buy",
"price": "{{close}}"
}
Fix: Copy the exact message template your platform documents and paste it into the alert message box. Use TradingView's {{ticker}}, {{close}}, and {{strategy.order.action}} placeholders so the live values are filled in automatically. A single mismatched field name (e.g. pair vs symbol) is enough to break parsing.
4. Your exchange API keys lack trade permission
You connected your Bybit or Binance API keys, the webhook arrives, the bot tries to place the order — and the exchange rejects it because the key is read-only. Many people create API keys with "Read" permission only (for portfolio viewing) and forget to enable trading.
Fix: In your exchange's API management page, edit the key and enable spot and/or derivatives trading permissions. If your exchange uses IP whitelisting on the key, make sure your trading platform's server IP is on the allowlist — otherwise authenticated requests are blocked even with the right permissions.
5. The order is below the exchange minimum size
Exchanges enforce a minimum notional order value (often around $5–$10 on Bybit and Binance). If your alert tries to open a position smaller than that — common when position sizing is a tiny percentage of a small balance — the exchange rejects the order outright.
Fix: Increase your per-trade size above the exchange minimum, or check your platform's logs for a "minimum order size" / "order value too small" rejection. This one almost always shows up clearly in the execution log.
6. Symbol mismatch between TradingView and the exchange
The symbol you charted in TradingView isn't always the exact pair string the exchange expects. BTCUSDT.P (a perpetual on TradingView), BTCUSDT (spot), and the exchange's internal symbol can all differ. If the bot forwards the wrong symbol, the exchange can't find the market and the order fails.
Fix: Make sure the symbol in your alert maps to a valid pair on your connected exchange. If you're trading perpetuals, confirm your platform is routing to the derivatives market, not spot (and vice versa). Test with a major pair like BTC or ETH first to rule out symbol issues.
7. Insufficient balance or wrong wallet
A buy needs quote currency (usually USDT) in the correct wallet. If your funds are in the spot wallet but the trade targets the derivatives wallet — or you simply don't have enough free balance after existing positions — the order is rejected.
Fix: Confirm you have free USDT in the wallet matching the trade type (spot vs derivatives) and that it isn't all tied up as margin in open positions.
8. Server clock drift (the silent killer)
This one is sneaky. Exchanges like Bybit and Binance reject any signed API request whose timestamp is outside a tight window (the recvWindow, often 5 seconds) from the exchange's own server time. If the server running your bot has a clock that has drifted even a few seconds — which happens on cloud VMs and especially on machines that sleep and resume — every order silently fails with a "timestamp / recv_window" error, even though everything else is configured perfectly.
Fix: Use a platform that synchronizes time against the exchange (offset-based signing) and sets a wider recvWindow. If you run your own bot, enable time-difference adjustment in your exchange client and re-sync periodically rather than trusting the local clock.
9. The receiving server is down or unreachable
If the service that receives the webhook is offline, behind an expired SSL certificate, or unreachable when the alert fires, TradingView's request fails and the trade never happens. TradingView does not retry indefinitely — a missed webhook is simply gone.
Fix: Make sure your receiving endpoint is online 24/7 with a valid SSL certificate. This is one of the biggest reasons to use a managed platform rather than a self-hosted script on a machine that might sleep, reboot, or let its certificate lapse.
A simple troubleshooting order
When an alert doesn't execute, diagnose in this sequence:
- Is the Webhook URL field enabled and filled? (Plan + URL — #1, #2)
- Does your platform's webhook log show the request arriving? If no — the problem is in TradingView (message format, URL). If yes — the problem is on the exchange side.
- Does the log show an exchange rejection? Read the reason: permission, min size, balance, symbol, or timestamp (#4–#8).
- If nothing is logged at all, your receiving server was likely unreachable (#9).
The presence of a clear, timestamped execution log is the difference between five minutes of diagnosis and an hour of guessing. If your current setup doesn't show you exactly what happened to each alert, that alone is worth fixing.
Avoiding the whole problem
Most of these failure modes — clock drift, SSL/uptime, message parsing, symbol routing, permission handling — are infrastructure concerns that a self-hosted webhook script forces you to solve yourself. A managed execution platform handles them so the only thing you configure is the alert itself.
CryptoScope AI receives your TradingView webhook, handles the exchange-side signing and time sync, routes to spot or derivatives correctly, manages your take profit and stop loss after entry, and logs every alert so you can see exactly what executed and why. If a webhook arrives, you'll see it — and if an order is rejected, you'll see the reason in plain language.
Execute Your TradingView Alerts Reliably
Connect TradingView to Bybit or Binance, place trades automatically with managed TP/SL, and see every webhook in a clear execution log. The entire platform is 100% free — no credit card required.
Launch the Free AppRisk disclosure: Crypto trading involves substantial risk of loss. Automated execution does not guarantee profits.
Related reading: TradingView Webhook to Bybit: Complete Setup Guide • How to Auto-Execute TradingView Alerts on Bybit • Set Take Profit & Stop Loss Automatically