Alert delivery for webhooks from any platform

Retries delivery to your endpoint,
then moves alerts that still fail to a dead-letter queue.

HoldAlarms sits between the platform that fires your alerts and the endpoint that acts on them, and shows whether delivery worked for every alert that reaches HoldAlarms. We answer the sender as soon as your alert is queued, designed to reply fast, well before short sender timeouts, then retry delivery. If your endpoint is down for a short time, 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. If it still can't deliver, the alert goes to the dead-letter queue, you get an email (failure emails are grouped and capped at up to 10 a day), and the dashboard shows each recent alert's status.

We just deliver your alerts Works with any webhook sender, for example TradingView

What it costs

Every plan answers TradingView as soon as the alert is queued, designed to reply fast, well before its ~3-second timeout, retries delivery. Failed alerts are kept in a dead-letter queue, you get an email (failure emails are grouped and capped at up to 10 a day), and the dashboard shows each recent alert's status. Try it free: 300 alerts or 7 days, whichever comes first, no card needed.

Starter

€19/ month

€190/ year

€15.83 a month, billed yearly. 2 months free.

For a few endpoints or accounts.

  • 1 TradingView webhook URL, up to 3 destinations (your endpoints' HTTPS URLs or the hosted inbox)
  • Each alert goes to every destination at once and counts as one alert
  • Answers TradingView as soon as the alert is queued, designed to reply fast, well before its ~3-second timeout
  • Queue plus up to 5 automatic retries, 2 to 60 seconds apart; permanent errors aren't retried
  • Failed alerts are kept in a dead-letter queue, you get an email (failure emails are grouped and capped at up to 10 a day), and the dashboard shows each recent alert's status
  • Hosted inbox showing your last 50 alerts
  • 1 heartbeat: an email if a scheduled TradingView alert stops arriving
  • Email support, reply within 2 business days
Start with Starter Start with Starter yearly

Start free, no card

Try HoldAlarms free: your first 300 alerts or 7 days, whichever comes first. No card required. The trial includes 1 destination. Test alerts sent from the dashboard don't count toward the 300. When the trial ends, forwarding pauses until you pick a plan. You're never charged automatically.

Pay monthly, or yearly and get 12 months for the price of 10. A yearly plan is paid up front for the first 12 months, then continues monthly at the normal monthly price, cancel any time. Prices are in EUR. The amount shown at checkout is the amount you pay.

Pay by card; payments are handled by Stripe. Cancel any time on the cancellation page.

What HoldAlarms does for you

1

Paste one link

In your TradingView alert, use your HoldAlarms link instead of your endpoint's address. That's the only change.

2

Beat TradingView’s 3-second cutoff

We tell TradingView “got it” as soon as your alert is queued, designed to reply fast, well before its ~3-second timeout, so it doesn’t cancel your alert.

3

Failed alerts get retried, then parked

We queue each alert and retry if your endpoint doesn’t answer. If it stays down, the alert goes to the dead-letter queue: you see it in your dashboard, failure emails are grouped and capped at up to 10 a day, and support can look at it with you.

Why alerts get lost

Most alert senders give your endpoint a few seconds and rarely resend. TradingView is a typical example, and this is how it behaves.

TradingView waits only about 3 seconds

The remote server must answer within about three seconds or TradingView cancels the request.

Source: How to configure webhook alerts

Why a step in the middle helps

If your endpoint does heavy work before it answers TradingView, it’s racing that clock. HoldAlarms says “got it” to TradingView straight away, then passes the alert to your endpoint in the background.

Check your TradingView plan: webhooks need a TradingView plan that includes them. The free Basic plan can’t send them.

Set it up in 5 minutes, step by step

Tick these off one by one. About 5 minutes.

  1. 1

    Create your free account

    Start free: 300 alerts or 7 days, no card needed. Or pick a plan at checkout.

  2. 2

    Check your TradingView plan

    TradingView only sends webhooks from a paid plan that includes them, and only after you turn on two-factor authentication in your TradingView account settings.

  3. 3

    Paste your link into the alert

    In TradingView: Alert, then Notifications, then Webhook URL

    Create or edit an alert, open its Notifications tab, tick Webhook URL and paste your HoldAlarms URL. Your personal link is on the dashboard.

    Optional: add the message your endpoint expects. See an example

    Put whatever your endpoint expects in the alert's Message field, for example:

    {"ticker": "{{ticker}}", "price": {{close}}, "fired_at": "{{timenow}}"}

    TradingView sends application/json when the message is valid JSON, otherwise text/plain.

    The "fired_at": "{{timenow}}" field is optional. TradingView fills in the time the alert fired (UTC), and your dashboard then shows how long each alert took to reach HoldAlarms. Type {{timenow}} exactly as shown. Don't use {{time}}: that is the bar's open time, so on longer timeframes every alert would look late. HoldAlarms forwards your message unchanged, including this field, so leave it out if your endpoint rejects unknown fields.

  4. 4

    Choose where alerts go

    On the dashboard: your endpoint's public HTTPS URL, or our hosted inbox to watch alerts arrive. Your endpoint gets your message exactly as TradingView sent it.

    Technical details

    HoldAlarms forwards the message body unchanged with the same content type (application/json or text/plain), and adds X-HookWatch-Event-Id, X-HookWatch-Event-Hash and X-HookWatch-Attempt headers. Other TradingView headers are not passed on.

  5. 5

    Send a test alert

    One click on Send test alert in the dashboard, or fire a real alert. Watch it show up with its status.

You're done!

Your TradingView alerts now flow through HoldAlarms to the destination you chose.

Optional heartbeat: we'll email you if TradingView goes quiet. Set one up

Optional: get an email if TradingView goes quiet

If TradingView stops sending, there's no alert for us to retry. A heartbeat catches that: a small scheduled TradingView alert checks in with HoldAlarms, and if the check-ins stop, we email you.

  1. On the dashboard, under Heartbeats, add a heartbeat and pick how often it checks in: every 1, 5 or 15 minutes. You get a separate heartbeat URL. Don't use your main webhook URL for this.
  2. In TradingView, create an alert that fires once per bar on a chart with that same timeframe. For example: a symbol that trades 24/7, the condition "price greater than 0", and the trigger "once per bar close". Stocks and futures stop outside market hours, and the beats stop with them.
  3. Tick Webhook URL and paste the heartbeat URL. The message can be anything; HoldAlarms ignores it.

If a beat is late, you get one email, and another when the beats come back. The free trial and Starter include 1 heartbeat, Ops includes 5.

Technical details
  • Monitoring starts with the first real beat from TradingView (the dashboard's Send test beat button doesn't start it).
  • A beat counts as late if none arrives within the interval plus 60 seconds. We send one email, and one more when beats resume.
  • After a HoldAlarms restart we don't count beats that may have been lost while we were down: we report a miss only if the next beat after that is late too, so our own downtime doesn't trigger an email.
  • Heartbeat emails are capped at 10 per account per day.
  • Beats don't count as alerts and are never forwarded to your destinations.
  • Heartbeat emails pause while your trial has ended or your subscription isn't active.

What happens to each alert

We tell TradingView "got it" straight away, then pass the alert on to your endpoint. If your endpoint doesn't accept it, we retry up to 5 times. Retries finish within about 3 minutes, or up to about 6 with Retry-After. If it still fails, the alert goes to the dead-letter queue, and failure emails are grouped and capped at up to 10 a day; support can look at it with you. Keep your webhook URL secret, like a password.

Technical details
  • HoldAlarms answers TradingView with HTTP 200 as soon as your alert is queued, designed to reply fast, well before its ~3-second timeout, then delivers in the background.
  • Your destination has 10 seconds per attempt to answer. Any 2xx status counts as accepted. Any other status, a redirect, a network error or a timeout counts as a failure.
  • Failed deliveries are retried up to 5 times, 2 to 60 seconds apart; permanent errors (400, 401, 403, 410, 413, 414, 415) aren't retried. 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; email support and we'll look at it with you.
  • Keep your webhook URL secret. The token in it is what identifies your account, so treat it like a password. If it leaks, email support right away.

Got questions? We’ve got answers

What counts as an alert?

Each webhook TradingView sends to your HoldAlarms URL counts as one alert. Retries don't count, and an alert sent to several destinations still counts once. The free trial covers your first 300 alerts (or 7 days, whichever comes first).

Can one alert go to several endpoints?

Yes. Add up to 3 destinations on Starter or 15 on Ops; the free trial has 1. Every alert is delivered to each active destination separately, with its own retries and dead-letter queue, so one slow or broken endpoint doesn't hold up the others.

What happens to an alert my endpoint never accepts?

We retry up to 5 times, 2 to 60 seconds apart; permanent errors (400, 401, 403, 410, 413, 414, 415) aren't retried. Retries finish within about 3 minutes, or up to about 6 with Retry-After. If it still fails, the alert goes to the dead-letter queue, you get an email (failure emails are grouped and capped at up to 10 a day), and the dashboard shows each recent alert's status; support can look at it with you.

What happens when my trial ends?

Forwarding pauses and HoldAlarms doesn't forward the alert: when the 7 days are over it answers TradingView with HTTP 402 (payment required), and once the 300 free alerts are used it answers HTTP 403. Pick a plan to resume. You're never charged without choosing one.

Can I cancel anytime?

Yes. Cancel by email to support@holdalarms.com or with the “Verträge hier kündigen” (German for “cancel a contract here”) button at any time. Your plan stays active until the end of the period you've already paid for, and you won't be charged again.

Can I get a refund?

Yes: a full refund of your first payment if you ask within 14 days of it (once per person or organisation; your paid access then ends). Consumers also have a 14-day right of withdrawal. See Refunds & withdrawal.

Can I change plans?

For now, plan changes go through support: email support@holdalarms.com from your account email and we'll switch your plan.

What is receive lag?

The time between an alert firing in TradingView and HoldAlarms receiving it. Add "fired_at": "{{timenow}}" to your alert message and the dashboard shows the lag for each alert, plus the median (p50) and p95 over your last 100 alerts that include it. If the field is missing or isn't a time we can read (TradingView's {{timenow}}, an ISO 8601 time with Z or an offset like +02:00 or +0200, or a Unix timestamp), we simply show no lag; the alert is still forwarded as usual. Times without an offset are ignored because they're ambiguous, and so are times before 2020 or more than 7 days old. Use {{timenow}} (when the alert fired), not {{time}} (when the bar opened). Differences of up to 5 seconds between TradingView's clock and ours show as 0s.

