GitHub Actions guide

Monitor a scheduled GitHub Actions workflow

Scheduled workflows fail quietly when Actions is disabled, secrets expire, or a step errors. A final curl step proves the job finished successfully.

Before you start

Create a monitor with your workflow’s real frequency, then copy its URL from the dashboard. Its token is secret: do not publish it.

Module to use : workflow · curl. Place it after the last useful action on the success path.

Setup

1

Copy the monitor URL into a secret

Create a monitor matching your schedule (for example 0 6 * * * → daily). In the repo: Settings → Secrets and variables → Actions → New repository secret named VERIFAGENT_URL with the full ping URL.

https://verifagent.com/api/ping/your-ping-token
2

Add a final heartbeat step

Put curl after the real work steps so a failed build never pings. Use the secret — never commit the token.

name: Nightly job on: schedule: - cron: "0 6 * * *" workflow_dispatch: jobs: run: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Run the real work run: ./scripts/nightly.sh - name: Ping Verifagent run: curl -fsS "${{ secrets.VERIFAGENT_URL }}"
3

Optional: fail the job if ping fails

curl -fsS already fails the step on non-2xx. Keep it last so you only reach it when prior steps succeeded.

- name: Ping Verifagent run: curl -fsS "${{ secrets.VERIFAGENT_URL }}"
4

Run workflow_dispatch once

From the Actions tab, run the workflow manually. The ping step should show 200 and {"ok":true}. Confirm Up in Verifagent.

{"ok":true}
Heartbeat must be the last step of the success path. Match Verifagent’s expected period to the schedule cron; set grace above runner queue delay (often 10–30 minutes for daily jobs).

Available routes

The base URL is enough for a heartbeat. Variants enrich history if your platform has several branches.

GET https://YOUR_PING_URL
POST https://YOUR_PING_URL/success
POST https://YOUR_PING_URL/fail?msg=Error

Verify

After a green run, the monitor is Up. Disable the workflow or fail an early step: no ping should arrive and Verifagent will open an incident after period + grace.

Expected response: 200 {"ok":true}. The monitor moves from Pending to Up.