Why your TradingView alert fired but no order appeared
Short answer
Start on the Alerts page in Shifu. If the alert is listed, the reason it stopped is written beside it: a paused bot, a duplicate key, a message that was not valid JSON, a missing field, an unknown symbol, live routing switched off on the account, a red-folder day the bot was set to sit out, or a hand-off to the broker that did not land. If it is not listed at all, TradingView never delivered it — check the webhook URL in the alert and its status in TradingView’s alert log.
Updated: September 18, 2026
Shifu writes every alert it receives and every refusal to your Alerts page with the exact message that caused it, so nothing fails silently. That page splits the problem in two: alerts that reached Shifu and were stopped for a stated reason, and alerts that never arrived.
| The reason on the alert | What happened | Do this |
|---|---|---|
| Invalid signature | The link in the alert is missing its key, or the key is old. | Copy the whole link from the bot’s Setup tab again and paste it into the alert’s Webhook URL. If you rotated the secret, every alert needs the new link. |
| Not JSON, or unknown format | The Message box held text Shifu cannot read. | Paste a ready-made message from the Setup tab. If your script writes the message, leave the box empty and use “Any alert() function call”. |
| Unresolved placeholders | A {{placeholder}} was left as text. Indicator alerts cannot fill strategy placeholders. | Use the per-side messages for indicators; use {{strategy.*}} placeholders only on strategy order-fill alerts. |
| A field failed validation | A required price was missing, or a price was 0. | A limit entry needs limit_price; a stop entry needs stop_price. Leave a leg out entirely instead of sending 0. |
| Symbol unknown | The contract is not on Shifu’s list. | Use the TradingView continuous form, MNQ1! or MES1!, for a supported contract. |
| Bot paused | The bot was switched off; the alert was recorded and dropped. | Resume the bot. |
| Duplicate | The same alert arrived twice (same time, same order or action, same position sizes). | Keep the "time": "{{timenow}}" line in the message so every alert is unique. |
| Rate limited | The bot’s per-minute cap stopped a burst. | Set the alert to “Once Per Bar Close”; raise the cap in the bot’s settings only if the burst was intended. |
| Message too large | The Message box is over the 8 KB ceiling. | Trim it to what Shifu needs — action, symbol, quantity and any bracket prices — and drop comments, debug text and fields Shifu does not read. |
| News shield | The bot is set to stand aside around high-impact releases and one was scheduled. | Expected. Turn the shield off on the bot if you want to trade through those windows. |
| Conflicting accounts | The order would have left you long in one account and short in another. | Flatten the account that is out of step, then send the next alert. |
| Hand-off timed out | The broker did not answer in time; Shifu skips rather than sending late at a worse price. | Nothing to undo. The next alert routes normally; the skip is recorded on the alert. |
Every line above is written on the alert itself. None of it is an opinion about your trade.
- Live routing off — until Live routing is on for the account, no order goes to the broker. Turn it on when you want real orders.
- Precision execution — a bot that rests its bracket at the broker records a later close or exit alert but does not act on it, because the exit is already resting. Entries still route normally.
- A bracket leg filled at the broker without an alert — that is the resting exit doing its job; on Tradovate the fill appears in the journal, not as a new alert.
Questions people ask
Will Shifu retry an order that did not go through?
Only an exit. If a new trade’s hand-off to the broker does not land within its budget, it is skipped and recorded — never quietly sent again seconds later at a worse price. An exit keeps trying for a few seconds instead, because closing late beats staying open; if it still does not land, Shifu says so and asks you to check the position. The next alert routes normally.
Why did one of my accounts fill and another not?
Each account records its own result on the alert. One can be held or skipped — live routing off, a broker hand-off that timed out, a firm-side rejection — while the others fill. The reason is written next to that account.
My exit alert shows as skipped on a Precision bot. Is my position stuck?
No. On a Precision bot the exit is already resting at the broker as the bracket, so a later exit alert is recorded and skipped rather than fighting it. The resting stop or target closes the trade.
How do I know the problem is TradingView and not Shifu?
Send a test signal from the bot’s Setup tab. If the test lands under Alerts, the link, key and message are right, and a real alert that later goes missing stopped inside TradingView.
