Monitor your scheduled GitHub Actions workflows
GitHub's scheduled workflows use cron syntax, but they can be delayed during periods of high load, skipped after repository inactivity, or silently fail when a script exits 0 with errors. Cronping adds a reliability layer on top of GitHub's scheduler.
name: Nightly Sync
on:
schedule:
- cron: "0 2 * * *"
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run sync
run: ./scripts/nightly-sync.sh
- name: Ping Cronping (success)
if: success()
run: curl -fsS https://ping.cronping.com/YOUR_TOKEN
- name: Ping Cronping (failure)
if: failure()
run: curl -fsS https://ping.cronping.com/YOUR_TOKEN/failOne line added to your script. Cronping handles the rest.
The cost of silent failures
GitHub delays scheduled runs
GitHub can delay scheduled workflows by 15–30 minutes — or more — during high platform load. Your job that should fire at 02:00 UTC fires at 02:45 UTC. Or not at all.
Workflows auto-disabled on inactivity
GitHub automatically disables scheduled workflows in repositories with no commit activity for 60 days. No notification is sent. Your automation silently stops.
Silent script failures exit 0
A step script encounters an error but exits 0. The workflow shows green. The actual job didn't complete. GitHub has no idea — and neither do you.
No centralized workflow visibility
With 20+ repositories, you have 20+ places to check workflow run history. One missed nightly run in one repo can go unnoticed for days.
Set up in under 2 minutes
- 1
Create a heartbeat
Set up a heartbeat in Cronping matching your workflow's cron schedule. Give it a grace period to account for GitHub's scheduler variance (15–30 min recommended).
- 2
Add two steps to your workflow
Add a success step with `if: success()` and a failure step with `if: failure()`. Both call the Cronping ping URL with different paths. No extra action needed.
- 3
Monitor all workflows in one place
All your scheduled workflows appear in a single Cronping dashboard with 90-day history — regardless of how many repos or organizations you have.
Everything you need
No SDK, no dashboard agent, no infrastructure to manage.
Works across all repos
Monitor scheduled workflows from any number of repositories. One Cronping organization, all your GitHub Actions heartbeats in one view.
Success and failure detection
Use `if: success()` and `if: failure()` conditional steps to signal both outcomes. Know whether a workflow didn't run vs. ran and failed.
Delay detection
Set a grace period to tolerate GitHub's scheduler variance. Only alert when the workflow is genuinely late — not just slightly delayed.
90-day run history
Full timeline of every workflow run. Compare execution history against GitHub's UI to correlate platform delays with your business impact.
Instant team alerts
When a scheduled workflow is missed or fails, alert the responsible team via Slack, PagerDuty, email, or Teams.
Zero setup overhead
Two lines in your workflow YAML. No GitHub App to install, no Actions to configure, no permissions to grant beyond what curl needs.
Frequently asked questions
GitHub can skip scheduled runs during periods of high platform load, or automatically disable them if the repository has had no push activity for 60 days. Cronping detects both cases — the heartbeat simply misses its window.
We recommend 30–60 minutes for scheduled workflows. GitHub acknowledges delays can occur on shared runners. If your workflow is time-sensitive, consider using a grace period of 15 minutes and routing alerts to PagerDuty.
Yes, as long as your GitHub Enterprise runners have outbound internet access to ping.cronping.com. The workflow YAML is identical.
Create a heartbeat for each workflow. Cronping's dashboard lets you organize heartbeats by label or group, so you can view all workflows by team, environment, or criticality.
Indirectly yes. When GitHub disables a scheduled workflow, the runs stop firing. Cronping will alert you after the first missed window — typically within hours of the inactivity-based disable.
Stop discovering failures when it's too late.
Free to start. No credit card required. Add your first heartbeat in under 5 minutes.