TradingView Webhook for Futures Accounts

Paste one webhook URL into a TradingView alert and a JSON message becomes a real order on your Tradovate or Rithmic account.

How the webhook works and how to set it up

TradingView cannot place orders on a futures broker by itself. What it can do is send an HTTP POST to a URL of your choice when an alert fires. Signal Trade App gives you that URL. The address has the form /api/webhook/ followed by a long random token, and the token is the only credential, so treat the URL like a password.

Each token is tied to one trading account. When a POST arrives we look up the token, check that the account belongs to you and is not locked or inactive, then place the order on the broker connection for that account. The body is parsed as JSON even though TradingView labels alert messages as plain text, so you do not need to set any content type.

Setup takes a few minutes once your broker connection is live.

The JSON message our webhook accepts

A basic entry needs three fields. A minimal message looks like this: {"action": "buy", "symbol": "MNQ1!", "qty": 1}. The supported fields are listed below.

Brackets, exits and multiple accounts

If your script is a strategy, TradingView fills in placeholders when the alert fires. A message of {"action": "{{strategy.order.action}}", "symbol": "{{ticker}}", "qty": {{strategy.order.contracts}}, "orderType": "market"} follows the strategy on every entry and exit. Create the alert on the strategy and set the trigger to order fills.

TradingView has no placeholder for a strategy's internal take-profit and stop-loss variables. To send them, plot them with display set to none and reference {{plot_0}} and {{plot_1}} in the message, or build the whole JSON string in Pine and send it with alert(). Indicators cannot use the strategy placeholders, so write the values directly or build the message in code.

When you send takeProfit, stopLoss or both with an entry, they are attached as a bracket and linked one-cancels-other at the broker. For Tradovate accounts, we confirm the legs with the broker before answering. If the broker refuses a leg, the request returns an error that says the entry was placed but the bracket is incomplete, so you check the account instead of resending.

A close action that names a symbol closes that symbol only: its position and its working orders, leaving every other symbol on the account alone. A close with no symbol flattens the whole account: it cancels resting orders and closes every open position.

Two more actions act on a position that is already open. Protect takes tp and sl arrays of prices and optionally autoBreakevenUsd. Breakeven moves the stop to your average entry price for the whole position and keeps the take-profit: {"action": "breakeven", "symbol": "MNQ1!"}. It is refused while the position is not in profit. Neither needs a quantity.

Multiple accounts and prop firm setups

A token trades one account. To run the same alert across several funded accounts, point the token at the account that leads a copy group and let the copy engine pass its orders to the followers, including followers on a different broker. That keeps you at one alert and one webhook regardless of how many accounts follow.

Limits and troubleshooting

TradingView requires a paid plan for webhook alerts and two-factor authentication on your TradingView account. Check TradingView's current documentation for the exact plan requirements. Set the alert frequency deliberately: once per bar close is the safe default for strategies, because a once-per-bar alert can fire several times on a forming candle.

Most failures show up in the signal log with a plain message. Invalid JSON is logged as an error. A missing action, symbol or qty is logged as rejected. A bare symbol such as MNQ! without the 1! suffix is not supported. A disabled token returns 403, an unknown token returns 401, and a locked or inactive account is refused. If a broker rejects an order after we sent it, the log row is corrected from EXECUTED to REJECTED with the broker's reason.

New to this? The TradingView to Tradovate setup guide walks through connecting Tradovate, building a copy group and sending a take-profit/stop-loss bracket from an alert, step by step.

Teams and solo traders choose a webhook that is built for futures because the details matter: continuous symbol resolution, brackets confirmed with the broker on Tradovate, and a log that tells the truth when a broker refuses an order. Order routing runs under 50ms on Tradovate and under 5ms on Rithmic.

The webhook is included with the account. Pricing is $29/month. The 5-day trial requires a card. A self-hosted option is available as a one-time $599 payment.

Frequently Asked Questions

What does a TradingView webhook need to send?

A JSON message with action, symbol and qty for entries. orderType, price, takeProfit and stopLoss are optional. A close action needs no symbol or quantity.

Does my TradingView plan support webhooks?

Webhook alerts need a paid TradingView plan and two-factor authentication on your TradingView account. Confirm the current requirements on TradingView's own site.

Can I use Pine Script placeholders in the message?

Yes. Strategy alerts can use {{strategy.order.action}}, {{strategy.order.contracts}} and {{ticker}}. Indicators cannot use the strategy placeholders, so write values directly or build the message with alert() in your script.

Which symbol should I use?

Use the continuous contract on your chart, such as ES1! or MNQ1!. It resolves to the current front-month contract, including after a roll. A bare symbol without the 1! suffix is not supported.

How do I send a webhook alert to several prop firm accounts?

Point the token at the leader account of a copy group. Followers, including those on another broker, copy the leader's orders.

Why did my alert not place an order?

Open the signal log. It shows the status and a message for each request: invalid JSON, a missing field, a disabled token, a locked account, or a broker rejection.

Does the webhook cost extra?

No. Plans are $29/month, with a 5-day trial that requires a card. Self-hosted is $599 one time.

Related Pages

Related Tools & Reading