---
title: "The cheapest way to know when your app goes down"
description: "A free checker loads your app on a schedule and emails you when it can't. Here's how to set one up in ten minutes, and the setting most people miss."
url: https://fomio.ai/blog/the-cheapest-way-to-know-when-your-app-goes-down
published: 2026-08-17T18:00:00.538+00:00
updated: 2026-08-17T18:00:00.538+00:00
topic: comparisons
words: 2137
---

# The cheapest way to know when your app goes down

It's free, it takes about ten minutes, and the one setting most people skip is the one that catches the outages that matter.

**In short:**

- The free plans from the main options are genuinely enough for one app, and the vendors say so themselves.
- How often the check runs is the spec everyone compares and the least important one.
- A plain "did the page load?" check misses the most common way modern apps break.
- If your database is on a free Supabase project, the same check also stops it going to sleep.
- The only real reason to pay is an alert that can wake you up at 3am.

### What is the cheapest way to know when my app goes down?

Free. A computer somewhere else loads your app on a schedule, and when it can't, it emails you. Several services do this at no cost for a single app, and setup takes about ten minutes — most of which is you deciding which page to point it at.

That's worth saying up front, because the reason most people don't have this is not price. It's that the whole category is described in words that sound like they're for someone with a job title. They aren't.

There's a name for it — uptime monitoring, meaning something checks whether your app is reachable and keeps a record. You'll need that phrase to search. After this paragraph I'll just call it the checker.

## What am I actually buying?

Right now, the way you find out your app is broken is that someone tells you. A user emails. A friend says "hey, is this thing working?" Or you open it yourself on a Sunday and your stomach drops.

The gap between when it broke and when you found out is the only number that matters. Everything here is about shrinking that gap, and what each amount of shrinking costs.

## Is the free tier really enough?

Yes, for one app it's more than enough. UptimeRobot's free plan watches 50 things every five minutes, includes a public status page, and covers the main check types — loading a web address, looking for a specific word on the page, and heartbeats.[^1]

Their own help centre is unusually direct about who it's for: they state plainly that the free plan can be used for business, commercial and revenue-generating projects, and they name a startup keeping an eye on its app as a welcome case.[^1] That's not a loophole. That's the vendor telling you not to upgrade.

Better Stack's free tier goes the other direction — fewer things watched, faster looking. Ten monitors, ten heartbeats, a status page, and checks every three minutes.[^2] If you have one app, ten is plenty, and three minutes beats five.

cron-job.org is the odd one out. It's a free scheduler — it will hit a web address on a timetable you set, as often as once a minute — and it also does status monitor jobs and public status pages, with no paid tier lurking.[^3] Cronitor also offers free uptime, status and scheduled-job monitoring.[^4]

*The three free options, side by side*

| Option | Things watched | How often | Also included |
| --- | --- | --- | --- |
| UptimeRobot free | 50 | Every 5 minutes | Status page, word-on-page checks, heartbeats |
| Better Stack free | 10 monitors, 10 heartbeats | Every 3 minutes | Status page |
| cron-job.org | Scheduled jobs and status monitors | As often as every minute | Public status pages, no paid tier |

## Does it matter how often the check runs?

Much less than the marketing suggests. If your app has been down for five minutes you are not in materially worse shape than at three. You're in worse shape than at forty minutes, which is roughly what happens when nobody's watching and you hear it from a user at lunch.

The jump from nothing to every five minutes is enormous. The jump from five minutes to thirty seconds is a rounding error unless your app takes payments continuously or you've made a written promise to customers about availability.

So take the free tier. Faster checks are the last thing you should pay for, not the first.

## What will a basic check miss?

The most common failure there is. A basic check asks one question: did the page load? But the way apps on hosted backends usually break is that the page loads perfectly and nothing on it works.

The screen appears. The login button spins forever. The list of items is empty. Your database connection is gone, a key expired, a third-party service is refusing you — and your checker sees a beautiful, fully-loaded, completely useless page and reports green.

The fix is keyword monitoring — you tell the checker a specific word to look for on the page, and it alerts you when that word is missing. It's on UptimeRobot's free plan alongside the basic check types.[^1]

