Troubleshooting · Webhook

TradingView Webhook Delay
Official specs, common causes, and what you can fix

2026-07-08·10 min read

You set up a TradingView alert to auto-trade, and the signal shows up later than you expected — sometimes a few seconds, sometimes what feels like several minutes. Here's the short version: eight times out of ten, the delay you're feeling isn't TradingView itself being slow. It's one of three things — (1) the alert frequency you chose is doing exactly what you told it to, (2) your own receiving server is responding too slowly and getting timed out, or (3) your plan doesn't even support webhooks.

One honest thing up front: TradingView has never publicly promised a webhook delivery time, and there is no SLA. This post won't hand you a made-up "average delay is X seconds" number. Instead it lays out what the official docs actually specify, the plan restrictions, the community reports labeled as such, and — most usefully — which delays you can fix and which are structural.

TL;DR
There is no official delay SLA. Most of what people call "slow" is actually Once Per Bar Close waiting for the candle to close, exactly as designed. The real documented spec is that your receiving server gets cancelled — with no retry — if it doesn't respond within 3 seconds. The free plan has no webhooks at all. The one thing that genuinely can't be fixed is the internal time TradingView takes between a condition firing and the webhook actually being sent — no public number exists for that.

Debunking the biggest myth first: "Once Per Bar Close" isn't slow, it's deliberate

TradingView's own docs define alert frequency clearly: Once per bar checks every bar and fires the moment conditions are met, no more than once per bar, without waiting for the close. Once per bar close uses the same logic but requires the bar to close before it fires. That one word — "close" — is what decides whether your signal feels instant or feels slow.

1
On a 1-hour chart, price touches your condition right at the 14:00 candle open
Frequency = Once per barFires the instant the condition is met — the webhook goes out nearly immediately.
Frequency = Once per bar closeThe system waits until the candle closes at 15:00 to fire — a 59-minute wait caused by your own setting, not TradingView being slow.

One more distinction people miss: the frequency labels above belong to the "Create Alert" dialog UI, and apply to price/technical/alertcondition() alerts. Pine's alert() function has an entirely different freq parameter with only three legal values — alert.freq_once_per_bar (default),alert.freq_once_per_bar_close, and alert.freq_all. There's no "Once Only" and no "Once per minute" equivalent at the code level, even though a lot of tutorials treat them as interchangeable.

Strategies also recalculate at bar close by default: unless calc_on_every_tick = true is enabled in your code, alert() only fires once at the close no matter what freq you set, even alert.freq_all. This is the real reason behind "my strategy is supposed to be real-time but still waits for the close."

What does TradingView actually commit to?

Searching the official Help Center, Pine Script docs, and the status page turns up nothing that quantifies webhook delay or delivery time as an SLA. What the docs do specify, precisely, are these receiving-end specs — not TradingView's internal processing time:

3 sec
Timeout — no response, request cancelled
No retry
On timeout or 4xx, the request is not resent
5 sec
Wait before a resend, but only after a 5xx
3 max
Retry cap on 5xx (4 sends total)
2 months
Default max alert lifetime
15 / 3 min
Firing too often auto-stops the alert

In other words, what's officially promised is how fast your server has to respond — not how fast TradingView itself goes from condition-met to webhook-sent. There is no public number for the latter.

Your plan might not even support webhooks

Before you go chasing latency, rule out something more basic: the free Basic plan doesn't support webhook notifications at all. On the pricing page comparison table, that's a flat "no", not "slower".

Basic (Free)EssentialPlusPremiumUltimate
Webhook notifications
Active price alerts3201004001,000
Active technical alerts0201004001,000
Alert duration cap1 mo.2 mo.2 mo.Open-ended (opt-in)Open-ended (opt-in)
An honest observation: TradingView's own pricing page contradicts itself
The marketing bullet list on the pricing page lists "Alerts that don't expire" under all four paid tiers — Essential, Plus, Premium, and Ultimate — which would suggest Essential and Plus can also set alerts to never expire. But the detailed comparison table further down the same page is explicit: Essential and Plus both cap alert duration at 2 months, and the official Help Center states plainly that only Premium and Ultimate can enable the open-ended option. When the marketing copy and the comparison table disagree, trust the table and the Help Center wording, not the bullet list.

What you can fix yourself vs what you can't

Here's the same set of official specs and common gotchas organized into two buckets — things you can change, and things that are structural.

IssueWhat you can do
Frequency set to Once per bar close but you wanted real-timeSwitch to Once per bar; for strategies wanting per-tick firing, enable calc_on_every_tick
Server times out at 3 seconds, no retryReturn HTTP 200 immediately on receipt, push the actual order logic to a background job — never block the request on exchange calls
Message or request body too large, errors out4000-char cap on manual alert messages, 40960-char cap on alert() / alert_message — trim your payload
Edited your Pine script but the alert doesn't reflect itAlerts snapshot the script at creation time — delete and recreate the alert after code changes
Plan doesn't support webhooks or alert count is too lowUpgrade to Essential or above; request more active alert slots if you're still short
TradingView's internal time from condition-met to webhook-sentNot fixable — no SLA, no published number. Track it yourself via your own signal log / replay data
Alert firing more than 15 times in 3 minutes gets auto-stoppedCan't raise the cap — redesign your signal logic to fire less often
Only ports 80/443 accepted, no IPv6A fixed spec, not fixable — your receiving endpoint needs a standard port and IPv4

