← Back to Monitoring GuidesCloud Platforms

When Heroku Goes Down: A Survival Guide for Your Team

It's Monday morning. Your team's Slack lights up: "Is the app down?" You check Heroku. The dashboard looks fine. Dynos are running. Logs show requests coming in. But your users see a white page. The routing mesh is dropping connections, and Heroku's status page still shows all green.

What Happens on Your Team

The Developer

Opens the Heroku dashboard — dynos are running, logs are streaming. Everything looks normal from the inside. Opens the app in a browser — blank page. Tries another browser. Same thing. Runs `heroku logs --tail` and sees nothing unusual. Starts wondering if it's a DNS issue.

The real cost: Heroku's internal metrics and your app's actual availability are two different things. Dynos can show 'running' while the routing layer silently fails. Without external monitoring, you're relying on user reports to catch routing issues.

What they should have had: An external HTTP monitor hitting your app's URL every 2 minutes. When Heroku's routing layer drops connections, the monitor catches it immediately — even when the dashboard says everything is fine.

The Founder / Solo Developer

Finds out the app was down for 45 minutes when a customer emails: "I've been trying to sign up but your site isn't loading." Checks Heroku — everything looks normal. The outage was a dyno restart that took longer than usual, combined with a cold boot on the new dyno.

The real cost: For a solo founder, there's no ops team to monitor things. You find out about downtime from customers — the worst possible detection method. Every missed outage is a missed customer.

What they should have had: A monitor with a Telegram alert. The moment your app stops responding, you get a message on your phone. No waiting for customer emails.

The Support Lead

Gets three support tickets in 10 minutes, all saying "I can't log in." Checks internally — the team says Heroku looks fine. Responds to tickets with "We're investigating" but has no real information to share.

The real cost: Support becomes the incident detection system. By the time three people write in, dozens more have already bounced. And the support team has no way to distinguish between "our app is down" and "something else is wrong."

What they should have had: A status page showing the current state of the app. When the monitor detects downtime, the status page updates automatically. Support can point users to one URL instead of writing individual responses.

Why Monitor Heroku?

Heroku dynos restart every 24 hours, and free/eco dynos sleep after 30 minutes of inactivity. Even on paid plans, deployments cause brief restarts and routing layer issues can silently drop requests. If your app runs on Heroku, you need to know when those restarts cause real downtime.

What to Monitor

your-app.herokuapp.comYour application's root URL or health endpoint
api.heroku.comHeroku Platform API for deployments and scaling
your-app.herokuapp.com/api/healthCustom health check endpoint in your app

What You Should Actually Do

  1. 1Monitor your app's public URL externally — not through Heroku's own dashboard or logs, which can show green during routing failures
  2. 2Add a /health endpoint to your app that checks database connectivity and returns a 200 — monitoring the root URL alone won't catch partial failures
  3. 3Set up instant alerts via Telegram or webhook so you know about downtime before your customers email you
  4. 4Create a status page — one link you can share with users when things go wrong instead of answering tickets individually
  5. 5Track response times to catch slow dyno boots — if your app takes 10 seconds to respond after a restart, your users are waiting

Heroku's Official Status Page

Heroku publishes real-time status at status.heroku.com. Monitoristic doesn't replace this — it complements it. The official page tells you when Heroku reports an issue. Your own monitor tells you when your connection is affected, often before the status page updates. You also get push alerts instead of checking a webpage manually.

Heroku abstracts away infrastructure, which is its strength. But abstraction cuts both ways — when something goes wrong in the routing layer, dyno scheduling, or cold boot process, you can't see it from the inside. External monitoring is the only way to see what your users actually experience.

Related Reading

Skip the panic. Know in 60 seconds.

Start Monitoring Heroku →

Plans from $5/month · 14-day money-back guarantee

Frequently Asked Questions

Does Heroku's daily dyno restart cause downtime? +
Heroku restarts dynos every 24 hours. On well-configured apps with preboot enabled, this is seamless. Without preboot, there's a brief window where requests can fail. An external monitor catches these gaps.
Can I monitor Heroku apps on eco dynos? +
Yes — and you should. Eco dynos sleep after 30 minutes of inactivity. A monitor keeps your app awake and alerts you if wake-up times become unacceptable. Set your check interval to under 30 minutes to prevent sleeping.
How do I detect Heroku routing layer issues? +
Heroku's routing mesh can drop requests while dynos show as healthy. The only reliable way to detect this is external HTTP monitoring — checking your app's URL from outside Heroku's network.
How is this different from status.heroku.com? +
Heroku's status page reports platform-wide incidents. Your external monitor checks YOUR app specifically. Heroku can be globally healthy while your specific app has issues due to dyno scheduling, routing, or configuration.

Monitor Other Services