Home

/

Guides

/

Webhook Without JSON

Features & SyntaxUpdated 2026-02-07

TradingView Webhook Without JSON: Plain-Text Trading Commands

10 min read

2026-02-07

The Problem: JSON is Error-Prone for Traders

JSON is the default webhook format for nearly every trading automation platform. 3Commas, WunderTrading, Alertatron, Cornix, and dozens of others all require you to craft a JSON payload inside TradingView's alert message editor. On paper, JSON is a universal data format. In practice, it is a persistent source of failed webhooks for traders who are not software engineers.

Industry data and community reports consistently show that roughly 15% of webhook-triggered trades fail due to JSON formatting errors. That is not a small number. If you run 20 alerts per day, statistically three of them will silently fail every single day. The trade never executes, the alert fires into the void, and you only discover the problem hours later when you check your exchange account.

The root causes are always the same: a missing comma between fields, a single quote where a double quote is required, a mismatched bracket buried twelve lines deep, or a trailing comma after the last field that some parsers accept and others reject. TradingView's alert editor offers no JSON validation whatsoever. There is no syntax highlighting, no bracket matching, no linter. You are writing structured data in a plain textarea and hoping for the best.

Here is a realistic example. This JSON payload has a subtle error that will cause a silent failure. Can you spot it?

Broken JSON webhook (common error)

{ "action": "buy", "market": "BTCUSDT", "exchange": "binance_futures", "type": "market", "amount": "0.01", "stopLoss": { "type": "percent", "value": "2" } "takeProfit": { "type": "percent", "value": "5" } }

The missing comma is on line 11, between the closing brace of stopLoss and the opening of takeProfit. This will produce a parse error on the receiving server. The webhook returns a 400 or 500 status. TradingView does not retry. Your stop loss and take profit never get placed. You find out when the market moves against you.

The real cost of JSON errors

JSON webhook failures are silent by default. TradingView fires the webhook, receives an error response, and moves on. Most platforms have no retry mechanism and no push notification for failed webhooks. A formatting error at 3 AM means a missed trade that you will not discover until morning.

The Solution: Plain-Text Smart Syntax

Flipr.Cloud takes a fundamentally different approach. Instead of requiring JSON, webhooks are plain-text commands written in a purpose-built language called Smart Syntax. There are no brackets, no quotes, no commas, and no nested objects. A command that takes 15 lines of JSON takes 2 lines of Smart Syntax.

Here is a direct comparison. Both examples open a long BTC position with a 2% stop loss and 5% take profit on Binance Futures.

JSON (typical bot format)

{ "action": "buy", "market": "BTCUSDT", "exchange": "binance_futures", "type": "market", "amount": "0.01", "stopLoss": { "type": "percent", "value": "2" }, "takeProfit": { "type": "percent", "value": "5" } }

Smart Syntax (Flipr.Cloud)

BTCUSDT on Binance_F market long 0.01 sl off 2% tp off 5%

Two lines. No structural syntax to break. The first line is the header: the trading pair and the exchange. The second line is the command: what to do, how much, and the risk parameters. Every token is a human-readable word or number. If you can read the command out loud and it makes sense, it is valid.

Why plain text is structurally better for webhooks:

No nesting - every command is a flat sequence of tokens. There is nothing to misalign or mismatch.

No delimiters - no commas, colons, or brackets that can be misplaced or forgotten.

No quoting rules - no distinction between single quotes, double quotes, and unquoted values.

Descriptive errors - if a command is malformed, the parser returns a specific message like "missing prefix for sl" instead of "unexpected token at position 147".

Whitespace tolerant - extra spaces, tabs, or trailing whitespace are ignored. The parser is lenient with formatting.

Zero JSON, by design

Flipr.Cloud does not support JSON webhooks at all. This is intentional. By eliminating JSON entirely, the platform removes an entire class of errors that every other trading bot inherits. You cannot have a JSON formatting error if there is no JSON.

Complete Command Reference

Every Smart Syntax webhook starts with a header line that specifies the trading pair and exchange, followed by one or more command lines. The header format is always SYMBOL on Exchange_Type, where Type is _F for futures, _S for spot, or _D for derivatives.

Header format

BTCUSDT on Binance_F ETHUSDT on ByBit_F SOLUSDT on BloFin_F ADAUSDT on Kraken_F

Market Orders

Market orders execute immediately at the current market price. Specify the direction (long or short) and the quantity. Quantity can be an absolute amount or a percentage of your available balance.

Market order examples

BTCUSDT on Binance_F market long 0.01 ETHUSDT on ByBit_F market short 100% SOLUSDT on BloFin_F market long 50%

