Jobs Overview
One screen for every cron job and scheduled task you monitor — what's healthy right now, and what has run over the past month.
What is the Jobs overview?
The Jobs overview (the Jobs item in the sidebar, at /dashboard/jobs) is a single dashboard across all of your cron-job and scheduled-task monitors. It answers two questions at once:
- "What's wrong right now?" — a live status list showing every job as OK, Late, Down, Running, or Paused.
- "What happened?" — a month calendar of runs and a day-by-day timeline of exactly when each job ran and for how long.
It's a read-only overview — you don't create or configure anything here. It fills itself in automatically from the Job monitors you already have. Think of it as the operations control room for your background work: "Are last night's backups, my hourly sync, and the nightly report all on schedule — and if one is late, which one?"
Jobs overview vs. the individual job's detail page
These are two different screens, and knowing which is which saves a lot of clicking:
Jobs overview (/dashboard/jobs) | A single job's detail page (/dashboard/monitors/{id}) | |
|---|---|---|
| Scope | All of your job monitors at once | One job monitor, in depth |
| Depth | Shallow — status, run calendar, run timeline | Deep — ping history, cron preview, drift, SLO, custom metrics, integration snippets |
| Best for | "Which of my jobs needs attention?" | "Why did this job fail, and how do I set it up?" |
Every job name on the overview is a link — click it to jump straight to that job's detail page. Use the overview to spot the problem, then drill in to fix it.
When to use it
- A daily health glance. Open it each morning to confirm every scheduled job is on track. Sort by status and anything broken floats to the top.
- After an incident. Something downstream looks stale — was the upstream job late or missing last night? The calendar and timeline show it at a glance.
- Capacity and drift review. The duration-trend arrows flag jobs that are getting slower over time, before they start timing out.
- Auditing coverage. One list of every job, active and paused, so nothing quietly falls off your radar.
When not to use it: to debug a single failing job or to change its schedule — open that job's detail page instead. And this page only shows Job (cron/heartbeat) monitors; website, API, port, and other monitor types live on the Monitors page.
How it works
Your background jobs report to Enori using heartbeats: each job sends a small HTTP ping to a unique URL when it runs. Enori marks a job Down if an expected ping doesn't arrive in time, or if the job explicitly reports a failure. (For the full heartbeat setup, see Getting jobs to appear here below.)
The overview reads across every job you own and presents it three ways. A Calendar / Timeline toggle in the top-right switches between the two history views; the status list and stat cards are always shown above them.
1. The status list — what's happening now
One row per job, showing its live status right now, its schedule, its success rate this month, a duration trend, and when it's next due. This is the operations layer — it reflects the current state of each monitor, not history.
Each job carries one of these status pills:
| Pill | What it means |
|---|---|
| OK (green) | The last heartbeat arrived on time. The job is healthy and not overdue. |
| Late (amber) | The job is still considered up, but its next expected heartbeat is already past due. It's running behind but hasn't been declared Down yet — it's inside its grace period. A transient "keep an eye on it" state. |
| Down (red) | The job has gone silent past its grace period, or it explicitly reported a failure. An incident is open and alerts (if enabled) have fired. |
| Running (blue) | A start ping arrived and the job is mid-run — it hasn't reported completion yet. |
| Paused (grey) | The monitor is paused. Enori isn't expecting heartbeats and won't alert. |
Late vs. Missed vs. Failed — three different things. Late is a live status: a run is overdue right now but still within grace. Missed is a historical run that never happened at all — a scheduled heartbeat that never arrived (it appears as a red "Missed" run in the calendar and timeline, and counts toward "failed / missed"). Failed is a run that did happen but reported a bad outcome (a
/failping or a non-zero exit code). A job that is Late now becomes a Missed run later if the heartbeat never shows up.
2. The calendar view — a month of runs
A month grid (weeks start Monday) with one colored dot per job that had activity that day:
- 🟢 Green — all of that job's runs succeeded ("All OK").
- 🔴 Red — that job had a failed or missed run that day ("Failed / missed").
- 🟡 Amber — a mix of successes and failures/misses ("Mixed").
Several dots on one day means several jobs ran. Click any day to open a panel below the calendar listing every run on that date — start and end time, duration, exit code, and outcome — with a link to each job. Use the ‹ › arrows to move between months.
3. The timeline view — a day as a Gantt chart
Switch to Timeline for a single day laid out across a 24-hour axis. Each job gets a row, and every run is a bar positioned at the hour it started, sized by how long it took. Overlapping runs stack into separate lanes so nothing hides behind anything else. Hover or focus a bar to see its exact start–end time, duration, outcome, exit code, and any message. Use the ‹ › arrows to move between days.
If a single job ran a very high number of times in one day, the timeline and day panel show the most recent runs with a "showing X of Y" note rather than rendering thousands of bars.
Reading the stat cards
Four cards sit above the status list and summarize the current month across all your jobs:
| Card | What it shows |
|---|---|
| Jobs | Total job monitors you own (with a "N paused" note if any are paused). |
| Runs (this month) | Total runs recorded across all jobs this month. |
| Success rate | Percentage of runs that succeeded (green at 99%+, red below 90%), with a "N failed / missed" note. |
| Next due | The job with the soonest upcoming heartbeat, and how soon ("in 12m"). |
These numbers are computed by Enori's servers, so the total on the cards always matches the sum of the individual rows.
Filtering, sorting, and searching
The status list has controls above it so you can cut a long job list down fast:
- Search — type part of a job name to filter the list.
- Status chips — All · Down · Late · Paused · OK. (The OK chip includes both healthy and currently-running jobs.)
- Tag filter — appears if any of your jobs are tagged; filter to one tag.
- Sort — Status (worst first, the default), Name, Next due, or Failures (most failed/missed first).
Your current view — month, calendar-vs-timeline, selected day, search, filters, and sort — is stored in the page URL, so you can bookmark or share a specific view (for example, "all Down jobs this month").
Exporting
The Export button (top-right) downloads a CSV of the current month's run data across all your jobs — handy for spreadsheets, reporting, or archiving. The file is named jobs-. To export a different month, navigate to it first, then export.
Getting jobs to appear here
This page populates automatically — there's nothing to switch on. A job shows up as soon as you have a Job monitor (also called a cron-job or heartbeat monitor). If you have none yet, the page shows a Create Job Monitor button that takes you to the monitor creation wizard.
A Job monitor works by listening for heartbeats rather than checking a URL:
- Create the monitor on the Monitors page (choose the Cron Job type). Enori issues it a unique ping URL.
- Have your cron job, scheduled task, or worker send an HTTP request to that URL each time it runs — typically a "start" ping when it begins and a success or failure ping when it finishes.
- Enori raises the job Down if a heartbeat doesn't arrive by the expected time (plus a grace period) or if the job reports a failure.
Both active and paused jobs appear on the overview, so your count here matches your Monitors list.
Screenshot: the Jobs overview with the stat cards, a few status-list rows in different states (OK / Late / Down / Paused), and the calendar below.
For the details of ping URLs, cron schedules, grace periods, and language-specific integration snippets, open any Job monitor's detail page — each one has an integration tab with copy-paste examples.
Alerts
The overview is where you see problems; alerts are how you get told about them. Alerting is configured per Job monitor (on its detail page), not on this page. A job can alert you when it fails, when it goes overdue, and when it recovers — routed through whatever channels you've set up on the monitor (email, Slack, Discord, Teams, webhook, or push). When a job goes Down, Enori opens an incident you can acknowledge and resolve.
A red Down pill on the overview means an alert has already fired (if that job's alerts are enabled). If you're seeing Down jobs here but not getting notified, check that job's alert settings and channels.
FAQ
Does this page update in real time?
It refreshes when you open or navigate the page — not second-by-second. If you're watching a job you expect to recover, reload the page (or switch months and back) to pull the latest state.
Why is a job showing "Late" instead of "Down"?
Late means the heartbeat is overdue but the job is still inside its grace period, so Enori hasn't declared it Down yet. If the ping still doesn't arrive, it flips to Down once the grace period passes. Late is your early warning.
What's the difference between a "failed" run and a "missed" run?
A failed run happened but reported a problem (a failure ping or a non-zero exit code). A missed run never happened — the scheduled heartbeat never arrived. Both count against your success rate and both show red, but they're distinct: failed = "ran badly", missed = "didn't run".
The calendar shows a grey day / no dot — what does that mean?
No runs were recorded for that job on that day. That's normal for a job that only runs on certain days. If you expected runs and see nothing, the job may not have pinged — check its status in the list and open its detail page.
Why is everything shown in UTC?
Every time on this page — calendar days, timeline hours, and the run times in the day panel — is in UTC, so a run always lands under the same calendar day and hour regardless of where you're viewing from. See A note on time zones below.
I don't see a job I know exists.
This page only lists Job (cron/heartbeat) monitors. Website, API, port, ping, DNS, and other monitor types don't appear here — find those on the Monitors page. Paused jobs do appear here.
Why don't I see older months?
Run history is retained according to your plan (30, 60, or 90 days). Months beyond your retention window won't have run data even if the job existed then.
Can I create or edit a job from this page?
No — the overview is read-only. Use the Create Job Monitor button (shown when you have no jobs) to start the creation wizard, or click a job's name to open its detail page, where you can edit its schedule, grace period, and alerts.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| A job is Late and won't clear | The heartbeat is overdue but within grace | Wait — if the ping arrives it returns to OK; if not, it becomes Down. Check that the job is actually running on its schedule. |
| A job is Down but you know it ran | The job ran but never pinged (or pinged the wrong URL) | Confirm the job hits its ping URL on every run; open the job's detail page to see the last received ping. |
| A job flips between OK and Down repeatedly | Flapping — inconsistent run timing or intermittent failures | Review the timeline for that day to see the pattern, and consider a longer grace period or a failure tolerance on the monitor. |
| The status list looks stale | The page loaded before the latest run | Reload the page — this view isn't live-updating. |
| Export fails | A transient network or download error | Retry the Export button; an inline "Export failed — please try again" message will appear if it errors. |
| A run shows under an unexpected day or hour | You're reading it in local time out of habit | Remember the whole page is UTC — convert to your local zone mentally, or line it up against another UTC source. |
A note on time zones
Everything on the Jobs overview is displayed in UTC — the calendar's day boundaries, the timeline's hour axis, and the start/end times in the day-detail panel. This keeps a run anchored to a single, unambiguous calendar day and time no matter where you or your servers are. If your jobs run on a local-time schedule, keep the UTC offset in mind when reading the calendar (for example, a job that runs at 01:00 in a UTC+2 zone shows at 23:00 the previous day here).
Draft — last updated 2026-07-24. Feedback or corrections: support@enori.io