← Integration guides
Monitor a GitHub Actions scheduled workflow
GitHub silently disables scheduled workflows on inactive repos and skips runs under load. A dead-man's-switch catches it.
A check has a ping URL. Your job calls it on every successful run. If a ping is late past the grace period, CronCanary alerts you. Copy your check's exact URL from its detail page — examples below use $URL.
Add a ping step
Store your check URL as a repo secret (CRONCANARY_URL), then ping at the end of the job:
name: nightly
on:
schedule:
- cron: "0 4 * * *"
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ./scripts/nightly.sh
# ping only if all previous steps succeeded
- run: curl -fsS "$CRONCANARY_URL"
env:
CRONCANARY_URL: ${{ secrets.CRONCANARY_URL }}
Report failures too
- name: report failure
if: failure()
run: curl -fsS "${{ secrets.CRONCANARY_URL }}/fail"
Tip: set the check's grace generously — GitHub's scheduled runs can be delayed several minutes under load.
Ready to wire this up? Create a free check — 20 checks, all alert channels, no card.