Questions › Guides

TradingView → HoldAlarms → n8n: step-by-step

Who this is for: you trigger an n8n workflow from TradingView alerts and want each alert to reach n8n even when n8n is slow or briefly down.

Why put HoldAlarms in between

TradingView cancels a webhook after about 3 seconds. It resends on 5xx errors (not 504), after 5 s, with a total of 3 such resends (TradingView: webhooks). An n8n workflow set to answer "When Last Node Finishes", or an instance that is restarting, can miss that window.

HoldAlarms answers TradingView as soon as the alert is queued, designed to reply fast, well before its ~3-second timeout, then forwards the alert to n8n. Each delivery attempt gets 10 s. If n8n doesn't accept it, HoldAlarms retries up to 5 times, 2 to 60 seconds apart (permanent errors such as 401 or 403 aren't retried). Retries finish within about 3 minutes, or up to about 6 with Retry-After. If it still fails, the alert is parked in a dead-letter queue, and failure emails are grouped and capped at up to 10 a day. HoldAlarms adds a hop; it doesn't cut latency.

What you need

  • A TradingView plan with webhook alerts and 2-factor authentication turned on.
  • An n8n instance reachable on a public HTTPS URL (n8n Cloud or self-hosted).
  • A HoldAlarms account. Starter is €19/mo and Ops €49/mo, after a free trial.

Step 1: Create the n8n Webhook node

  1. In n8n, create a workflow and add a Webhook node as the trigger (n8n: Webhook node).
  2. Set HTTP Method to POST.
  3. Optional: set a fixed Path (for example tradingview) so the URL stays readable. By default n8n generates a random path.
  4. Respond: choose Immediately. A quick reply keeps each delivery well inside HoldAlarms' own 10 s window.
  5. Security: leave Authentication on None. HoldAlarms can't add your own auth header and has no fixed outbound IP addresses, so Header auth and an IP allowlist won't work. Instead, use a long random secret as the Path so the URL is hard to guess, or put a token in the alert message (for example "secret":"…") and check it in an If node right after the webhook.
  6. Copy the Production URL. The Test URL only works while you click "Listen for test event"; the Production URL only works once the workflow is active.

Step 2: Point HoldAlarms at n8n

  1. Start a trial and open the HoldAlarms dashboard.
  2. Under Destinations, paste the n8n Production URL into Add a destination URL and click Add destination.
  3. Copy Your webhook URL from the dashboard (it looks like https://api.holdalarms.com/hook/<your token>).

Step 3: Point TradingView at HoldAlarms

  1. Create or edit the alert in TradingView.
  2. In Notifications, tick Webhook URL and paste your HoldAlarms webhook URL.
  3. Write the Message. JSON is easiest because n8n parses it into fields:
{"ticker":"{{ticker}}","price":"{{close}}","time":"{{timenow}}"}

HoldAlarms forwards the message unchanged with the same content type (application/json or text/plain). If your n8n version shows an empty body for plain-text messages, turn on the Webhook node's Raw Body option.

Step 4: Test it

  1. Check your HoldAlarms URL first with the free Webhook Checker for TradingView.
  2. To see data in the n8n editor, temporarily add the n8n Test URL as the destination and click Listen for test event.
  3. Fire the alert (or the dashboard's test alert).
  4. 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 n8n (the editor, or Executions for production runs).
  5. Switch the destination back to the Production URL and activate the workflow.

Common pitfalls

  • Test URL left in place. It stops working when you stop listening. Use the Production URL for live alerts.
  • Workflow not active. The Production URL only works once the workflow is active.
  • "When Last Node Finishes" on a long workflow. If the workflow takes more than 10 s, HoldAlarms counts the attempt as failed and retries, which can run the workflow again. Respond Immediately.
  • Invalid JSON in the message. A missing quote or comma means n8n gets plain text instead of fields.
  • Duplicates. Identical alerts from the same account within 20 seconds are forwarded once. Each delivery also carries X-HookWatch-Event-Id, X-HookWatch-Event-Hash and X-HookWatch-Attempt headers. A retry keeps the same Event-Id, so n8n can skip an alert it already processed; Attempt shows which try got through.
  • Wrong port. TradingView only calls ports 80 and 443. Your HoldAlarms URL already meets this; n8n doesn't need to.

Questions

Can n8n receive TradingView webhooks directly?

Yes, but TradingView cancels requests after about 3 seconds. HoldAlarms answers TradingView itself and gives n8n 10 seconds per attempt with 5 retries.

Can I use Header auth or an IP allowlist on the n8n webhook?

No. HoldAlarms can't add your own auth header and has no fixed outbound IP addresses. Use a long random webhook path or a secret inside the alert message instead.

Which headers does HoldAlarms send to n8n?

Content-Type (the same as TradingView sent), X-HookWatch-Event-Id, X-HookWatch-Event-Hash and X-HookWatch-Attempt.

What happens if n8n is down?

HoldAlarms retries up to 5 times, 2 to 60 seconds apart. Retries finish within about 3 minutes, or up to about 6 with Retry-After. After that the alert is parked in a dead-letter queue, and failure emails are grouped and capped at up to 10 a day.

More guides

HoldAlarms is not affiliated with TradingView. TradingView is a trademark of TradingView, Inc. HoldAlarms is not affiliated with n8n. n8n is a trademark of n8n GmbH.