Uptime monitoring for SaaS

A SaaS needs checks on the app, the API and the login path every 15 seconds, alerts that reach whoever is on call, and a status page customers can read, which Logdash Pro gives you for $15 a month flat.

Once customers pay, downtime has a price and a paper trail. They notice inside a minute, some of them have an uptime number in the contract, and the support inbox fills before your phone buzzes. A 5-minute check interval means up to 5 minutes of that before you even know.

Logdash Pro checks up to 50 services every 15 seconds for $15 a month, with no per-seat pricing. Every check records the status code and the response time, and hourly averages stay for 90 days, so the slow week before an outage is on the same chart as the outage. Status pages take your own domain, and every page is also public JSON for building it into your app.

What to monitor

  • The app health route, running one database query. It catches a dead pool behind a live process.
  • The public API, on its own monitor, because API customers find out from their own error logs.
  • The login page or auth callback host, since a broken login looks like a full outage to every user.
  • The marketing site, separately, because it often runs on a different host and fails for different reasons.
  • Not Stripe, not your email provider. Their outages are real, but an alert at 3am about someone else’s status page is one you cannot act on.

Route alerts into your own tooling

Telegram covers the founder phone. For everything else there is the webhook channel. On Builder or Pro, set its method to POST and Logdash sends a JSON body on every change between up and down. On the free plan it is a bare GET with no body. Put a secret in the URL so only Logdash can call it.

logdash-webhook.ts
import express from 'express';

type LogdashAlert = {
  httpMonitorId: string;
  newStatus: 'up' | 'down';
  name: string;
  url: string;
  statusCode: string;
  errorMessage?: string;
};

const app = express();
const key = process.env.LOGDASH_WEBHOOK_KEY;

app.post('/hooks/logdash', express.json(), (req, res) => {
  if (!key || req.query.key !== key) {
    res.sendStatus(401);
    return;
  }

  const alert = req.body as LogdashAlert;
  // Open an incident, pause the onboarding emails, post in the team channel.
  console.log(`${alert.name} is ${alert.newStatus} (${alert.statusCode})`);
  res.sendStatus(204);
});

app.listen(3000);
  1. Add the four monitors One service per surface from the list above. The first check runs a second after you save.
  2. Connect Telegram and the webhook Add @logdash_uptime_bot to the team chat and send it the passphrase, then add the webhook above as a second channel on every monitor.
  3. Fail a deploy on staging Ship a build that returns 503 from the health route. Within 15 seconds the webhook fires and Telegram tells you which service went down and with which status code.

Response time is the early warning

Most SaaS outages are not a clean switch from up to down. The database gets slow, then the pool fills, then requests time out. Every check keeps its response time, so the climb from 200 ms to 4 seconds is on the chart before the first failed check. Anything that does not answer within 10 seconds counts as down.

Keep the status page off your stack

Publish the status page on status.yourdomain.com with a CNAME to statuspage.logdash.io, not to the app host. A status page that shares servers or deploys with the app goes down with it. If you want status inside the app instead, every page is public JSON, with a typed client and a React or Svelte component that takes your Tailwind theme.

Logdash vs Better Stack for a small SaaS

FeatureLogdashBetter Stack
Free tier5 services at 5 minutes10 monitors at 3 minutes
Paid pricing$15 a month flatAbout $29 to $34 per responder a month
Fastest interval15 seconds30 seconds
On-call and escalationNot builtSchedules, escalation, phone and SMS
Status pageHosted, custom domain, JSON APIHosted, custom domain
App logs and metricsSame service, eight SDKsSeparate log and metrics products

When Better Stack is the better pick

  • You run an on-call rotation with two or more people and need escalation when the first one does not answer.
  • You need a phone call that wakes you up. Logdash sends Telegram messages and webhooks.
  • Enterprise customers ask for incident timelines and postmortems in the same tool as the alert.
How often should a SaaS check its uptime?
Every 15 to 60 seconds once you have paying customers. Logdash Builder checks every minute for $9 a month and Pro every 15 seconds for $15.
Does a SaaS need a public status page?
Yes, as soon as customers pay. It cuts the "is it down" tickets during an outage and gives you a public record of uptime when a customer asks.
Can I send downtime alerts into my own tools?
Yes. On Builder or Pro, the webhook channel sends the monitor name, URL, new status, status code and error to any URL when you set its method to POST. The free plan webhook is a GET with no body.
Is Logdash enough on its own for a SaaS?
For uptime, response times, alerts and the status page, yes. For an on-call rotation with phone calls and escalation, pair it with a pager tool or pick Better Stack.

Point it at your own URL and watch it for real.