TradingView → HoldAlarms → SignalStack: setup
Who this is for: you send TradingView alerts to a SignalStack webhook and want each alert logged, and retried when SignalStack doesn't accept it.
Why put HoldAlarms in between
TradingView cancels a webhook request if the receiving server takes longer than three seconds to process it (TradingView: webhooks). If your server answers with HTTP 500–599 (except 504), TradingView sends the webhook again after 5 seconds, with a total of 3 such resends (TradingView: webhook resubmission).
HoldAlarms answers TradingView as soon as the alert is queued, designed to reply fast, well before that timeout, then forwards the alert to SignalStack. Each delivery attempt gets 10 s. Any reply other than 2xx, a timeout or a network error counts as a failure. HoldAlarms retries up to 5 times, 2 to 60 seconds apart. If the reply asks for a longer wait (Retry-After), we wait up to 60 seconds. A reply of 400, 401, 403, 410, 413, 414 or 415 is a permanent error: it isn't retried. If every try fails, the alert goes to the dead-letter queue, and failure emails are grouped and capped at up to 10 a day. Retries finish within about 3 minutes, or up to about 6 with Retry-After. So a retried alert can arrive that late; decide whether that's acceptable for your strategy. HoldAlarms adds a hop; it doesn't cut latency.
What you need
- A TradingView plan with webhook alerts and 2-factor authentication turned on.
- A SignalStack account with a webhook address.
- A HoldAlarms account. Starter is €19/mo and Ops €49/mo, after a free trial.
Step 1: Point HoldAlarms at SignalStack
- In SignalStack, open Brokers & Webhooks and click Create Webhook on the connected account. SignalStack shows the webhook address with an example request below it (SignalStack: create webhooks). You can start with a test webhook, which checks that signals arrive and are correctly formatted (SignalStack: production and test webhooks).
- In the HoldAlarms dashboard under Destinations, paste that SignalStack address into Add a destination URL and click Add destination.
- Copy Your webhook URL from the dashboard (it looks like
https://api.holdalarms.com/hook/<your token>).
Step 2: Point TradingView at HoldAlarms
- Create or edit the alert in TradingView.
- In Notifications, tick Webhook URL and paste your HoldAlarms webhook URL.
- Replace TradingView's pre-filled Message: paste the message exactly as SignalStack's docs show it. HoldAlarms forwards it unchanged.
HoldAlarms forwards your alert message as sent, with the same media type (application/json for a JSON message). A ; charset=… parameter on the Content-Type is dropped, and HoldAlarms adds its own X-HookWatch-Event-Id, X-HookWatch-Event-Hash and X-HookWatch-Attempt headers.
Step 3: Test it
- Check your HoldAlarms URL first with the free Webhook Checker for TradingView.
- Fire a test alert, ideally to a SignalStack test webhook or a paper account.
- Check three places: TradingView's Alerts log (Webhook status), HoldAlarms (a failed alert shows as Failed, in dead-letter queue under Recent alerts; failure emails are grouped and capped at up to 10 a day), and the SignalStack log.
- HoldAlarms only confirms delivery. What SignalStack does with the message is set up and checked in SignalStack.
Common pitfalls
- Default message left in place. TradingView pre-fills the Message box; SignalStack needs its own JSON format instead (SignalStack: TradingView alerts).
- Invalid JSON. A trailing comma or curly quotes break the message. The checker flags these.
- Reading SignalStack errors. SignalStack doesn't publish a list of error messages. Its log records each received signal with its output, errors and error messages, and the response; open the entry to see the request and the response (SignalStack: check and read the log).
- Duplicates. Identical alerts from the same HoldAlarms account within 20 seconds are forwarded once. SignalStack's docs don't say whether extra JSON fields are accepted, so don't add a timestamp field unless your test webhook accepts it; otherwise send identical messages more than 20 seconds apart.
- IP filters. SignalStack's docs describe no IP allowlist for webhooks; the webhook address itself is what you keep private. HoldAlarms has no fixed outbound IP addresses, so it couldn't pass an IP allowlist anywhere.
- Rejected messages. A message SignalStack rejects with a 5xx is sent up to 6 times in total, the first try plus 5 retries, before it lands in the dead-letter queue. A permanent error (400/401/403/410/413/414/415) is sent once and goes straight there.
Questions
Which URL do I put in HoldAlarms?
The webhook address SignalStack creates for your connected account under Brokers & Webhooks. TradingView then sends to your HoldAlarms URL instead.
Does HoldAlarms change my SignalStack JSON?
No. It forwards the message as TradingView sent it, with the same media type. It drops a charset parameter on the Content-Type and adds its own X-HoldAlarms headers.
Is HoldAlarms an alternative to SignalStack?
No. HoldAlarms only checks and retries delivery to SignalStack's webhook URL. What SignalStack does with the message is set up in SignalStack.
What happens if SignalStack rejects an alert?
Any reply other than 2xx counts as a failure. A permanent error (400, 401, 403, 410, 413, 414 or 415) goes straight to the dead-letter queue, with no retries. Other errors are retried first, up to 5 times, 2 to 60 seconds apart. Either way, failure emails are grouped and capped at up to 10 a day. Fix the cause in SignalStack first, because a rejected message is rejected again on every retry.
More guides
- Why didn't my TradingView alert fire?
- TradingView webhook timeout: why "request took too long" happens
- TradingView webhook not received: 7 things to check
- Duplicate TradingView webhook alerts: why they happen and how to dedupe them
- The TradingView webhook checklist
- Does TradingView retry webhooks?
- TradingView → HoldAlarms → n8n: step-by-step
- TradingView → HoldAlarms → TradersPost: setup and limits
- TradingView → HoldAlarms → PineConnector: setup
- TradingView → HoldAlarms → PickMyTrade: setup
- TradingView → HoldAlarms → CrossTrade: setup and limits
- TradingView → HoldAlarms → Alerio: setup
- All guides
- All HoldAlarms questions
HoldAlarms is not affiliated with TradingView. TradingView is a trademark of TradingView, Inc. HoldAlarms is not affiliated with SignalStack. SignalStack is a trademark of its owner.