Questions › Guides

TradingView → HoldAlarms → PineConnector: setup

Who this is for: you send TradingView alerts to PineConnector (the MetaTrader 4/5 EA or PineConnector Edge) and want each alert logged, and retried when PineConnector 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 PineConnector. 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 PineConnector account with your License ID (PineConnector Portal → Connections) and a running receiver: the EA in MetaTrader 4/5, or PineConnector Edge.
  • A HoldAlarms account. Starter is €19/mo and Ops €49/mo, after a free trial.

Step 1: Point HoldAlarms at PineConnector

  1. Start a trial and open the HoldAlarms dashboard.
  2. Under Destinations, paste PineConnector's webhook URL, https://webhook.pineconnector.com, into Add a destination URL and click Add destination. The URL is the same for everyone; your License ID goes in the message (PineConnector: syntax).
  3. Copy Your webhook URL from the dashboard (it looks like https://api.holdalarms.com/hook/<your token>).

Step 2: 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. Paste the message exactly as PineConnector's docs show it. HoldAlarms forwards it unchanged.

HoldAlarms forwards your alert message as sent, with the same media type (text/plain here). 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

  1. Check your HoldAlarms URL first with the free Webhook Checker for TradingView.
  2. Fire a test on a demo account. PineConnector documents a connection test message, LicenseID,test,test (PineConnector: test your setup).
  3. 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 PineConnector Portal → Bridge, where you find the signal by time and account (PineConnector: test your setup), plus your MetaTrader terminal.
  4. HoldAlarms only confirms delivery. What PineConnector does with the message is set up and checked in PineConnector.

Common pitfalls

  • Syntax mistakes. PineConnector expects License ID, command, symbol, then parameters, in that order, one command per message. Watch for typos, a trailing comma or extra text, and anything else their docs call out (PineConnector: syntax).
  • Duplicates. Identical alerts from the same HoldAlarms account within 20 seconds are forwarded once. PineConnector's syntax has no free-form timestamp field, so don't add one; if you need two identical messages close together, send them more than 20 seconds apart.
  • IP filters. PineConnector's docs describe no IP allowlist for its webhook; your License ID and the optional secret protect it (PineConnector: syntax). HoldAlarms has no fixed outbound IP addresses, so it couldn't pass an IP allowlist anywhere.
  • Rejected messages. A message PineConnector 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.
  • No custom headers. HoldAlarms can't add headers you choose. PineConnector doesn't need any: the License ID and secret travel in the message.

Questions

Which URL do I put in HoldAlarms?

PineConnector's webhook URL, https://webhook.pineconnector.com. TradingView then sends to your HoldAlarms URL instead.

Does HoldAlarms change my PineConnector message?

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 PineConnector?

No. HoldAlarms only checks and retries delivery to PineConnector's webhook URL. What PineConnector does with the message is set up in PineConnector.

What happens if PineConnector 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 PineConnector first, because a rejected message is rejected again on every retry.

More guides

HoldAlarms is not affiliated with TradingView. TradingView is a trademark of TradingView, Inc. HoldAlarms is not affiliated with PineConnector. PineConnector is a trademark of its owner.