CI & automation

GitHub Actions, cron, and anything that emits webhooks.

GitHub Actions

Create a project API key in the dashboard and store it as a repository (or org) secret — e.g. STDPUSH_API_KEY. Auth is that key as a Bearer token; no OAuth or CLI login in CI.

Official action

Add a step under an existing job’s steps: — not as the entire workflow file. Source: stdpush/notify.

Minimal full workflow (.github/workflows/notify.yml) — use this if you’re starting from scratch or testing the action:

name: Notify

on:
  workflow_dispatch: # Actions tab → Run workflow

jobs:
  notify:
    runs-on: ubuntu-latest
    steps:
      - name: Send test notification
        uses: stdpush/notify@v1
        with:
          api-key: ${{ secrets.STDPUSH_API_KEY }}
          title: "stdpush action smoke test"
          message: "${{ github.repository }} @ ${{ github.sha }}"
          priority: normal

Step only — paste inside a job that already has other steps:

- name: Alert on broken build
  if: failure()
  uses: stdpush/notify@v1
  with:
    api-key: ${{ secrets.STDPUSH_API_KEY }}
    title: "Build failed on ${{ github.ref_name }}"
    message: "${{ github.repository }} — ${{ github.workflow }}"
    priority: high
- name: Notify deploy
  uses: stdpush/notify@v1
  with:
    api-key: ${{ secrets.STDPUSH_API_KEY }}
    title: "Deploy finished"
    message: "${{ github.sha }}"
    priority: normal
    click-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

Inputs also include topic and idempotency-key.

curl (no action)

- name: Alert on broken build
  if: failure()
  run: |
    curl -sS https://api.stdpush.com/v1/notify \
      -H "Authorization: Bearer ${{ secrets.STDPUSH_API_KEY }}" \
      -H "Content-Type: application/json" \
      -d '{"title": "Build failed on ${{ github.ref_name }}", "priority": "high"}'

Cron

0 3 * * * /opt/backup.sh || stdpush -p high "Nightly backup failed"

(Cron jobs don't source your shell profile, so use the installed stdpush binary or a raw curl — not a .bashrc helper function.)

Docker healthchecks and scripts

docker events --filter event=die --format '{{.Actor.Attributes.name}}' |
while read name; do
  stdpush -p high "Container died: $name"
done

Anything with a webhook

Point services that emit webhooks (Uptime Kuma, Home Assistant, n8n, Grafana…) at POST /v1/notify with your key in the Authorization header and a JSON body with at least a title. If it speaks HTTP, it works with stdpush.

On this page