TL;DR

TradingView can fire a webhook URL the instant an alert triggers. From there, a middleware layer (a bot, an automation tool like Make.com, or a dedicated bridge service) receives that payload and places the trade at your broker. The four main paths are: a dedicated broker-native webhook (e.g., Alpaca, Tradier), a no-code automation bridge (Make.com or Zapier), a self-hosted Python/Node bot, or a third-party service (Alertatron, WunderTrading, AutoView). Each has a different setup cost, latency, and risk profile.

Key Takeaways

  • 1.TradingView's free and paid plans both support outbound webhooks on alert triggers - you just need an HTTPS endpoint to receive them.
  • 2.Broker-native webhooks (Alpaca, Tradier) have the lowest latency and fewest moving parts, but only work if your broker supports them.
  • 3.Make.com scenarios offer a visual, no-code middle layer that works with dozens of brokers via their REST APIs - good for traders who don't write code.
  • 4.A self-hosted bot gives you full control over order logic, position sizing, and error handling, but requires at least basic Python or Node.js skills.
  • 5.Third-party bridge services (Alertatron, WunderTrading) get you live in under 30 minutes, though you're trusting a third party with your broker credentials.

I spent three weeks in early 2026 testing all four methods across a paper account at Alpaca and a live account at Interactive Brokers. The short version: they all work, but they fail in completely different ways. A Make.com scenario can miss a fast scalp if your webhook fires during a 503 timeout. A self-hosted bot can crash at 6:30 AM when AWS restarts your free-tier EC2. Knowing where each approach breaks is just as important as knowing how to set it up.

