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.
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);- Add the four monitors One service per surface from the list above. The first check runs a second after you save.
- 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.
- 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
| Feature | Logdash | Better Stack |
|---|---|---|
| Free tier | 5 services at 5 minutes | 10 monitors at 3 minutes |
| Paid pricing | $15 a month flat | About $29 to $34 per responder a month |
| Fastest interval | 15 seconds | 30 seconds |
| On-call and escalation | Not built | Schedules, escalation, phone and SMS |
| Status page | Hosted, custom domain, JSON API | Hosted, custom domain |
| App logs and metrics | Same service, eight SDKs | Separate 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.