Use 100% to go all-in with your available balance. Use 50% to use half. The platform calculates the exact contract quantity based on the current price, your balance, and the exchange's minimum order size.

Limit Orders

Limit orders are placed at a specific price. Use off for a percentage offset from the current price, or at (or @) for an absolute price.

Limit order examples

BTCUSDT on Binance_F limit long 0.01 off 1.5% ETHUSDT on ByBit_F limit short 50 at 4200 SOLUSDT on Kraken_F limit long 100% @ 135.50

The off prefix places the limit order at a percentage offset from the current market price. For a long order, off 1.5% means 1.5% below the current price. For a short order, it means 1.5% above. The at prefix sets an absolute price level.

Close Position

Close all or part of an existing position. Use a percentage to partially close, or 100% to fully close. Append p to the percentage to indicate "percentage of position" explicitly.

Close position examples

BTCUSDT on Binance_F close long 100% ETHUSDT on ByBit_F close short 50%p SOLUSDT on BloFin_F close long 0.5

Stop Loss and Take Profit (Inline)

Stop loss and take profit can be attached directly to market and limit orders as inline parameters. This is the most common pattern: open a position and set risk management in a single command. Smart Syntax requires a prefix keyword to specify how the SL/TP price is calculated.

SL/TP Prefix System:

off

Offset from the current market price. sl off 2% means 2% away from market.

at

Absolute price level. sl at 65000 triggers the stop loss at exactly $65,000.

@

Shorthand alias for at. sl @65000 is identical to sl at 65000.

e

Entry-relative. tp e+3% means 3% above entry price. sl e-1.5% means 1.5% below entry.

Inline SL/TP examples

BTCUSDT on Binance_F market long 0.01 sl off 2% tp off 5% ETHUSDT on ByBit_F market short 100% sl at 4200 tp at 3600 SOLUSDT on BloFin_F limit long 0.5 off 1% sl e-2% tp e+4%

Prefix is mandatory

Writing sl 2% without a prefix is a syntax error. You must always specify off, at, @, or e before the value. This requirement exists to eliminate ambiguity: the parser always knows exactly how to interpret the number.

OCO Orders (One-Cancels-Other)

OCO orders place a stop loss and take profit simultaneously. When one triggers, the other is automatically canceled. This is the standard bracket order pattern used for risk management.

OCO order examples

BTCUSDT on Binance_F sl-or-tp long 100%p tp off 5% sl off 2% ETHUSDT on ByBit_F sl-or-tp short 50%p tp at 3600 sl at 4200

The sl-or-tp command targets an existing open position. The 100%p means 100% of the current position size. Flipr.Cloud places both orders on the exchange and monitors them. When either the SL or TP fills, the other is immediately canceled.

Cancel Orders

Cancel pending orders by type or cancel all open orders at once.

Cancel order examples

BTCUSDT on Binance_F cancel all ETHUSDT on ByBit_F cancel sl SOLUSDT on BloFin_F cancel tp

The cancel all command removes every pending order for the specified symbol. Use cancel sl or cancel tp to target only stop loss or take profit orders respectively.

Real-World Examples

These are complete webhook payloads ready to paste into TradingView's alert message field. Each example shows the exact text you would enter.

Scalping Entry with SL + TP

A simple scalping setup: enter long at market with a tight 1% stop loss and 2% take profit target. Two lines, complete risk management.

TradingView alert message

BTCUSDT on Binance_F market long 0.005 sl off 1% tp off 2%

DCA: Multiple Limit Entries at Different Levels

Dollar-cost averaging with three limit orders at 1%, 2%, and 3% below the current price. Each order uses a different size to weight the entries.

TradingView alert message

ETHUSDT on ByBit_F limit long 0.01 off 1% limit long 0.02 off 2% limit long 0.03 off 3%

All three orders are placed in a single webhook call. The first entry is the smallest, and each subsequent entry is larger, allocating more capital at lower prices.

Close Position on Signal Reversal

When your Pine Script strategy reverses, close the existing position entirely. This is the most common use case for Pine Script strategy alerts.

TradingView alert message (sell signal)

BTCUSDT on Binance_F close long 100%

TradingView alert message (buy signal)

BTCUSDT on Binance_F close short 100%

Full Bracket Order with OCO

Open a position and immediately place a bracket (OCO) order around it. This is a three-line sequence: enter the market, then set your exit levels.

TradingView alert message

SOLUSDT on BloFin_F market long 10 sl-or-tp long 100%p tp off 6% sl off 2.5%

The market order opens the position. The sl-or-tp command places both exit orders. When either the 6% take profit or the 2.5% stop loss triggers, the other is automatically canceled.

