Guides/Tutorials

How to Monitor Scheduled GitHub Actions Workflows

Updated June 14, 2026 4 min read

Scheduled GitHub Actions are handy for recurring automation, but they are surprisingly unreliable as a guarantee: GitHub disables scheduled workflows after 60 days of repository inactivity, and on:schedule runs can be delayed or dropped entirely during high load. If that workflow does something important, you need independent confirmation it ran.

Add a heartbeat step

Add a final step that pings only when the job has succeeded:

name: nightly-sync
on:
  schedule:
    - cron: '0 3 * * *'
jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./scripts/sync.sh
      - name: Heartbeat
        if: success()
        run: curl -fsS https://api.cronguard.dev/v1/ping/<your-uuid>

Use if: failure() with the /fail endpoint to signal failures distinctly:

      - name: Heartbeat (failure)
        if: failure()
        run: curl -fsS https://api.cronguard.dev/v1/ping/<your-uuid>/fail
Because the monitor watches for the ping on a schedule, it alerts you even when GitHub silently disables the workflow and no run happens at all — the failure mode the Actions UI won’t warn you about.

Alerting

Create a CronGuard monitor with the same cron schedule. Miss a run and you’re alerted instantly across multiple channels. Free to start, no agent needed.

Stop losing sleep over silent failures

CronGuard alerts you within minutes when a scheduled job fails to check in. No agent to install. Free to start.

Start Monitoring Free