Skip to content
Sigtake Academy Start free

How to Set Up Website Uptime Monitoring

A monitor requests your URL on a schedule and tells your team the moment it stops answering the way it should. This guide explains what counts as down, which settings to pick, and ends with a test outage reaching your team's channels.

Your customers shouldn't be the ones who tell you the site is down. A monitor checks for you around the clock, from outside your infrastructure, the same way a visitor would reach it.

How a monitor works

Every check is one HTTP request to your URL. A check passes or fails. A single failure doesn't page anyone: the monitor waits until the last few checks in a row have failed (the failure threshold), then opens an incident and sends an alert titled Down: <monitor name> to the monitor's team. The first check that passes again closes the incident and resolves the alert.

A row of checks over time. Two pass, then two fail in a row, which reaches a failure threshold of 2 and opens a Down alert. The next check passes and resolves it. ✓ ✓ ✕ ✕ ✕ ✓ UP THRESHOLD 2 REACHED RECOVERED Down alert sent Alert resolved A row of checks over time. Two pass, then two fail in a row, which reaches a failure threshold of 2 and opens a Down alert. The next check passes and resolves it. ✓ ✓ ✕ ✕ ✕ ✓ THRESHOLD 2 REACHED Down alert sent Resolved on recovery
Once the threshold is reached, more failures don't send more alerts. The incident stays open until a check passes.

The alert is an ordinary Sigtake alert, so it follows the team's routing: every member sees it in the app, and the team's channels in the monitor's project deliver it to Slack, Microsoft Teams or email. If that part isn't set up yet, start with setting up alert notifications for a team.

What counts as down

A check fails when any of these happens:

What happenedWhat the alert says
The server can't be reached: DNS doesn't resolve, the connection is refused or resetThe connection error
No complete response within 15 secondsRequest timed out
The status code isn't the one you expect. Redirects are followed first, up to 5, so this is the final page's statusExpected status 200, got 503
The status is 401 or 403Credentials rejected by the target
With SSL Check on: the certificate is expired, self-signed or doesn't match the domainSSL certificate is invalid or untrusted

A slow response is not down: a site that answers in eight seconds is still up. Each check's response time is recorded and charted on the monitor's page, so you can spot a site getting slower before it starts timing out.

Monitors check from the internet

Private addresses such as 10.0.0.5 or 192.168.1.20, and localhost, are refused when you save. To watch an internal service, expose a health endpoint publicly, ideally one that needs a token.

Set it up

  1. Check the team can receive alerts

    A monitor sends its alerts to one team. Make sure that team is added to the project you're working in and has at least one channel attached there, or the alert will only show up in the app.

    Monitors belong to a project, like alerts do. Pick the right one in the project switcher before you start: a monitor for your production site goes in Production.

  2. Add the monitor

    Open Monitors in the sidebar and use Add Monitor. Give it a name your team will recognize in an alert, paste the full URL including https://, and pick the team.

    The name becomes the alert title, so Checkout API reads better at 3 a.m. than monitor-2. Point the URL at a page that proves the app works, not just that the server is on: a /health endpoint that touches the database beats a static homepage served from a CDN. Operators and admins can create monitors.

  3. Choose how often to check and how sure to be

    Set Check Interval and Failure Threshold together. For a production site, 1 minute and 2 consecutive failures catches an outage in about two minutes while ignoring a single dropped request.

    The time to detect an outage is roughly the interval multiplied by the threshold:

    Interval × thresholdAlert after aboutGood for
    1 min × 22 minutesProduction sites and APIs customers depend on
    5 min × 210 minutesStaging, internal tools, marketing pages
    1 min × 11 minuteTesting, or a target that never blips
    15 min × 345 minutesThings nobody needs to wake up for

    A threshold of 1 alerts on every network hiccup between us and your server. Most teams that start there move to 2 within a week.

  4. Say what healthy looks like

    Leave Expected Status at 200 unless the URL answers with something else when it's fine. Keep SSL Check on for any https:// URL. Then use Create Monitor.

    The expected status must match exactly. If your health endpoint answers 204 No Content, set 204: a 200 would count as a failure. Leave Response Limit empty for now, since a slow response doesn't take the monitor down. The Advanced settings section, for request methods, headers, tokens and checks on the response body, isn't needed for a public page. For an endpoint behind a token, or to check what the response says, see monitoring an authenticated API health endpoint.

  5. Test it with a monitor built to fail

    Create a second monitor against a page that doesn't exist on your site, with a 1 minute interval and 1 failure as the threshold. Within about two minutes a Down alert should reach your team's channels. Then change the test monitor's URL to your real page: the next check passes and the alert resolves on its own. Delete the test monitor afterwards.

    For example, https://yoursite.com/sigtake-monitor-test should answer 404, which isn't the expected 200. The alert reads Down: <test monitor name> with the reason Expected status 200, got 404. If it arrives everywhere you expect, your real monitor's alerts will too, and the recovery proves the other half: the team hears when it's over. Change the URL before deleting, since deleting a monitor leaves its open alert behind.

After it's running

  • Recovery is automatic. When a check passes again, the incident closes, the alert resolves, the team is told it recovered, and a Slack card turns green. Nobody has to resolve it by hand.
  • The monitor's page is your status history: uptime for the last 24 hours, 7 days and 30 days, a 90-day uptime bar, response times, past incidents and every recent check with its status code.
  • The certificate's days left are shown there too, turning amber under 30 days and red under 7. An expiring certificate doesn't alert until it actually expires; then the check fails as invalid. Renew before the colour changes.
  • Pause during planned maintenance. A paused monitor isn't checked, so a deploy window doesn't page anyone. Resume it when you're done.

If something looks wrong

What you seeLikely cause
Uptime and response times show —The monitor hasn't been checked yet. The first check runs within a minute of creating it.
Saving fails with "This address is private or reserved"The URL is localhost or a private IP address. Monitors only reach public addresses.
Down with "Expected status 200, got 204" while the site worksThe endpoint answers 204 when healthy. Set Expected Status to 204.
Down with "Credentials rejected" on a page that works in your browserYour browser is logged in and the monitor isn't. Monitor a public URL, or send a token with each check.
Alerts on a brief blip you never noticedThe threshold is 1. Raise it to 2.
The alert appears in the app but nowhere elseThe team has no channel attached in this project. See setting up alert notifications.
Saving fails because of the teamThe team isn't added to this project. An admin adds it from the team's page, under Projects.

Know before your customers do

Free during early access. Unlimited users, teams, alerts and monitors — no credit card.