Documentation

Webhook signal reference.

Exactly what JSON to send to your FirmGated webhook URL — required fields, optional fields, and ready-to-paste examples.

Your webhook URL

Every strategy you create in FirmGated has a unique webhook URL. Find it on your strategy page under the Webhook section. Copy that URL and paste it into TradingView, TrendSpider, or any tool that can send an HTTP POST request.

Every request must send a JSON body with Content-Type: application/json. The payload must be valid JSON — a single misplaced comma or missing quote will cause the signal to be rejected.

Required fields

FieldTypeExampleWhat it does
tickerstring"NQ"The instrument symbol exactly as your broker recognizes it. Futures use the root symbol — NQ, ES, MNQ, MES, CL, etc.
actionstring"buy" | "sell"Direction of the trade. Must be exactly buy or sell, lowercase.

Optional fields

FieldTypeExampleWhat it does
quantitynumber1Number of contracts or shares. If omitted, FirmGated uses the quantity configured on your subscription.
pricenumber19850.25Limit price. Include this when you want a limit order. Omit for a market order.
orderTypestring"market" | "limit" | "stop"Explicit order type override. If omitted, FirmGated defaults to market.
sentimentstring"long" | "short" | "flat"Tells FirmGated what your intended position state is after this signal. Flat closes everything.
takeProfitnumber20100.00Optional take-profit price to attach to the order.
stopLossnumber19700.00Optional stop-loss price to attach to the order.

Ready-to-use examples

Market buy — 1 contract of NQ
{
  "ticker": "NQ",
  "action": "buy",
  "quantity": 1
}
Limit sell with stop-loss
{
  "ticker": "ES",
  "action": "sell",
  "quantity": 2,
  "orderType": "limit",
  "price": 5210.50,
  "stopLoss": 5230.00
}
Flat — close everything on this ticker
{
  "ticker": "MNQ",
  "action": "sell",
  "sentiment": "flat"
}
TradingView dynamic variables (Pine Script)
{
  "ticker": "{{ticker}}",
  "action": "{{strategy.order.action}}",
  "quantity": {{strategy.order.contracts}},
  "price": {{strategy.order.price}}
}

Common mistakes

Signal rejected immediately
Check that your JSON is valid. Run it through jsonlint.com before testing. One missing brace or extra comma breaks the whole payload.
Wrong ticker
Use the root symbol your broker knows — NQ not NQ1!, ES not ES1!. Check your broker's exact symbol format.
Trade goes to the wrong account
Your webhook URL is tied to a specific strategy. Make sure your subscription links that strategy to the right broker account.
Signal received but no trade placed
Check the Signals page for the status. If it shows pending_confirmation, Manual Approval is on and the trade is waiting for you on the Notifications page.