Using TradingView Template Variables

TradingView replaces template variables like {{strategy.order.action}} and {{strategy.order.contracts}} before sending the webhook. You can use these directly inside Smart Syntax commands.

TradingView alert message with variables

BTCUSDT on Binance_F market {{strategy.order.action}} {{strategy.order.contracts}}

When TradingView fires the alert, {{strategy.order.action}} becomes long or short, and {{strategy.order.contracts}} becomes the actual quantity. The webhook Flipr receives is clean plain text like market long 0.01.

Supported TradingView variables

Any TradingView template variable works with Smart Syntax, including {{close}}, {{open}}, {{ticker}}, {{volume}}, {{strategy.order.price}}, and {{strategy.market_position}}. These are resolved by TradingView before the webhook reaches Flipr.

Multi-Exchange Support

The same Smart Syntax commands work identically across 15+ cryptocurrency exchanges. The only thing that changes is the exchange name in the header line. There are no exchange-specific JSON schemas to learn, no different field names to memorize, and no adapter configuration to maintain.

Same command, different exchanges

BTCUSDT on Binance_F market long 0.01 sl off 2% tp off 5% BTCUSDT on ByBit_F market long 0.01 sl off 2% tp off 5% BTCUSDT on BloFin_F market long 0.01 sl off 2% tp off 5% BTCUSDT on Kraken_F market long 0.01 sl off 2% tp off 5% BTCUSDT on OKX_F market long 0.01 sl off 2% tp off 5%

Flipr.Cloud handles all exchange-specific differences internally. Symbol normalization, contract size conversion, order type mapping, margin mode configuration, and API quirks are all abstracted away by the platform. You write one syntax, and it works everywhere.

Supported Exchanges (Futures):

Binance_F

ByBit_F

OKX_F

BloFin_F

Bitunix_F

KuCoin_F

Bitget_F

Kraken_F

MEXC_F

CoinEx_F

BitMEX_F

Phemex_F

HTX_F

Toobit_F

Bitfinex_D

Spot trading is also supported

Replace _F with _S for spot trading on supported exchanges. For example, BTCUSDT on Binance_S targets the Binance spot market. The command syntax is identical.

Migrating from JSON Webhooks

If you are currently using JSON-based webhooks with platforms like 3Commas, WunderTrading, or Alertatron, the migration to Smart Syntax is straightforward. Below is a mapping of common JSON fields to their Smart Syntax equivalents.

JSON Field

Smart Syntax Equivalent

"action": "buy"

long (direction keyword)

"action": "sell"

short (direction keyword)

"market": "BTCUSDT"

BTCUSDT (header line)

"exchange": "binance_futures"

on Binance_F (header line)

"type": "market"

market (command keyword)

"type": "limit"

limit (command keyword)

"amount": "0.01"

0.01 (inline after direction)

"amount": "100%"

100% (percentage of balance)

"stopLoss.percent": "2"

sl off 2%

"takeProfit.percent": "5"

tp off 5%

"stopLoss.price": "65000"

sl at 65000

"closePosition": true

close long 100%

"cancelOrders": true

cancel all

From 3Commas / WunderTrading

3Commas and WunderTrading both use JSON payloads with platform-specific field names. The typical migration involves replacing your entire JSON message with two lines of Smart Syntax. You do not need to change your Pine Script code or alert conditions. Only the webhook URL and message body change.

Before (3Commas JSON):

{ "message_type": "bot", "bot_id": 12345, "email_token": "abc-def", "delay_seconds": 0, "pair": "USDT_BTC", "action": "start_long" }

After (Flipr Smart Syntax):

BTCUSDT on Binance_F market long 100%

Migration Steps

  1. Create a Flipr.Cloud account and add your exchange API key. Flipr connects directly to your exchange. No third-party bot access required.
  2. Copy your webhook URL from the Flipr dashboard. The URL format is https://flipr.cloud/webhook/USER_ID/TOKEN.
  3. Update each TradingView alert: change the webhook URL to your Flipr URL, and replace the JSON message body with the equivalent Smart Syntax commands.
  4. Test with a small position on one alert before migrating all of them. Verify the order appears on your exchange.
  5. Migrate remaining alerts one by one. Each alert is independent; there is no global configuration to change.

No downtime required

You can migrate alerts one at a time. Keep your existing JSON webhooks running on your old platform while you test Smart Syntax on Flipr. Once you confirm each alert works, switch it over. There is no all-or-nothing migration.

Frequently Asked Questions

Ready to Automate Your Trading?

Set up TradingView webhook automation in under 2 minutes. No JSON required. Works with 15+ exchanges.

Full Pro features • No time limit • No credit card