Skip to main content
← All use cases

Open Source and Self-Hosted Status Page for Laravel Incidents

When teams search for an open source status page or a self hosted status page, they are usually trying to solve the same problem: they want a public incident page they control.

For Laravel apps, that page usually needs to explain delayed cron jobs, queue backlogs, or webhook delivery issues without making customers guess what happened.

Why status pages matter

A status page is not just for outages. It is the easiest way to communicate when background work is delayed but the site is still technically up.

Examples:

Without a status page, the support team has to answer the same question over and over. With one, you can publish a clear update once and point everyone to it.

What makes a good Laravel status page

A useful status page should stay short and specific:

That is true whether the page is open source, self hosted, or both.

If you don’t need full self-hosting

Crontinel includes a built-in public status page (Free: 1 page, Pro: 1 per app, Team: unlimited) with a custom-domain option, so most teams don’t need to build one at all. The DIY approach below is for teams that specifically need to control where the page runs and where incident data lives - regulated environments, or engineering teams that want to own and extend the tooling directly.

How Crontinel feeds the page

Crontinel already knows the signals that matter:

Those signals are enough to drive a simple public page or to trigger an internal incident note before you update customers.

Open source vs self hosted

People often search for these phrases together, but they are not identical.

For regulated teams, the self hosted part matters because it keeps incident data close to the app. For engineering teams that want to inspect or extend the tooling, open source matters because it makes the workflow transparent.

A simple incident page shape

A practical Laravel status page can be very small:

You do not need a giant status platform to do that well. You need a reliable source of truth for incident state.

How to connect it to Crontinel

A common setup is:

  1. Crontinel detects a missed heartbeat or failed job
  2. Your alert routing sends a Slack or webhook notification
  3. Your incident workflow updates the status page
  4. Customers see the same message your team sees

That gives you a single operational source of truth instead of scattered messages across chat, email, and support tickets.

See also

Start with one HTTP receipt

Five common runtimes post the same outcome body: curl, Node, Python, Sidekiq, and GitHub Actions. Laravel apps can add the Composer package for schedule, queue, and Horizon.

curl -X POST "$CRONTINEL_API_URL/api/v1/ingest/cron" \
  -H "Authorization: Bearer $CRONTINEL_INGEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"command":"nightly-import","status":"completed","exit_code":0,"outcomes":{"metrics":{"processed_records":0}}}'