Send website down alerts to IFTTT
Start an applet when a website goes down or comes back. Solo, Starter and Pro.
What you get
- A message when a website goes down, with the website and the reason. We look again before we send it. See Confirmed Alerts.
- The recovery arrives as its own message, with how long the website was down.
- A test message when you add it, so you know it arrives.
- Certificate expiry reminders are sent by email only, not to IFTTT. See SSL expiry reminders.
Which plans
Solo, Starter and Pro. Every chat, automation and webhook channel counts against one per-account limit: Solo 10, Starter 20, Pro 50. Not on Free.
| Plan | How many |
|---|---|
| Solo | Up to 10, shared with your other chat, automation and webhook channels |
| Starter | Up to 20, shared with your other chat, automation and webhook channels |
| Pro | Up to 50, shared with your other chat, automation and webhook channels |
Prices are in rupees, GST included. See plans.
Set it up
In TidyMonitor, open Alert channels, click Add channel and choose IFTTT. The app shows these same steps.
- Make an applet whose trigger is Webhooks, “Receive a web request with a JSON payload”.
- Open Documentation on the Webhooks service page to see your link and key.
- Paste the link for JSON requests in TidyMonitor, with your event name in it.
Then we send a test message. Tell us it arrived and the channel is ready.
What you give us
Webhooks service URL for the trigger 'Receive a web request with a JSON payload'.
Built to IFTTT’s documented format. Send the test message when you add it to see it arrive. Read IFTTT’s own guide.
What we send
IFTTT receives our standard webhook payload, version 1, so every key below is a field you can use there.
| Key | Type | Meaning |
|---|---|---|
| text | string | One ready-made line. Post it as it is if you need nothing else. |
| event | string | DOWN, DOWN_FINAL (the last repeat before we go quiet), RECOVERY, SSL_EXPIRY, DOMAIN_EXPIRY. A test message is RECOVERY with test: true. |
| monitor | string | The monitor’s name (its URL when unnamed). |
| url | string | The monitored address. |
| detail | string | Down: the reason. Recovery: the downtime. Test: empty. |
| time | string | Clock time in India, HH:mm:ss IST. |
| version | number | 1. |
| test | boolean | true only for “Send a test”. Filter on this first. |
| status | string | down, up, warning (a reminder), test. |
| monitor_id | number or null | Stable id of the monitor. null for a test. |
| incident_id | number or null | The outage’s id: the same on DOWN, every repeat, and its RECOVERY. Use it to pair them. null for reminders and tests. |
| occurred_at | string | ISO 8601 with offset, India time. Down: when the outage began. Recovery: when it ended. |
| reason | string or null | Down only: why (HTTP 500, timeout and so on). |
| downtime | string or null | Recovery only, for example 2h 5m. |
| days_left | number or null | Reminders only. |
| expires_on | string or null | Reminders only, for example 2026-10-21. |
Reminders are sent by email only today, so a webhook does not receive the reminder events yet. Their keys are part of the format and stay null.
An example: a website goes down
{
"text": "🔴 Acme API is DOWN — HTTP 500 (at 09:15:00 IST)",
"event": "DOWN",
"monitor": "Acme API",
"url": "https://acme.test",
"detail": "HTTP 500",
"time": "09:15:00 IST",
"version": 1,
"test": false,
"status": "down",
"monitor_id": 7,
"incident_id": 5,
"occurred_at": "2026-10-14T09:15:00+05:30",
"reason": "HTTP 500",
"downtime": null,
"days_left": null,
"expires_on": null
}The rules
- One POST with Content-Type application/json; charset=UTF-8.
- Every key is always present, in this order, and null when it does not apply.
- Keys may be added in a later version. None is renamed or removed, and no meaning changes, without a new version.
- Answer with any 2xx within 10 seconds and we count it as delivered. Anything else is tried again (6 attempts, at least 2 minutes apart), then the monitor’s fallback channel gets the alert.
- Redirects are not followed. The address must be public.
- The first message, sent while you add the channel, carries only text. “Send a test” from the channel’s menu sends the full payload.