TradingView Setup Guide
Connect TradingView alerts to SignalBee and automate your trading signals. This guide walks you through the complete setup process.
Prerequisites
Before you begin, ensure you have the following ready:
| Requirement | Details |
|---|---|
| TradingView Account | Pro plan or higher (webhooks require a paid plan) |
| SignalBee Account | Verified email address |
| Connected Exchange | At least one exchange connected in SignalBee |
| Active Webhook | Webhook created with URL and Secret copied |
Tip: Keep your SignalBee dashboard open in another tab. You'll need to copy your webhook URL and secret during setup.
TradingView Plans and Limitations
Webhooks require a paid TradingView plan. The free/basic plan does not support webhook notifications.
| Plan | Active Alerts | Webhook Support | Best For |
|---|---|---|---|
| Free/Basic | 1 | ❌ No | Paper trading only |
| Pro | 20 | ✅ Yes | Single strategy traders |
| Pro+ | 100 | ✅ Yes | Multi-strategy traders |
| Premium | 400 | ✅ Yes | Professional traders |
⚠️ Important: If you're on the Free or Basic plan, you must upgrade to Pro or higher before your alerts can send webhooks to SignalBee.
How to Check Your Plan
- Log in to TradingView
- Click your profile icon (top right)
- Look for your plan name below your username
- Upgrade at TradingView.com/gopro if needed
Creating Your First Alert (Step-by-Step)
Follow these steps to create a TradingView alert that sends signals to SignalBee.
Step 1: Open Your Chart
Navigate to TradingView.com and open a chart for the trading pair you want to automate.
- Select the same pair format your exchange uses (e.g., BTCUSDT for Binance)
- Ensure you're viewing the correct exchange data source in TradingView
Step 2: Add Your Indicator or Strategy
Add the indicator or strategy that will generate your trading signals.
- Click Indicators (top toolbar) or press
/ - Search for and add your indicator
- Configure indicator settings as needed
Step 3: Open the Alert Dialog
Open the alert creation window using any of these methods:
- Click the alarm clock icon in the top toolbar
- Right-click on the chart → Add Alert
- Press Alt+A (Windows) or Option+A (Mac)
Step 4: Configure the Alert Condition
Set up when your alert should trigger:
- Condition: Select your indicator from the dropdown
- Trigger: Choose when to fire (e.g., "Crossing Up")
- Value: Set the threshold if applicable
Step 5: Enable the Webhook
Check the Webhook URL checkbox to reveal the URL field.
Paste your SignalBee webhook URL:
https://api.signalbee.trade/webhook/{your-webhook-id}
Tip: Copy your webhook URL directly from SignalBee Dashboard → Webhooks → Click the copy icon.
Step 6: Enter the JSON Payload
In the Message field, enter your JSON payload. This is the data SignalBee receives.
Basic Buy Signal:
{
"webhook_secret": "your-webhook-secret",
"side": "buy",
"symbol": "{{ticker}}",
"quantity_type": "percentage",
"quantity": "10",
"source_timestamp": "{{timenow}}"
}
Basic Sell Signal:
{
"webhook_secret": "your-webhook-secret",
"side": "sell",
"symbol": "{{ticker}}",
"quantity_type": "percentage",
"quantity": "100",
"source_timestamp": "{{timenow}}"
}
⚠️ Critical: Replace
your-webhook-secretwith your actual webhook secret from SignalBee. This authenticates your signals. Thesource_timestampfield is required for duplicate detection.
See Webhook Templates for more payload examples.
Step 7: Configure Alert Settings
Complete the remaining settings:
| Setting | Recommended Value |
|---|---|
| Alert name | Descriptive name (e.g., "BTCUSDT EMA Buy") |
| Expiration | "Open-ended" for production alerts |
| Alert actions | ✅ Webhook (disable others unless wanted) |
Step 8: Create the Alert
Click the Create button. Your alert now appears in the Alerts panel (right sidebar).
Step 9: Test the Alert
Verify your setup works:
- In SignalBee, go to Signals → History
- Wait for your alert condition to trigger (or test manually if your indicator allows)
- Check that the signal appears in SignalBee with status "Received"
- Verify the trade executed on your exchange
Tip: For testing, you can create an alert on a condition that triggers frequently (like price movement), then delete it after verification.
Alert Conditions Explained
Understanding condition types helps you create alerts that fire exactly when intended.
Crossing
Triggers once when the value crosses a threshold.
| Variant | When It Fires |
|---|---|
| Crossing | Value crosses threshold in either direction |
| Crossing Up | Value crosses from below to above |
| Crossing Down | Value crosses from above to below |
✅ Best for: Moving average crossovers, indicator threshold breaks, support/resistance levels
Example: EMA 9 crossing up through EMA 21 = buy signal
Greater Than / Less Than
Triggers when condition is true. Can fire multiple times if condition remains true across bars.
| Condition | Behavior |
|---|---|
| Greater Than | Fires while value > threshold |
| Less Than | Fires while value < threshold |
⚠️ Warning: Avoid these for trading signals as they may trigger repeatedly. Use "Crossing" instead.
When to use: Monitoring conditions, not direct trade triggers
Entering/Exiting Channel
Triggers when price enters or exits a defined range.
| Variant | When It Fires |
|---|---|
| Entering Channel | Price moves inside the range |
| Exiting Channel | Price moves outside the range |
✅ Best for: Bollinger Band strategies, range-bound trading
Moving Up / Moving Down
Triggers on percentage change over a time period.
| Setting | Description |
|---|---|
| Moving Up % | Price increased by X% in the last Y bars |
| Moving Down % | Price decreased by X% in the last Y bars |
✅ Best for: Momentum detection, breakout confirmation
Using Strategy Alerts
If you're using a Pine Script strategy (with backtesting), you can alert on strategy order fills.
Strategy vs Indicator Difference
| Type | Has Backtesting | Built-in Signals | Alert Setup |
|---|---|---|---|
| Indicator | ❌ No | ❌ Manual conditions | Configure condition yourself |
| Strategy | ✅ Yes | ✅ Buy/sell signals | Alert on "Order fills" |
Setting Up Strategy Alerts
- Add your strategy to the chart
- Right-click the strategy name → Add Alert on [Strategy Name]
- Set condition to "Order fills"
- Enable webhook and configure as usual
Strategy Placeholder Variables
TradingView provides dynamic variables you can use in your JSON message:
| Variable | Output | Example |
|---|---|---|
{{strategy.order.action}} | Order direction | "buy" or "sell" |
{{strategy.order.price}} | Entry price | "45250.50" |
{{strategy.position_size}} | Position size | "0.5" |
{{strategy.order.id}} | Unique order ID | "Long Entry" |
{{ticker}} | Trading pair | "BTCUSDT" |
{{exchange}} | Exchange name | "BINANCE" |
{{time}} | Alert timestamp | "2024-01-15T10:30:00Z" |
Strategy Alert JSON Template
{
"webhook_secret": "your-webhook-secret",
"side": "{{strategy.order.action}}",
"symbol": "{{ticker}}",
"quantity_type": "fixed",
"quantity": "0.001",
"source_timestamp": "{{timenow}}"
}
Tip: The
{{strategy.order.action}}variable automatically outputs "buy" or "sell" based on your strategy's order direction.
Multiple Alerts for One Strategy
Complex strategies often require separate alerts for entry, take-profit, and stop-loss.
Entry Alert
Triggers when your strategy conditions indicate a buy opportunity.
{
"webhook_secret": "your-secret",
"side": "buy",
"symbol": "BTCUSDT",
"quantity_type": "percentage",
"quantity": "10",
"source_timestamp": "{{timenow}}"
}
Take-Profit Exit Alert
Triggers when price reaches your profit target.
{
"webhook_secret": "your-secret",
"side": "sell",
"symbol": "BTCUSDT",
"quantity_type": "percentage",
"quantity": "100",
"source_timestamp": "{{timenow}}"
}
Stop-Loss Alert
Triggers when price drops below your risk threshold.
{
"webhook_secret": "your-secret",
"side": "close",
"symbol": "BTCUSDT",
"quantity_type": "percentage",
"quantity": "100",
"source_timestamp": "{{timenow}}"
}
Coordinating Multiple Alerts
| Alert | Condition | Quantity |
|---|---|---|
| Entry | Your buy signal | % of available balance |
| Take-Profit | Price target reached | 100% of position |
| Stop-Loss | Price below threshold | 100% of position |
Tip: Use
quantity_type: "percentage"withquantity: "100"for exits to sell your entire position regardless of entry size.
Alert Management Best Practices
Keep your alerts organized and reliable with these practices.
Naming Conventions
Use a consistent format: [Pair] [Strategy] [Action]
| ✅ Good Names | ❌ Poor Names |
|---|---|
| BTCUSDT EMA Buy | Alert 1 |
| ETHUSDT RSI Oversold | Buy signal |
| SOLUSDT BB Exit | test |
Expiration Settings
| Setting | Use Case |
|---|---|
| Open-ended | ✅ Production alerts (never expires) |
| Specific date | Testing, time-limited strategies |
| Once per bar | Prevent multiple triggers per candle |
| Once per bar close | Most reliable for trading signals |
Tip: Always use "Open-ended" for production alerts. Expired alerts are the #1 reason for missed signals.
Alert Limits by Plan
Monitor your usage against your plan's limits:
- Open the Alerts panel (right sidebar)
- Check the counter at the top (e.g., "15/20 alerts")
- Delete unused alerts to make room for new ones
Backup Notifications
Enable email notifications as a backup in case webhook delivery fails:
- In alert settings, check "Send email"
- You'll be notified if your alert fires
- Use this to verify alerts are triggering as expected
Common Issues and Solutions
Most TradingView webhook issues fall into a few categories.
| Problem | Cause | Solution |
|---|---|---|
| Alert not firing | Condition not met | Check indicator logic; verify condition triggers in backtesting |
| Alert not firing | Alert inactive | Look for red indicator on alert; recreate if expired |
| Alert not firing | Plan limitation | Verify you have Pro+ plan with webhook support |
| Webhook not received | Wrong URL | Copy URL directly from SignalBee dashboard |
| Webhook not received | Invalid JSON | Validate JSON syntax at jsonlint.com |
| Webhook not received | Webhook checkbox unchecked | Edit alert and re-enable webhook option |
| Signal rejected | Wrong secret | Copy-paste webhook_secret directly (no typos) |
| Signal rejected | Ticker not whitelisted | Add ticker to your webhook's allowed pairs in SignalBee |
| Signal rejected | Trading disabled | Enable trading in SignalBee dashboard |
| Multiple triggers | Using "Greater Than" condition | Switch to "Crossing" for single-fire behavior |
| Multiple triggers | Missing "Once per bar" setting | Edit alert → Set trigger to "Once per bar close" |
| Trades not executing | Insufficient balance | Check exchange balance; ensure funds in correct wallet |
| Trades not executing | Exchange disconnected | Re-test exchange connection in SignalBee |
Debugging Steps
-
Check TradingView Alert History:
- Click the Alerts panel → Select your alert → View history
- Verify the alert fired when expected
-
Check SignalBee Signal History:
- Go to Signals → History in SignalBee
- Look for your signal and its status/error message
-
Validate Your JSON:
- Copy your message content
- Paste into jsonlint.com
- Fix any syntax errors (missing quotes, extra commas)
Advanced: Pine Script Integration
For developers creating custom Pine Script indicators.
The alertcondition() Function
Add alert conditions that users can select when creating alerts:
//@version=5
indicator("My Custom Indicator", overlay=true)
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)
bullishCross = ta.crossover(ema9, ema21)
bearishCross = ta.crossunder(ema9, ema21)
// Define alert conditions
alertcondition(bullishCross, "EMA Buy Signal", "EMA 9 crossed above EMA 21")
alertcondition(bearishCross, "EMA Sell Signal", "EMA 9 crossed below EMA 21")
The alert() Function (Pine Script v5)
Trigger alerts directly from your script with custom messages:
//@version=5
indicator("Auto Alert Indicator", overlay=true)
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)
if ta.crossover(ema9, ema21)
alert('{"side": "buy", "symbol": "' + syminfo.ticker + '"}', alert.freq_once_per_bar)
if ta.crossunder(ema9, ema21)
alert('{"side": "sell", "symbol": "' + syminfo.ticker + '"}', alert.freq_once_per_bar)
Note: With
alert(), you still need to create an alert on the indicator, but the message is generated by your script automatically.
Dynamic Data in Alerts
Use str.tostring() to include calculated values:
//@version=5
indicator("Dynamic Alert Data", overlay=true)
rsiValue = ta.rsi(close, 14)
if ta.crossover(rsiValue, 30)
alertMessage = '{"side": "buy", "symbol": "' + syminfo.ticker + '", "rsi": "' + str.tostring(rsiValue, "#.##") + '"}'
alert(alertMessage, alert.freq_once_per_bar)
Troubleshooting Checklist
Use these checklists when signals aren't working.
TradingView Side
- Alert is active (green indicator, not red/gray)
- Webhook URL checkbox is checked
- Webhook URL is correct (no extra spaces or characters)
- JSON message is valid syntax (test at jsonlint.com)
-
webhook_secretis included in the message -
source_timestampis included (use{{timenow}}) - Your plan supports webhooks (Pro, Pro+, or Premium)
SignalBee Side
- Webhook exists and is enabled
- Trading is enabled for the webhook
- Ticker is in the allowed pairs list (or list is empty for all pairs)
- Exchange is connected and tested successfully
- Account has sufficient balance for the trade size
Still Not Working?
- Create a simple test alert with a condition that fires immediately
- Use a minimal JSON payload with just the required fields
- Check both TradingView alert history AND SignalBee signal history
- Contact support@signalbee.trade with:
- Your alert JSON message (redact the webhook_secret)
- Screenshot of your TradingView alert settings
- The error message from SignalBee (if any)
Related Resources
- Webhook Templates - JSON payload examples for different scenarios
- Error Codes - Understanding signal failure reasons
- Glossary - Term definitions and concepts
- User Guide - Webhooks - SignalBee webhook configuration