what the notification log is
every time edgeful receives a webhook from TradingView and processes a trade, it gets logged in the notifications panel. this is your record of everything that happened — entries, exits, rejections, and failures.
you'll find it at edgeful.com/algos-automation/trade-notifications.
think of it as the receipt for every trade your algo attempted. if something went wrong, this is where you start.
if you already see an error in the log and want a direct fix, skip to the algo error message decoder — every common error string is indexed there with what it means and how to fix it.
how to get there
log into edgeful
click algos & automation in the left sidebar
click trade notifications
reading the notification log
each row in the log represents a single trade event. here's what you're looking at:
column | what it shows |
date/time | when edgeful received the webhook from TradingView |
strategy | which algo strategy triggered the trade |
ticker | the contract or symbol traded |
side | long or short |
action | entry or flatten (exit) |
status | whether the trade executed successfully |
trade ID | unique identifier linking entries to their exits |
the most important column is status — that's where you'll see whether everything went through or something broke.
trade statuses explained
here's what each status means — for a detailed fix for each, see the algo error message decoder.
filled — the trade executed successfully at your broker. this is what you want to see.
failed — edgeful received the webhook but couldn't execute the trade at your broker. the most common cause is a broker disconnection — your Tradovate, NinjaTrader, or ProjectX session expired or got invalidated.
rejected — your broker received the order but refused to execute it. this usually means a contract mismatch (your TradingView alert is on a different contract than your broker expects), insufficient margin, or your account doesn't have the right permissions.
pending — the trade is being processed. you'll typically only see this briefly. if a trade stays in pending, something may have stalled in the webhook chain.
so if you're seeing "failed" or "rejected" — don't panic. it's almost always a fixable connection or configuration issue, not a problem with the algo itself.
entry vs. flatten — how trades are paired
every algo trade has 2 events: an entry (opening the position) and a flatten (closing it). each one shows up as its own row in the notification log.
they're linked by the trade ID. if you see an entry with trade ID abc123, the corresponding exit will have the same trade ID but with "flatten" in the action column.
why separate rows? because TP and SL are delivered as separate webhook events — they're not part of the entry. for the full breakdown of how exits are delivered (and why they're always market orders), see how the algo automation chain works.
when you're troubleshooting, you need to check both sides of the trade:
entry shows filled, no flatten — the exit alert may not have fired yet (trade is still open), or the exit webhook failed
entry shows failed, no flatten — the entry never executed, so there's nothing to flatten
entry shows filled, flatten shows rejected — you got into the trade but the exit had an issue. check your broker for the open position
this is especially important with 2TP strategies (like ORB 2TP) where you'll see 3 rows for one trade: 1 entry + 2 flatten events (TP1 and TP2).
the most common "failed" scenario
the #1 reason trades show "failed" is a broker session expiring. here's what happens:
you connected your broker in the algo dashboard at some point
your broker's authentication session expired (Tradovate does this periodically)
your algo fires, edgeful receives the webhook, but when it tries to route the order — the broker connection is dead
the notification log shows "failed" with an unauthorized error
the fix:
go to edgeful.com/algos-automation/dashboard
in step 1, reconnect your broker by logging in again
make sure the status shows connected (green)
you don't need to recreate your strategy or update your TradingView alerts — the webhook URL stays the same. you're just refreshing the broker connection.
the most common "rejected" scenario
the #1 reason trades show "rejected" is a contract mismatch.
here's the gotcha: TradingView uses specific contract symbols for futures. if your alert was created on ESM2026 but that contract has rolled over to ESU2026, the broker will reject the order because the old contract is no longer valid.
the fix:
update your TradingView chart to the current front-month contract
delete the old alert
create a new alert on the updated chart
paste the same webhook URL (your strategy and webhook don't change — only the TradingView alert does)
rejected flattens — "cannot sell when position is 0"
the second most common cause of a rejected trade is a flatten hitting an empty position. this happens when the entry never executed — or when you manually closed the trade before the TP or SL level triggered.
when edgeful sends the exit order, your broker sees there's nothing to close. you'll see a rejection with an error like: Cannot sell when position is 0 (must be > 0 to flatten long).
in plain english — the automation tried to close a trade that doesn't exist anymore. since there's no open position, executing that exit would actually open a new position in the opposite direction. your broker blocks that, which is the right behavior.
if you're seeing this error, check whether:
the entry for that trade ID also shows rejected or failed — meaning the position was never opened in the first place
you manually closed the trade in your broker before the algo's TP or SL fired
either way, it's not a bug. the automation is protecting you from an accidental position in the wrong direction.
other common rejection causes
beyond contract mismatches and empty position flattens, you might also see rejections when your broker account doesn't have enough margin for the contract size, or your account type doesn't support the product you're trying to trade.
for the full list of error strings — including "contract not found," "unauthorized," "errorCode=3," and Tradovate-specific rejections — see the algo error message decoder.
checking both sides of a trade
if you're looking at a specific trade and want the full picture, here's the process:
find the entry row in the notification log — note the trade ID
scroll or search for the matching flatten row with the same trade ID
check the status of both
if the entry is filled but you can't find a flatten — the trade may still be open. check your broker's positions directly.
if both entry and flatten show filled but the numbers don't match what you expected — that's likely slippage on the market order exits. TP and SL are always market orders, so a tick or two of slippage is normal in fast markets. see how the algo automation chain works for a full breakdown of where slippage comes from.
when nothing shows up at all
if your algo fired on TradingView but nothing appears in the notification log, the issue is upstream of edgeful — the webhook never arrived.
common causes:
webhook URL mismatch — the URL in your TradingView alert doesn't match the one in your edgeful dashboard. copy it fresh from the dashboard and update the alert
webhook in the wrong field — the URL goes in TradingView's "webhook URL" field, not the "message" field
TradingView plan — webhooks require TradingView Essential or higher. the free and Basic plans don't support webhooks
alert expired — TradingView alerts expire periodically. check that your alert is still active
JSON message format — the alert message needs the correct JSON format. if it's wrong, edgeful can't parse the webhook
the webhook troubleshooting article walks through each of these step by step.