What happens to a stale alert?

On paid plans (Starter and Ops) you can turn on a stale rule (off by default): "hold alerts older than" 30 seconds up to 30 minutes. An alert that arrives later than that after firing is parked in the dead-letter queue marked stale and is not forwarded to any of your destinations, so a late alert can't reach your endpoint. It still counts as a received alert, once, like any other alert, and the dashboard shows why it was held. Alerts without a readable fired_at are never held. Email support and we'll look at it with you. The free trial shows lag but can't use the stale rule.

How do I know TradingView is still sending?

Set up a heartbeat: a TradingView alert on a fixed schedule (every 1, 5 or 15 minutes) that posts to your heartbeat URL. If no beat arrives within the interval plus 60 seconds, we email you once, and again when beats resume. A heartbeat tells you that the scheduled alert stopped arriving, for example because it expired or was stopped in TradingView or TradingView isn't sending. It can't tell you about a single trade alert that wasn't sent. If you pause a heartbeat, no emails are sent.

Does a delivered alert mean the receiving app acted on it?

No. HoldAlarms confirms your destination accepted the alert (a 2xx reply). What happens next is up to the app that receives it. HoldAlarms delivers your alerts; it doesn't generate trading signals or place orders.

Do I still need my current webhook endpoint?

Yes. HoldAlarms sits between TradingView and the endpoint you already use (your own app or server, a third-party webhook service, a Discord or Telegram relay) and makes sure the alert reaches it.