Guides · cron-job.org
Count every run of a scheduled job with cron-job.org
A hook URL can be the job itself. Point a cron-job.org job at it and every run is a notification, or just a count if you mute it, so a job that silently stopped shows up as a count that stopped moving.
Needs: the free EventBar app on your Mac, an EventBar account, and a cron-job.org account with permission to add webhooks. About five minutes. Generic JSON.
Steps
- Create the webhook URL. In the EventBar dashboard, open the Webhooks tab, pick the group this belongs to (one group per site or app is the usual shape), choose the provider Generic JSON, name it, and press Create. Copy the URL; it stays visible and can be rotated any time.
- Paste it into cron-job.org. In cron-job.org: Create cronjob, URL your hook URL, schedule as you like. Under Advanced set the request method to POST and, if you want a body,
{"job":"nightly backup"}with content type application/json. Create the EventBar hook as Generic JSON with default typejob_ranor type fieldjob. - Trigger one. Most services offer a test delivery; otherwise do the real thing once. It shows up in the dashboard's Events tab within a second and in the menu bar, as an undefined type named after the event. That first one is your proof the wiring works.
- Make it read well. Press Define on the new type and give it a title and a body template. Fields come from the payload, nested ones with dots. The table below is a starting point.
What you'll see
| Type | Title | Body template |
|---|---|---|
job_ran | Job ran | {job} |
Every type has its own switch in the menu bar, so a noisy one can be quiet on this Mac and still counted. Counts cover the last hour, 24 hours, 7 days, 30 days and all time.
Worth knowing
- The same trick works for any scheduler that can hit a URL: GitHub Actions
curlsteps, launchd, systemd timers, Heroku Scheduler. - A GET works too and answers
ready, but it is not counted; use POST. - Mute the type on your Mac and keep the count: the panel's 24-hour column is a heartbeat.
The full contract, including how each preset reads a payload and what the answers mean, is in the API docs. Something about cron-job.org's payload changed? Tell us and we'll fix the guide.