Skip to main content

Get Push Notifications for GitHub Events on Your iPhone

· 3 min read

Your deploy just finished. Or failed. You'll find out whenever you next open your laptop and check the Actions tab. There's a better way.

The idea

GitHub Actions can run a curl command. Pushmark receives that request and sends a push notification to your iPhone in seconds. No server, no APNs certificates, no notification infrastructure to maintain — just a few lines of YAML and a free Pushmark account.

Deploy notifications

Get notified the moment a deployment succeeds. Add this workflow to your repository:

name: Notify deploy

on:
check_run:
types: [completed]

jobs:
notify:
if: github.event.check_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- name: Send Pushmark notification
run: |
curl -X POST "https://api.pushmark.app/YOUR_CHANNEL_HASH" \
-H "Content-Type: application/json" \
-d '{
"type": "log",
"message": {
"status": "${{ github.event.check_run.conclusion }}",
"context": "${{ github.event.check_run.name }}",
"url": "${{ github.event.check_run.html_url }}",
"commit": "${{ github.event.check_run.head_sha }}",
"triggered_by": "${{ github.event.sender.login }}"
}
}'

Replace YOUR_CHANNEL_HASH with the hash from your Pushmark channel page.

Build failure alerts

The most valuable notification is the one that wakes you up when something breaks. Use type: "error" to make it stand out:

name: Notify build failure

on:
check_run:
types: [completed]

jobs:
notify:
if: github.event.check_run.conclusion == 'failure'
runs-on: ubuntu-latest
steps:
- name: Send Pushmark notification
run: |
curl -X POST "https://api.pushmark.app/YOUR_CHANNEL_HASH" \
-H "Content-Type: application/json" \
-d '{
"type": "error",
"message": {
"status": "failed",
"check": "${{ github.event.check_run.name }}",
"url": "${{ github.event.check_run.html_url }}",
"commit": "${{ github.event.check_run.head_sha }}",
"triggered_by": "${{ github.event.sender.login }}"
}
}'

PR merge notifications

Know when a pull request lands on your main branch without watching the repository:

name: Notify PR merged

on:
pull_request:
types: [closed]
branches: [main]

jobs:
notify:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- name: Send Pushmark notification
run: |
curl -X POST "https://api.pushmark.app/YOUR_CHANNEL_HASH" \
-H "Content-Type: application/json" \
-d '{
"type": "success",
"message": {
"pr": "${{ github.event.pull_request.title }}",
"merged_by": "${{ github.event.pull_request.merged_by.login }}",
"branch": "${{ github.event.pull_request.head.ref }}",
"url": "${{ github.event.pull_request.html_url }}"
}
}'

Setup

  1. Download the Pushmark app and create a channel — give it a name like "GitHub alerts"
  2. Copy the channel hash from the channel detail page
  3. Add the workflow YAML to .github/workflows/ in your repository
  4. Replace YOUR_CHANNEL_HASH with your channel hash

The next time a deploy finishes or a build breaks, you'll feel your phone buzz before you've switched windows.

Why Pushmark

Sending a GitHub notification to your iPhone normally means: configuring email alerts (noisy), setting up Slack (another tool), or building a webhook receiver with APNs credentials (real infrastructure). This pattern skips all of that. Download the app, create a channel, and you're done. Pushmark handles the APNs side. GitHub Actions handles the trigger. You just write a curl command.

See the Getting Started guide for the full API reference and payload options.