Get Push Notifications for GitHub Events on Your iPhone
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
- Download the Pushmark app and create a channel — give it a name like "GitHub alerts"
- Copy the channel hash from the channel detail page
- Add the workflow YAML to
.github/workflows/in your repository - Replace
YOUR_CHANNEL_HASHwith 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.