Pick a word that only exists when your app is genuinely working. Not your logo text, not the nav bar — those render even when everything behind them is dead. Pick something that had to come out of your database to appear on screen: a product name, a user count, a row of real data.

> **Why this one setting does most of the work** — It's the difference between a checker that catches maybe half your outages and one that catches nearly all of them. Free either way. Most people set up the first kind and assume they're covered.

**Paste this into your AI tool**

```text
Add a health check page to my app at /health. It should do one real read from my database — a single row from any table is fine — and return the plain text "ok" only if that read succeeds. If the database read fails, return an error status instead of "ok". No layout, no navigation, no styling.
```

## How do I know a scheduled job didn't run?

You need the job to check in with you, because scheduled work doesn't fail loudly — it just stops happening, and nobody notices for weeks. Nightly emails, weekly reports, cleanup tasks, syncs: none of them show up in a page-loading check.

The answer is heartbeat monitoring, where your job pings a unique web address every time it finishes and you're alerted if that ping doesn't arrive on schedule. Uptime.com describes it as making sure critical tasks like scheduled processes are running as expected — the job signals it's alive, and silence is the alarm.[^5]

Both UptimeRobot and Better Stack include heartbeats free; Better Stack's free tier lists ten.[^2] Setup is one line at the end of your job: after it succeeds, call this address. Your AI tool can write that if you paste it the address and say where it goes.

## Does a checker stop a free Supabase project from pausing?

It does, and this is the best free thing in this article. Supabase's documentation states that a Free plan project is considered inactive if it doesn't receive sufficient database activity over the past week, and that paid projects aren't subject to that automatic pausing. Once paused, the docs describe a one-year window to restore it from the dashboard.[^6]

People do hit this. There's an open report on Supabase's GitHub from a Free plan user whose project was paused after a week of inactivity and whose resume was taking far longer than the usual minute or two.[^7] It's a common enough worry that community threads exist asking, straightforwardly, whether the data survives a restore.[^8]

Here's the useful part. SimpleBackups, writing about exactly this in April 2026, points out that inactivity is measured by requests, that any request counts including a health check on a schedule, and that one request a day is enough to prevent a pause.[^9]

**1** — Requests a day needed to keep a free Supabase project awake, per SimpleBackups, April 2026[^9]

So the free checker from the last two sections — the one hitting a page that does a real database read every three or five minutes — is also what stops your database going to sleep. One setup, two problems.

If your project is already paused, the same source lays out the two situations plainly: if you can still see it in the dashboard marked paused, the data is there and the project is just offline, which is the better case. If it's vanished from the dashboard entirely, that's the other conversation, and it's urgent.[^10]

## When is paying actually worth it?

When the alert needs to wake you up. Free plans alert by email, and email at 3am is a note you read at 8am. If your app being down for five hours overnight genuinely costs you — bookings, orders, a customer with expectations — what you're buying is a phone that rings.

Better Stack's paid plans start at $29 a month, and their uptime tier is described as including unlimited phone and SMS alerts.[^11] Be aware of how the pricing stacks, though.

A December 2025 hands-on comparison from Hyperping notes that on-call responders run $29 per user per month on Better Stack,[^12] and a March 2026 review puts additional monitors beyond the free ten at roughly $21–25 a month per extra fifty.[^13] A competitor's comparison page lists extra status pages at around $12 a month, and far more for white-labelling and password protection.[^14]

None of that is a scandal. It's that the sticker price and the price of the thing you pictured are different numbers, and you should know which one you're looking at before you enter a card. UptimeRobot's paid tiers mainly buy faster checks, more than 50 monitors, more team logins, longer history and custom-domain status pages.[^1] Read that list honestly and ask whether any line describes you.

## How do I set this up this afternoon?

1. **Make a health check page** — One page in your app that does a genuine database read and prints a single word. "ok" is fine. The prompt above will get your AI tool to build it.
2. **Sign up for a free checker and point it at that page** — Any of the three will do. Take the free plan and don't look at the upgrade page.
3. **Turn on the look-for-a-word option** — Give it the word your health page prints, so it checks that the app works rather than just that the page arrived.
4. **Add one heartbeat for anything on a schedule** — Copy the address the checker gives you and paste a call to it at the end of that job.
5. **Turn on the status page** — It's free on all three. Next time something breaks, a link is a much better answer to an anxious customer than a paragraph.

