Skip to content

Help

FAQ

How StatusEye works, how to add and configure a monitor, where alerts come from and what the Free, Lite and Pro plans include.

Monitors are managed in your account on the website. The Telegram bot is used for signing in and receiving alerts.

Below are answers based on how the service actually works. If you can't find your answer, contact support: @StatusEyeSupport_bot.

1. What is StatusEye

StatusEye is a website and API uptime monitoring service. You add an address, and the service checks it periodically and records:

  • status — up or down;
  • the HTTP response code;
  • latency (response time in milliseconds);
  • the time of the last and next check.

Check results are saved to the history, downtime periods are collected into a list of incidents, and when the state changes the service sends an alert to Telegram.

The service interface is the website and your account. The Telegram bot is used only for signing in and delivering alerts; you cannot add or change monitors through the bot.

2. Getting started

  1. Click “Sign in” in the site header and choose Telegram or email.
  2. Telegram: follow the one-time link to the bot and tap Start — sign-in is confirmed automatically, no password needed. Email: sign up with a password and confirm your address via the link in the email.
  3. After signing in, open your account (“My monitors” in the profile menu).
  4. Click “Add monitor” and enter the address of your first website.

Your account is created automatically on first sign-in. All monitor management is done only in your account on the website: the bot has no such actions. Downtime notifications are sent only via Telegram: if you signed in with email, link Telegram or connect your own bot on a paid plan.

3. Monitors

How to add a monitor

  1. In the profile menu, choose “My monitors”.
  2. Click “Add monitor”.
  3. Enter the website or API address and a name (if no name is given, the domain is used).
  4. Choose the check mode — headers or body, if your plan allows it.
  5. Click “Add”.

The number of monitors is limited by your plan: Free — 2 monitors, Lite — 5 monitors, Pro — 10 monitors. When the limit is reached, the add button is disabled and a link to the subscription page appears.

What you can do with a monitor

  • Check — an immediate manual check. It doesn't use your daily quota and isn't saved to the history; only the current status and check time are updated. There is a short pause between manual checks of the same monitor (15 seconds on Free, 10 seconds on Lite, 5 seconds on Pro).
  • Edit — change the name, check mode and control text; when the mode changes, the next check time is recalculated.
  • Delete — delete the monitor, with confirmation right in its card.
  • History — a table of checks: time, status, reason, HTTP code, latency, mode.
  • Incidents — downtime periods: start, duration and reason.

The monitor card shows the current status, address, mode, latency and a countdown to the next check. If there have been no checks yet, the status is shown as pending.

How often checks run

The interval is set by your plan and mode and cannot be changed manually: Free — headers every 120 seconds; Lite — headers and body every 60 seconds; Pro — headers every 30 seconds, body every 60 seconds. The timeout for a single check is 10 seconds.

4. Check modes

The mode determines what exactly is checked and how latency is measured.

  • headers — a fast availability check: only the response headers are requested, the page body is not read. Latency is measured until the headers are received. Status is determined by the HTTP response code. Available on all plans.
  • body — a page content check: the response body is read (up to 256 KB) and, if needed, matched against the specified text. This mode uses the daily body check quota and is available on Lite and Pro.

If a monitor runs in body mode, and your plan no longer allows it or the daily body check quota is exhausted, the check automatically runs in headers mode, and the history and card show the reason — “body quota exhausted” or “mode not available on your plan”. The monitor keeps being checked.

5. Alerts

Alerts arrive as a Telegram message from the service bot — to the account you signed in with.

  • A message is sent only when the state changes: up → down or down → recovered.
  • If the state hasn't changed, no repeat messages are sent.
  • The alert includes the monitor, address, reason, time and duration of the previous state.
  • A failure in the checking infrastructure does not change the monitor's status and does not trigger an alert.
  • Each alert sent counts towards your plan's daily alert quota.

On a paid plan you can receive alerts from your own bot — in a private chat, group or channel: see “Your own alert bot”.

6. Your own alert bot

Alerts about websites going down and recovering can come not from the StatusEye bot but from your own Telegram bot — with its own name and avatar, in a private chat, group or team channel. This feature is available on paid plans; it is not available on Free or during the trial.

How to connect

  1. Create a bot with @BotFather using the command /newbot and copy the token it sends you.
  2. On the website, open “Settings” in the profile menu, find the “Your own alert bot” section, paste the token and click “Connect”.
  3. Choose where to send alerts:
    • private chat — open the bot via the link and tap “Start”;
    • group — add the bot to a group via the link, the link code will be sent automatically;
    • channel — make the bot a channel administrator and publish a post with the link code shown in the settings.
  4. Click “Check”. The bot will send a test message and the status will change to “Working” — from then on alerts go through it.

The link code is valid for a limited time — the expiry is shown next to it. If the code has expired, click “Link another chat” to get a new one.

What comes from your own bot

  • Only monitor alerts come through your own bot.
  • Plan, payment and reminder messages are still sent by the StatusEye bot — to the chat you signed in with.
  • If your bot stops working (it was deleted, the token was revoked or it was removed from the chat), the alert will come from the StatusEye bot with a note about the problem, and the status in settings will become “Not working”. To bring your bot back, fix the cause and click “Check” again.
  • If you switch to Free, the settings are kept, but alerts are sent by the StatusEye bot.

Management and common problems

  • Link another chat — change where alerts are sent.
  • Replace token — if you reissued the token in @BotFather.
  • Disconnect — alerts will be sent by the StatusEye bot again.
  • “Another program is already reading this bot” — the bot is connected to another service or has a webhook set. StatusEye needs a separate bot that isn't used anywhere else.
  • “This bot is already connected to another account” — one bot can be linked to only one StatusEye account.
  • The token is stored on the server and is not shown anywhere after connecting — not even to you.