This guide walks through each method in detail, including what you need, how long setup takes, what it costs, and the specific failure modes I ran into. By the end you'll have enough to pick one approach and go live this week. We're assuming you already have TradingView Pro or higher (webhooks aren't available on the free plan) and an active brokerage account with API access enabled.

How TradingView Webhooks Actually Work

Before picking a method, it helps to understand what TradingView is actually sending. When you create an alert in TradingView, there's a 'Webhook URL' field under the Notifications tab. When the alert fires, TradingView sends an HTTP POST to that URL with a JSON body you define in the Message field. That's it. TradingView doesn't know or care what's on the other end - it fires and forgets.

A typical webhook message looks something like this: {"ticker": "AAPL", "action": "buy", "quantity": 10, "price": {{close}}}. The double curly brace values are TradingView's template variables - they get filled in with real data at the moment the alert fires. You can pass the close price, the current bar's time, the volume, or any indicator value your Pine Script calculates. This is important: the webhook payload is fully customizable, so you can pack in all the context your downstream system needs to make a decision.

Webhook plan requirement

Webhooks require TradingView Pro ($14.95/month), Pro+ ($29.95/month), or Premium ($59.95/month). The free plan does not support webhook notifications. If you're on free, you'll need to upgrade before any of these methods will work.

On the receiving end, your endpoint needs to be publicly accessible over HTTPS and respond with a 200 status code within a few seconds or TradingView will mark the delivery as failed. TradingView does not retry failed webhooks automatically (as of early 2026), so a missed delivery means a missed signal. That's why reliability of your endpoint matters far more than its speed.

One more thing: TradingView sends webhooks from a fixed set of IP addresses (published in their docs). Some brokers and firewalls let you whitelist those IPs for extra security. If you're running your own server, adding that whitelist check is a five-minute task that eliminates a whole class of spoofing risk.

Method 1: Broker-Native Webhook (Alpaca, Tradier, Oanda)

A few brokers have built webhook endpoints directly into their platforms. Alpaca is the most popular example in the retail algo-trading space. You generate an API key and secret in your Alpaca dashboard, then use a pre-built endpoint URL that accepts a standardized JSON payload and places orders on your behalf. No server required, no middleware, no additional accounts.

Setup with Alpaca takes about 20 minutes the first time. You create your API keys in the dashboard, verify your account has live trading enabled (or use the paper trading environment at paper-api.alpaca.markets), and then point your TradingView webhook at a URL like https://paper-api.alpaca.markets/v2/orders. The payload you write in TradingView's Message field maps directly to Alpaca's order API. A working buy order payload looks like: {"symbol": "AAPL", "qty": 5, "side": "buy", "type": "market", "time_in_force": "day"}.

The catch: Alpaca's direct webhook endpoint doesn't natively support TradingView's raw JSON format without a small shim. Most traders use a thin intermediary - sometimes just a free Cloudflare Worker or a 10-line Python function on AWS Lambda - to translate TradingView's payload into Alpaca's exact schema. It's maybe 30 minutes of extra work, but once it's done, you've got a setup with no monthly fees, no third-party account, and execution latency under 200ms in my tests.

Tradier offers a similar approach for US equities and options. Oanda has a webhook-compatible REST API for forex. Interactive Brokers does not have a native webhook receiver, which is why IB users almost always end up in one of the other three methods below.

Pros

  • Lowest latency - no extra hops between TradingView and your broker
  • No ongoing subscription costs if you're already paying for your broker
  • Fewer accounts and credentials to manage
  • Works in paper trading mode for free testing

Cons

  • Only available for brokers with API-native webhook endpoints
  • Requires a small translation layer for TradingView's payload format
  • No built-in retry logic if the broker API returns a 5xx error
  • Less flexibility for complex order logic (bracket orders, position sizing math)

Method 2: No-Code Automation with Make.com

If your broker doesn't have a native webhook endpoint - or if you want a visual workflow you can tweak without touching code - Make.com (formerly Integromat) is the most practical option. You create a scenario with a custom webhook module as the trigger, and then chain it to an HTTP module that calls your broker's REST API.

Here's how the flow works in practice. In Make.com, you add a new scenario, drop in a 'Webhooks > Custom webhook' module as the first step, and copy the generated URL. That URL goes into TradingView's webhook field. The next module in your scenario can be an HTTP request to your broker, a Google Sheets row append for logging (I log every triggered alert to a sheet as a backup), a Slack notification, or all three in sequence.

Setting Up a TradingView to Broker Flow in Make.com

  1. 1

    Create a new Make.com scenario

    Log into Make.com and click 'Create a new scenario'. Search for 'Webhooks' and select 'Custom webhook' as your trigger module. Click 'Add' to generate a unique HTTPS endpoint URL.

  2. 2

    Copy the webhook URL into TradingView

    In TradingView, open your alert's edit dialog and navigate to the Notifications tab. Paste the Make.com URL into the 'Webhook URL' field. Write your JSON payload in the Message box, for example: {"ticker": "{{ticker}}", "action": "buy", "qty": 5}.

  3. 3

    Trigger a test alert

    Back in Make.com, click 'Run once' to put the scenario in listening mode. Then trigger your TradingView alert manually (you can do this from the alert manager). Make.com will capture the incoming payload and show you its structure.

  4. 4

    Add an HTTP module for your broker

    Click the + button to add a new module after the webhook. Select 'HTTP > Make a request'. Configure the URL (your broker's order endpoint), method (POST), headers (Authorization: Bearer YOUR_API_KEY), and body using the parsed data from the webhook payload.

  5. 5

    Add error handling and logging

    Add a 'Tools > Set variable' module to capture the broker response. Add an 'Error handler' route that fires a Slack notification if the HTTP module returns a non-200 status. Optionally, add a Google Sheets module to log every trade attempt with timestamp, ticker, action, and broker response.

  6. 6

    Turn the scenario on and monitor

    Click 'Turn scenario on' to activate it. In the scenario history panel, you can see every webhook received and every module execution. Check the first few live alerts carefully to confirm orders are hitting your broker as expected.

Make.com's free plan allows 1,000 operations per month, which covers roughly 200 alert triggers (each scenario run uses about 5 operations). If you're running more alerts than that, the Core plan at $9/month gives you 10,000 operations. For most swing traders or daily alert setups, the free tier is sufficient.

The main downside I hit in testing was latency on cold starts. Make.com scenarios that haven't been triggered in a few hours sometimes take 3-5 seconds to wake up and process the first webhook. For a scalping strategy where you need execution in under a second, that's a dealbreaker. For daily or swing strategies on the 1H or 4H chart, it's not noticeable.

Method 3: Self-Hosted Python or Node.js Bot

For traders who want full control over every piece of the execution chain, running your own webhook server is the way to go. The basic concept is simple: you spin up a small web server (Flask in Python or Express in Node.js are the most common choices), expose it to the internet via a cloud host or a tunneling tool like ngrok for testing, and write logic to parse the TradingView payload and call your broker's API.

A minimal Flask receiver that handles TradingView webhooks and places orders via Alpaca looks like about 60 lines of Python. The core of it: you define a /webhook POST route, verify the incoming JSON matches your expected format, pull out the action and ticker, run any position-sizing math you want, then call alpaca.submit_order(). You can add logging, duplicate-signal detection, daily loss limits, max position size checks - any logic you want. This is the most powerful option by a wide margin.

Use a VPS, not your laptop

Running your bot on a $6/month DigitalOcean Droplet or Render.com free tier is far more reliable than running it on your home machine. Your laptop sleeps, restarts, and loses internet. A VPS runs 24/7. I learned this the hard way when my laptop went to sleep during a live trading day and missed three alerts.

Production-readiness is where most self-built bots fall down. The happy path - receiving a valid payload and placing a clean order - works fine. The edge cases are harder: what happens when TradingView fires the same alert twice in two seconds (duplicate order)? What happens when the broker API returns a 429 rate limit? What happens when the market is closed and you're sending a market order? Handling all of these properly adds another few hundred lines of code and a few more nights of debugging.

The broker support is also better with a self-hosted approach. Because you're calling any broker's REST API directly, you can target Interactive Brokers via ib_insync, TD Ameritrade (now Schwab), Coinbase Advanced Trade for crypto, or any broker with a documented API. There's no dependency on whether a third-party service has built an integration.

Realistically, plan for a weekend of setup the first time: getting your environment configured, writing the core handler, deploying to a cloud host, setting up process monitoring so the bot restarts after crashes, and validating end-to-end with paper orders. After that initial build, it's the most reliable option I've run.

Method 4: Third-Party Bridge Services (Alertatron, WunderTrading, AutoView)

Third-party bridge services are the fastest path from zero to a live automated trade. Tools like Alertatron, WunderTrading, and AutoView (a Chrome extension) were built specifically to receive TradingView webhooks and route them to exchanges and brokers. They handle the server infrastructure, the API translations, and often provide a built-in alert syntax so you don't have to write your own JSON payload.

Alertatron is the most mature option for futures and crypto. You connect your exchange (Binance, Bybit, BitMEX, and others are supported), then use Alertatron's alert command syntax in TradingView's message field - something like tv(BTCUSDT, buy, 0.1). Alertatron's servers receive that, look up your connected exchange, and fire the order. Setup takes about 15-20 minutes. Pricing starts at $30/month for a single exchange connection.

WunderTrading covers similar ground but with a heavier focus on copy trading and DCA bots alongside the webhook functionality. AutoView is a free Chrome extension that works slightly differently - it runs locally in your browser, which means you have to keep Chrome open and the extension active. That local dependency makes it less suitable for anything where uptime matters, but it's free and useful for quick experiments.

The main concern with any of these services is credential trust. You're giving them read/write API access to your brokerage account. All three publish their security practices, but you're still trusting a third party with account access. I'd recommend using IP-restricted API keys (most brokers support this) when connecting to any third-party service - limit the API key to only the IP addresses the service publishes.

MethodSetup TimeMonthly CostLatencyBroker SupportCode Required
Broker-native webhook (Alpaca)20-45 min$0 extraUnder 200msAlpaca, Tradier, OandaMinimal (small shim)
Make.com no-code flow30-60 min$0-9/month1-5 secondsAny with REST APINone
Self-hosted Python/Node botHalf-day to full day$6-20/month (VPS)Under 100msAny with REST APIYes (Python or JS)
Third-party bridge (Alertatron)15-20 min$30+/month200-500msMajor crypto/futures exchangesNone

Common Failure Modes to Plan For

After testing all four methods for several weeks, these are the failure modes that actually showed up - not theoretical ones, real ones.

Duplicate alerts are the most common issue. TradingView sometimes fires an alert multiple times in quick succession if a condition is borderline. If your downstream system places a real order each time, you end up doubling your position without intending to. The fix is an idempotency check - store the last N alert timestamps and ignore duplicates within a short window (I use 5 seconds). Make.com can do this with a Data Store module. A self-hosted bot does it with a simple in-memory set.

Market hours mismatches catch a lot of people. If you're trading US equities and your alert fires at 7 PM, your broker will reject a market order. You need to either check market hours before sending the order, use limit orders with extended hours flags where supported, or add logic to queue the order for the next open. Crypto doesn't have this problem, but equities and futures traders absolutely do.

Rate limits from your broker's API are another gotcha, especially if you're firing many alerts in a short period. Most brokers have rate limits of 200-1000 requests per minute, which sounds like a lot until you have 20 alerts trigger in a 30-second window during a volatile open. Build in exponential backoff and a retry queue for 429 responses.

Always test with paper trading first

Every single method described here should be validated end-to-end on a paper trading account before you connect live funds. Run at least 20 real alert triggers in paper mode, check every order in your broker dashboard, and confirm the quantities, sides, and symbols are exactly what you expect. One misconfigured payload on a live account can place a much larger order than intended.

Webhook delivery failures from TradingView itself are rarer but real. If your endpoint returns a 5xx error or takes more than about 10 seconds to respond, TradingView logs the webhook as failed and does not retry. Monitoring your endpoint's uptime and response time is not optional - use something like Better Uptime or UptimeRobot (both have free plans) to alert you if your endpoint goes dark.

Security Basics You Can't Skip

Automating order placement via webhook adds real security risk if you don't take basic precautions. Anyone who discovers your webhook URL can potentially trigger trades on your account. Here's what I treat as a minimum baseline.

  • Use a secret token in your webhook URL or payload and validate it server-side before processing any order
  • Whitelist TradingView's published IP ranges at your firewall or in your server's allowed origins check
  • Use API keys with the minimum permissions needed - order placement only, not withdrawals or transfers
  • If your broker supports it, restrict API keys to specific IP addresses (use your VPS or Make.com's published IPs)
  • Log every incoming webhook payload with a timestamp - you want a full audit trail if something goes wrong
  • Set hard position size limits in your order logic, not just in your alert setup - a misconfigured alert should never be able to send an outsized order
  • Enable two-factor authentication on your brokerage account even when using API access

None of these are complicated, and most take under 10 minutes each. But I've seen traders skip them in the rush to get live, and the downside scenario - an unintended order at 3x your normal size - is not worth the time saved.

The Verdict: Which Method Should You Use?

Here's my honest take after running all four methods in parallel for several weeks. If you're trading crypto or futures and want the fastest possible path to live automation, go with Alertatron or WunderTrading. The $30/month is worth the saved setup time, and the services are reliable enough for most strategies. Just use IP-restricted API keys.

If you trade US equities on Alpaca or Tradier and you're comfortable spending an afternoon setting up a small Lambda or Cloudflare Worker, the broker-native path is the cleanest architecture. No ongoing subscription, no third-party holding your credentials, and latency in the low hundreds of milliseconds. I use this setup for my own swing trading alerts and it's been solid since late 2025.

For traders who don't write code but need flexibility beyond what the bridge services offer - particularly if your broker has a REST API but isn't supported by Alertatron - Make.com is genuinely good. The visual editor makes it easy to audit what's happening, the error handling is built in, and $9/month for the Core plan is accessible. Just account for the cold start latency and don't use it for sub-minute strategies.

The self-hosted bot is the right answer if you want full control, trade at scale, or have complex order logic that the other methods can't handle cleanly. Plan for the initial build time and the ongoing responsibility of keeping a server running. Once it's live and stable, though, it's the most satisfying setup - every order your strategy places runs through logic you wrote and understand completely. For serious algo traders, that's worth the extra work.

Get smarter trades, weekly

One short email every Sunday. AI workflows, tool reviews, and trader productivity tips.