Then leave it alone. The correct experience of this is silence for months, one email that turns out to be a false alarm, and then one email that isn't — arriving while you can still do something about it, instead of on Monday.

## Questions people also ask


### Can I really use a free plan for a paid product?

On UptimeRobot, yes. Their help centre states plainly that the free plan can be used for business, commercial and revenue-generating projects, and names a startup keeping an eye on its app as a welcome case. That's the vendor's own position, not a workaround. Other providers set their own terms, so check the plan page before you build a business process on top of it — but for one app being watched every few minutes, free is the intended path.

### What word should I tell the checker to look for?

Something that can only appear when your app is genuinely working. Skip your logo, your nav bar and any static text, because those render fine while everything behind them is broken. Pick text that had to come out of your database: a product name, a count, a row of real data. Cleanest option is a small dedicated page that does one real database read and prints "ok", then point the checker at that page and give it that word.

### Will one check every few minutes keep my free Supabase project awake?

According to SimpleBackups, writing in April 2026, inactivity is measured by requests, any request counts including a scheduled health check, and one request a day is enough to prevent a pause. A checker running every three or five minutes is far above that. Point it at a page that does a real database read rather than a static page, so the request actually touches the database.

### My project is already paused. Is my data gone?

Two situations. If you can still see the project in your dashboard marked paused, the data is there and the project is simply offline — that's the better case, and Supabase's docs describe a one-year window to restore it from the dashboard. If the project has vanished from the dashboard entirely, that's a different and more urgent conversation. Either way, act now rather than later, and set up a check afterwards so it can't recur.

### Do I need heartbeat checks if I already watch my main page?

Only if you have work running on a schedule — nightly emails, weekly reports, cleanup tasks, syncs. A page-loading check can never see those, because they don't involve a page. A heartbeat flips the logic: the job pings a unique address when it finishes, and silence is the alarm. Both UptimeRobot and Better Stack include heartbeats on their free plans, so it costs you one line of code, not money.


## Sources

[^1]: Who Should Use UptimeRobot's Free Plan? — UptimeRobot Help Center. https://help.uptimerobot.com/en/articles/11604710-who-should-use-uptimerobot-s-free-plan
[^2]: Uptime Monitoring by Better Stack — Better Stack. https://betterstack.com/uptime
[^3]: Free cronjobs — from minutely to once a year — cron-job.org. https://cron-job.org/en/
[^4]: Simple monitoring for any application — Cronitor. https://cronitor.io/
[^5]: Cron Job (Heartbeat) Monitoring — Uptime.com. https://uptime.com/heartbeat-cron-job-monitoring
[^6]: Project Pausing — Supabase Docs (2026-08-14). https://supabase.com/docs/guides/platform/free-project-pausing
[^7]: Bug Report: Extended Resumption Time for Paused Free Plan Project (issue #37453) — GitHub, supabase/supabase (2025-07-25). https://github.com/supabase/supabase/issues/37453
[^8]: Will I lose data if my Supabase free project is paused for inactivity? — Answer Overflow (Supabase Discord) (2025-10-20). https://www.answeroverflow.com/m/1429686049545912401
[^9]: Supabase Free Tier Paused and Lost Data: What Happened — SimpleBackups (2026-04-14). https://simplebackups.com/blog/supabase-free-tier-paused
[^10]: Recovering a Paused or Deleted Supabase Project — SimpleBackups (2026-06-15). https://simplebackups.com/blog/recover-paused-supabase-project
[^11]: Pricing — Better Stack. https://betterstack.com/pricing
[^12]: Better Stack vs Uptime.com vs Hyperping — Hyperping (2025-12-12). https://hyperping.com/blog/betterstack-vs-uptime-vs-hyperping
[^13]: Better Stack Review (2026) — MakerStack (2026-03-19). https://makerstack.co/reviews/better-stack-review/
[^14]: Better Stack (Better Uptime) Alternative — 2026 Comparison — OneUptime. https://oneuptime.com/compare/better-uptime
