Ends Oct 3150% off yearly · SHIFU50
Shifu
Get started
guide

Duplicate alerts and missed webhooks: what a router should do

Short answer

A router should refuse to fill the same alert twice, cap a script that fires in a loop, say why an alert stopped, and never re-send a new trade that did not land. Shifu does all four: an exact repeat counts as one; a per-minute cap stops a runaway script; every refusal is on the Alerts page with its reason; an entry that does not land is skipped, never retried at a worse price. Only an exit keeps trying for a few seconds, since a late close beats an open trade. An alert missing from that page never left TradingView.

Updated: September 18, 2026

What happenedWhat Shifu doesWhat you do
The same alert arrives twice (a retrigger, a double delivery)An exact repeat of the same alert is treated as one; the second gets the first’s result instead of a second fillKeep the "time": "{{timenow}}" line in the message so each real alert is unique
A tick-triggered alert fires many times inside one barThe bot’s per-minute cap refuses the burst and records itSet the alert to “Once Per Bar Close”; raise the cap only if the burst was intended
A hand-off to the broker does not land in timeAn entry is skipped and recorded with the reason — never sent again seconds later at a worse price. An exit keeps trying for a few seconds, then is recorded if it still did not landFor a missed exit, check the position at your broker; the next alert routes normally
The alert is not on the Alerts page at allNothing — it never reached ShifuCheck the webhook URL and the alert’s status in TradingView’s alert log; fire a test from the Setup tab
The message is not JSON, or a field is wrongRefused with the reason and the message quoted backPaste the ready-made message from the Setup tab; fix the named field
The message is over 8 KBRefused for size before it is readTrim it to the fields Shifu reads

Every line is written on the alert itself. None of it is an opinion about your trade.

  1. Make every alert unique

    The time line is what tells a retrigger from a new signal. Use "time": "{{timenow}}" on every alert, and add "order_id": "{{strategy.order.id}}" on a strategy alert. A fixed value there makes every alert after the first look like a duplicate.

  2. Fire once per bar close

    An alert left on “Once Per Bar” or a tick trigger can send the same signal many times inside one bar. “Once Per Bar Close” makes one closed bar one order; the cap is the safety net, not the plan.

  3. Let the bracket carry the exit

    If a later exit alert is ever missed, a resting take-profit and stop at the broker still close the trade. Put them on the entry and the exit no longer depends on a second delivery.

Questions people ask

What if TradingView delivers the same alert twice?

With a unique key per alert, the second delivery carries the same key as the first and is treated as one. It is recorded as a duplicate of the first, with no second fill.

Does Shifu ever retry an order?

Only exits. If a new trade’s hand-off to the broker does not land within its budget, it is skipped and recorded, and it is never sent again later at a worse price. An exit keeps trying for a few seconds, because a late close beats an open trade.

Could a missed alert leave me in a trade with no exit?

Not if the entry carried a bracket: the take-profit and stop rest at the broker from the fill. On paper and Tradovate, a later entry also flattens the old position first.

How do I see that a duplicate was caught?

On the Alerts page the second alert is marked as a duplicate of the first and shows the first’s result. Nothing was placed twice.