GitHub

The GitHub integration provides:

  1. Deploy correlation — overlay GitHub Deployment events on incident timelines.
  2. Heartbeats from CI — confirm a workflow ran successfully.
  3. CLI in Actions — apply config-as-code on merge.

Deploy correlation

Configure GitHub to send deployment events to Happy Uptime:

yaml
# .github/workflows/deploy.yml- name: Notify Happy Uptime of deploy if: success() run: | curl -X POST https://happyuptime.com/api/v1/deploys \ -H "Authorization: Bearer ${{ secrets.HAPPYUPTIME_API_KEY }}" \ -H "Content-Type: application/json" \ -d '{ "service": "api", "sha": "${{ github.sha }}", "url": "${{ github.event.head_commit.url }}", "actor": "${{ github.actor }}" }'

Deploys appear as markers on monitor charts and in incident timelines, so "the latency spike started 90 seconds after deploy abc123" is one click away.

Heartbeats from scheduled workflows

Use heartbeat monitors to confirm a job ran on time:

yaml
on: schedule: - cron: "0 * * * *"jobs: hourly-job: runs-on: ubuntu-latest steps: - run: ./run-job.sh - name: Ping Happy Uptime if: success() run: curl -fsS https://happyuptime.com/api/heartbeat/${{ secrets.HEARTBEAT_SLUG }}

If the workflow doesn't ping within the grace period, an incident opens automatically. See Heartbeat monitors guide for details.

Config-as-code in CI

Push your happyuptime.yml from CI:

yaml
- name: Apply Happy Uptime config env: HAPPYUPTIME_API_KEY: ${{ secrets.HAPPYUPTIME_API_KEY }} run: | npx happyuptime-cli config validate happyuptime.yml npx happyuptime-cli config push happyuptime.yml

See CI/CD recipes for the full workflow including PR previews.

Status checks

Optionally post a Happy Uptime status as a GitHub Check on each PR — green if the linked monitors are healthy, yellow if degraded:

yaml
- name: Verify monitors green env: HAPPYUPTIME_API_KEY: ${{ secrets.HAPPYUPTIME_API_KEY }} run: | happy status --json | jq -e '.monitors.down == 0'
Ask a question... ⌘I