The instant a cron job fails.
PocketAlert sends a push notification to your phone the moment a cron job fails. Chain one line onto any scheduled command with && or || — fire on failure, on success, or both, and the push arrives as the job exits, error output included.
Never miss a failed job again
A failed import should reach you right away, hours before you open the logs.
One line in crontab
Chain a push onto any cron line with && or ||. It is one curl call, with no daemon to babysit.
Alert only on failure
With ||, the alert fires only when the command exits non-zero.
Include the error
Pipe stderr or the exit code into the message, so the push arrives with the error already attached.
Any scheduler
crontab, systemd timers, the Laravel scheduler, Sidekiq, and K8s CronJobs all work, because every one of them runs commands.
Heartbeat on success
Send a heartbeat after a successful run. When it stops arriving, you know the job died quietly and can dig in.
Instant on finish
The push lands as the job exits, hours before anyone tails the logs.
Three steps to cron failure alerts
Get your URL or CLI
Copy the incoming webhook URL for your application, or install the PocketAlert CLI.
Add one line
Chain a curl call or pocketalert send onto your cron line, with || for failures or && for success.
Get alerted
Run the job. If it fails, your phone buzzes with the title and error output you set.
Wire an alert into your cron job
Install and authenticate the CLI
sudo mv pocketalert /usr/local/bin/ && chmod +x /usr/local/bin/pocketalert
pocketalert auth YOUR_API_KEY
Alert only when the job fails
Chain the alert with || so it fires only on a non-zero exit code:
0 3 * * * /usr/local/bin/mybackup.sh || pocketalert send \
-t "Cron failed: mybackup" -m "Exited non-zero at $(date)"
Include the error output
0 3 * * * /usr/local/bin/mybackup.sh 2>/tmp/cron.err || pocketalert send \
-t "Cron failed: mybackup" -m "$(tail -n 3 /tmp/cron.err)"
Heartbeat on success
Add a ping with && after a clean run. When it stops arriving, the job died quietly:
0 3 * * * /usr/local/bin/mybackup.sh && pocketalert send -t "Cron OK: mybackup"
No CLI? Call the API with curl
0 3 * * * /usr/local/bin/mybackup.sh || curl -X POST "https://api.pocketalert.app/v1/messages" \
-H "Token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Cron failed: mybackup","message":"Exited non-zero","level":"high"}'
The docs cover targeting and per-application channels.
Questions, answered
Chain a notification onto your cron command in the shell. `&&` fires after a successful run, `||` fires after a failure, and PocketAlert sends the push notification when the job exits.
Use `||` so the alert fires only when the command exits non-zero: `mybackup.sh || curl ...`. Broken jobs reach you while the rest stay quiet.
Yes. Capture the exit code or output and drop it into the message body. The PocketAlert CLI pipes stderr straight into the notification.
Any scheduler works: crontab, systemd timers, the Laravel scheduler, Rails or Sidekiq cron, Windows Task Scheduler, Kubernetes CronJobs. If it runs a command, you can chain an alert onto it.
Send a completion ping with `&&` after every successful run. Once the ping stops arriving, you know the job stopped running, and no extra tooling is involved.
Add level=critical to the failure alert and it breaks through Do Not Disturb on Android and cuts through Focus on iPhone. For heartbeat pings, use level=silent — they land in your history without a sound, so the record is there but your phone stays quiet.
Catch the cron job that quietly broke.
Add one line to your crontab and a failed job reaches your phone when it exits.