Documentation
Everything you need to get started with CronRabbit monitoring.
Quick Start
Create a Monitor
Log into your dashboard and create a new monitor. Give it a name, set the expected schedule using a cron expression (e.g., 0 2 * * * for 2 AM daily), and configure a grace period.
Copy Your Ping URL
Each monitor gets a unique ping URL. Copy it from the monitor detail page.
Add to Your Script
Add an HTTP request to the end of your script. When the request succeeds, we know your job ran.
Signal Types
CronRabbit supports different signal types to give you complete visibility into your job execution.
Success Ping
The standard ping. Send this when your job completes successfully.
/start Signal
Send at the beginning of your job to track duration.
/fail Signal
Explicitly signal failure. Triggers an immediate alert.
Exit Code
Append exit code to the URL. Non-zero triggers an alert.
Integration Examples
Copy-paste examples for common languages and use cases.
Bash / Shell
#!/bin/bash # Your backup script tar -czf /backup/data.tar.gz /data # Ping on success curl -fsS -m 10 --retry 3 https://ping.cronrabbit.com/your-id
#!/bin/bash # Signal start curl -fsS https://ping.cronrabbit.com/your-id/start # Your job ./run-etl-pipeline.sh # Signal success (duration calculated automatically) curl -fsS -m 10 --retry 3 https://ping.cronrabbit.com/your-id
#!/bin/bash ./your-job.sh curl -fsS https://ping.cronrabbit.com/your-id/$?
🐍Python
import requests
PING_URL = "https://ping.cronrabbit.com/your-id"
def main():
# Signal start for duration tracking
requests.get(f"{PING_URL}/start", timeout=10)
try:
# Your job logic here
run_backup()
# Signal success
requests.get(PING_URL, timeout=10)
except Exception as e:
# Signal failure
requests.get(f"{PING_URL}/fail", timeout=10)
raise
if __name__ == "__main__":
main()⬢Node.js
const PING_URL = "https://ping.cronrabbit.com/your-id";
async function main() {
// Signal start
await fetch(`${PING_URL}/start`);
try {
// Your job logic
await runDataSync();
// Signal success
await fetch(PING_URL);
} catch (error) {
// Signal failure
await fetch(`${PING_URL}/fail`);
throw error;
}
}
main();Crontab Integration
# Before 0 2 * * * /scripts/backup.sh # After (with monitoring) 0 2 * * * /scripts/backup.sh && curl -fsS https://ping.cronrabbit.com/your-id
Setting Up Alert Integrations
Configure where you want to receive alerts. Set up integrations at the workspace level, then enable them for individual monitors.
Slack
- Go to Workspace Settings → Integrations
- Click Add Integration → Slack
- Create an Incoming Webhook in your Slack workspace
- Paste the webhook URL and save
- Enable Slack alerts on your monitors
Discord
- Go to your Discord server's Channel Settings → Integrations → Webhooks
- Create a new webhook and copy the URL
- In CronRabbit, go to Workspace Settings → Integrations → Add Discord
- Paste the webhook URL and save
Pushover
- Create a Pushover account and install the app
- Create an Application in Pushover to get an API Token
- In CronRabbit, add a Pushover integration with your User Key and API Token
- Receive push notifications on your phone
Custom Webhook
Send alerts to any HTTP endpoint. Perfect for PagerDuty, OpsGenie, or custom automation.
{
"monitor_id": "abc123...",
"monitor_name": "Database Backup",
"status": "down",
"workspace": "Production",
"timestamp": "2026-01-29T10:00:00Z"
}Webhooks are signed with HMAC-SHA256. Verify the X-CronRabbit-Signature header to authenticate.
Cron Expression Reference
CronRabbit uses standard 5-field cron expressions.
(0-59)
(0-23)
(1-31)
(1-12)
(0-6)
Common Examples
| Expression | Description |
|---|---|
* * * * * | Every minute |
*/5 * * * * | Every 5 minutes |
0 * * * * | Every hour (at minute 0) |
0 2 * * * | Daily at 2:00 AM |
0 0 * * 0 | Weekly on Sunday at midnight |
0 0 1 * * | Monthly on the 1st at midnight |
0 9-17 * * 1-5 | Hourly during business hours (Mon-Fri, 9AM-5PM) |