7. Webhooks

Alerts about websites going down and recovering can be sent not only to Telegram but also to a URL of your service — a webhook. Slack, Discord, Mattermost, n8n, Make, Zapier, on-call systems and your own server will all work. Webhooks are available on Lite (one) and Pro (up to five); they are not available on Free or during the trial.

How to connect

  1. Open “Settings” → “Notifications” → “Webhooks”, paste the address ( https only) and click “Add”. The format is picked from the address: Slack, Discord or JSON.
  2. Click “Test” — a test message is sent to the address and the result appears on the page.
  3. To receive alerts on webhooks only, turn off “Alerts in Telegram”. If all webhooks stop working or your plan ends, Telegram turns back on automatically — you will not lose alerts.

What is sent

The json format is the full event (a POST request, body application/json):

{
  "version": 1,
  "event_id": "…uuid…",
  "type": "monitor.down",
  "occurred_at": "2026-10-31T12:00:00Z",
  "monitor": {"id": 42, "name": "My site", "url": "https://example.com"},
  "status": "down",
  "reason": {"code": "http_5xx", "text": "…"},
  "http_status": 502,
  "latency_ms": 1200,
  "duration_sec": 3600,
  "links": {"dashboard": "https://statuseye.ru/profile"}
}

type: monitor.down, monitor.up, test. duration_sec — how long the site was up (for down) or down (for up), or null. Fields are only ever added; breaking changes will ship as version: 2. Retried deliveries carry the same event_id — use it to drop duplicates.

The slack and discord formats are a ready-made message: for Slack, Mattermost and Rocket.Chat it is the text; for Discord it is a coloured card (mentions like @everyone are disabled).

How to verify the signature (json format)

Every request is signed with the key shown once when the webhook is created. The X-StatusEye-Signature header contains t=<unix-время>,v1=<hex>; the signature is HMAC-SHA256 of the string <t>.<тело запроса> (use the body as received, before parsing JSON). Check the time too and reject old requests. Other headers: X-StatusEye-Event, X-StatusEye-Event-Id, User-Agent: StatusEye-Webhook/1.

Python

import hashlib, hmac, time

def verify(secret: str, body: bytes, header: str, tolerance: int = 300) -> bool:
    parts = dict(p.split("=", 1) for p in header.split(","))
    ts, sig = int(parts["t"]), parts["v1"]
    if abs(time.time() - ts) > tolerance:
        return False  # stale request
    msg = str(ts).encode() + b"." + body
    expected = hmac.new(secret.encode(), msg, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, sig)

Node.js

const crypto = require('crypto');

function verify(secret, rawBody, header, tolerance = 300) {
  const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
  const ts = Number(parts.t);
  if (Math.abs(Date.now() / 1000 - ts) > tolerance) return false; // stale request
  const expected = crypto.createHmac('sha256', secret)
    .update(ts + '.').update(rawBody).digest('hex');
  const a = Buffer.from(expected), b = Buffer.from(parts.v1 || '');
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

How delivery works

  • A 2xx reply means delivered. The receiver must reply within 10 seconds; we do not read or show the response body.
  • Network errors, timeouts, 5xx and 429 replies are retried after 30 seconds, 2 minutes, 10 minutes, 30 minutes, then hourly, for up to 24 hours.
  • Replies 400, 401, 403, 404, 410, redirects (3xx) and a forbidden address count as permanent errors. After five in a row, or after a day without a single delivery, the webhook is disabled, you get a Telegram message, and alerts go back to Telegram. Fix the address or click “Test” — the webhook returns to work.
  • Within one webhook, events arrive in order: “recovered” never overtakes “down”.
  • Only https addresses with a public IP are allowed: internal networks, localhost and service ports are blocked. Redirects are not followed — use the final address.

8. Plans and quotas

  • Free — 0 ₽. Up to 2 monitors, checks in headers mode every 120 seconds, up to 100 alerts per day, 7 days of history. body mode is not available: the daily body check quota is 0.
  • Lite — 149 ₽ per month. Up to 5 monitors, headers and body every 60 seconds, up to 2000 body checks and up to 300 alerts per day, 30 days of history, page text control, your own alert bot, one webhook.
  • Pro — 299 ₽ per month. Up to 10 monitors, headers every 30 seconds and body every 60 seconds, up to 5000 body checks and up to 500 alerts per day, 90 days of history, page text control, your own alert bot, up to five webhooks.

If a free trial is available, the subscription page shows a “Try 3 days for free” button.

Where to see quota usage

The “Subscription” section has a “Daily quotas” block: monitors, body checks and alerts — used and remaining. Quotas are counted per UTC day and reset at 00:00 UTC, i.e. 03:00 Moscow time.

How to get or change a plan

Open “Subscription” in the profile menu and click “Get a plan” — a payment window with a plan choice and an e-mail field will open. After payment the subscription is activated, and its status and end date are shown on the same page. On Lite you can upgrade to Pro with the “Switch to Pro” button: unused Lite days are not lost — they are converted by price and added to your Pro period (for example, 20 days of Lite give 9 extra days of Pro). You can switch from Pro to Lite after Pro ends. Payment and refund terms are described in the Terms of Service (in Russian), data processing — in the Privacy Policy (in Russian).

9. Account and data

Sign-in is done via Telegram with a one-time link — no password is used. One account corresponds to one Telegram account.

Data is isolated: your account shows and gives access only to your own monitors and their checks. Other users' monitors are not accessible, even via a direct link.

You can sign out using “Sign out” in the profile menu. After signing out, account pages require signing in again.

10. Support

Questions about the service, plans and payment — in Telegram: @StatusEyeSupport_bot.

Legal documents: Terms of Service (in Russian), Privacy Policy (in Russian).