Your own server is a delay source too — here's how we handle it

The "3 seconds, no retry" rule earlier is easy to underestimate. If your receiving server does everything in one request — validate the signal, call the exchange API, wait for the fill — it's very easy to blow past 3 seconds under real trading conditions. When that happens, TradingView marks the request failed and drops it, with no retry. You may never even notice the signal was lost.

TVSBot acknowledges the webhook immediately on receipt and pushes the actual order logic to a background job, specifically to avoid tripping TradingView's 3-second timeout. Our own FAQ documents this leg — signal received to order placed — as: a target P95 under 500ms, with actual latency typically totaling 1-3 seconds. That's our own stated target and general experience, not a benchmark with a published testing methodology — we're noting it here to be transparent about what the receiving end can realistically achieve, not to dress it up as a precise number.

For a full walkthrough of wiring up the webhook and what fields your payload needs, see the TradingView Webhook Complete Tutorial. If your order sizes don't match what you expected, that's usually a separate trap covered in the qty_type semantic trap post.

Source verification: IP allowlist vs SSL certificate

The IP addresses TradingView currently publishes for webhook requests (verified as of July 2026) are:

text
52.89.214.238
34.212.75.30
54.218.53.128
52.32.178.7

But the docs never promise this list stays fixed forever. A more durable approach is verifying the SSL certificate TradingView attaches to each request (CN = webhook-server@tradingview.com) — TradingView provides this itself, and it's more reliable than an IP allowlist alone.

Diagnosing why your alert "feels slow"

1
Is your alert frequency set to Once per bar close?
YesBy design — it's waiting for the candle to close.
NoKeep checking below.
2
Are you on the free Basic plan?
YesThis plan has no webhooks at all — upgrade to unlock it.
NoKeep checking below.
3
How fast does your receiving server respond?
Over 3 secondsCancelled with no retry — return 200 immediately, move order logic to a background job.
Under 3 secondsKeep checking below.
4
How old is this alert — has it expired?
ExpiredShows a red "Stopped — Expired" status in Alert Manager; default lifetime is 2 months — just recreate it.
Not expiredKeep checking below.
5
Has it fired more than 15 times in the last 3 minutes?
YesThe system auto-stops the alert — redesign your signal logic to fire less often.
NoWith all of the above ruled out, you may be looking at genuine TradingView-side processing time — there's no published SLA, so track it via your own long-term signal logs.
Community report — for context only
A Reddit user in r/TradingView reported: "Latency is bad because in peak hours you will be notified 10 seconds later... Also sometimes webhook doesn't fire." This is one individual's experience, without a stated testing method, sample size, or server location — it's not a statistic, just a data point suggesting delay can reach double-digit seconds under some conditions.

Pre-launch checklist

  • Confirm your plan supports webhooks (Essential or above) — free Basic doesn't
  • Pick the right frequency: Once per bar for real-time, Once per bar close for confirmed closes
  • Your server returns 200 immediately on receipt — never run the full order flow inside the 3-second window
  • Verify requests are genuinely from TradingView via SSL certificate, or at minimum an IP allowlist
  • Delete and recreate alerts after editing Pine code — they don't auto-update
  • Check Alert Manager periodically for a red "Stopped — Expired" status
Why does my TradingView alert take several minutes to fire?
Check whether the frequency is set to Once per bar close — that setting deliberately waits for the candle to close before firing, which can mean up to nearly an hour on a 1-hour chart. It's not a bug, it's the design. Switch to Once per bar if you need a faster reaction.
Does TradingView guarantee a webhook delivery time?
No. Searching the official Help Center, Pine Script docs, and status page turns up no quantified promise or SLA for webhook delay or delivery time. The only documented timing spec is the receiving-end one: your server must respond within 3 seconds or the request is cancelled with no retry.
Can I use webhooks on the free plan?
No. On the pricing page comparison table, the free Basic plan's webhook notifications row is a flat "no." You need Essential or above (roughly $12.95/mo billed annually) to get webhook support.
What is TradingView's official webhook source IP allowlist?
As of the July 2026 verification, the published list is 52.89.214.238, 34.212.75.30, 54.218.53.128, and 52.32.178.7 — but TradingView doesn't promise this list is permanent. Pairing it with SSL certificate verification (CN = webhook-server@tradingview.com) is a more durable approach.
My alert isn't firing at all — why?
Common causes: your plan doesn't support webhooks, the alert has expired (2-month default), a Pine runtime error halted the script, the alert fired more than 15 times in 3 minutes and got auto-stopped, or your server didn't respond within 3 seconds and the request was cancelled with no retry.

Get started

Ready to ship what you just learned?

TVSBot is a non-custodial TradingView → exchange automation bridge across 7 exchanges — Binance, OKX, Bitget, Bybit, Gate.io, BingX, and Hyperliquid. We acknowledge every webhook immediately and process orders in the background, specifically to stay clear of TradingView's 3-second timeout.

Start free