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.
Metadata Payload
Attach JSON or text as the HTTP POST body. It will appear on your dashboard. Limit: 10KB.
Supported HTTP Methods
All CronRabbit endpoints support GET, HEAD, and POST methods. Our ingest server is highly optimized to parse requests and respond with an ultra-light 204 No Content status footprint footprint.
GETStandard Ping
The default and simplest method to send a quick ping using tools like curl or wget.
HEADMinimal Payload
The most efficient way to ping. Instructs the system to completely omit any body payload and just establish the HTTP connection to execute the ping command. Perfect for minimizing bandwidth overhead in constrained environments.
POSTMetadata Attachment
Use POST when you want to send along a payload. Attach JSON configuration options, task results, or plain text stack traces inside the request body. They render beautifully right onto your monitoring dashboard. Note: Payloads are limited to 10KB per request.
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 5 --retry-all-errors https://ping.cronrabbit.com/your-id
#!/bin/bash # Signal start curl -fsS -m 5 --retry 3 --retry-all-errors https://ping.cronrabbit.com/your-id/start # Your job ./run-etl-pipeline.sh # Signal success (duration calculated automatically) curl -fsS -m 10 --retry 5 --retry-all-errors https://ping.cronrabbit.com/your-id
#!/bin/bash ./your-job.sh curl -fsS -m 10 --retry 5 --retry-all-errors 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.post(f"{PING_URL}/start", json={"status": "Starting backup"}, timeout=10)
try:
# Your job logic here
run_backup()
# Signal success with metadata
requests.post(PING_URL, json={"files_backed_up": 142}, timeout=10)
except Exception as e:
# Signal failure with error details
requests.post(f"{PING_URL}/fail", json={"error": str(e)}, 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`, { method: "POST", body: "Starting sync..." });
try {
// Your job logic
const result = await runDataSync();
// Signal success with JSON metadata
await fetch(PING_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ records_synced: result.count })
});
} catch (error) {
// Signal failed
await fetch(`${PING_URL}/fail`, { method: "POST", body: error.message });
throw error;
}
}
main();Crontab Integration
# Before 0 2 * * * /scripts/backup.sh # After (with monitoring) 0 2 * * * /scripts/backup.sh && curl -fsS -m 10 --retry 5 --retry-all-errors https://ping.cronrabbit.com/your-id
Best Practices for Resilient Pings
Networks are inherently flaky. A momentary drop in connection or a brief DNS resolution failure could cause a ping to fail, triggering a false-positive "DOWN" alert in your dashboard. To make your pings robust, we strongly recommend compiling a few basic flags into your curl requests.
Avoid Zombie Jobs with Timeout
By default, curl has no timeout limit. If any server hangs, your script will wait forever! Applying a strict maximum time frame ensures your job exits cleanly no matter what.
Overcome Network Blips with Retries
A simple drop in connection triggers a DOWN alert. By forcing an automatic retry protocol when the connection inevitably drops, you reduce false-positive emails to absolute zero.
The Ultimate Reliable Command
Combine both flags into your scripts for rock-solid stability. We advise using this setup for all your production jobs.
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 Environment 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 Environment 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",
"environment": "Production",
"timestamp": "2026-01-29T10:00:00Z"
}Webhooks are signed with HMAC-SHA256. Verify the X-CronRabbit-Signature header to authenticate.
Public Status Pages
Keep your users informed with beautiful, customizable public status pages. Share real-time uptime health for your monitors and environments.
Creating a Status Page
1. Navigate to Workspaces → Status Pages in your dashboard.
2. Click Create Status Page.
3. Give your page a name and a custom slug (e.g., cronrabbit.com/s/your-company).
Customization Options
- Branding: Upload your company logo and customize page titles.
- Visibility: Select exactly which monitors or whole environments to display.
- Uptime History: Automatically show 90-day uptime history and incident logs.
Public Transparency
Sharing your status page builds trust with your users. You can even use your own custom subdomain on Pro and Enterprise plans.
Environment Icons & Visualization
CronRabbit automatically assigns distinct icons and colors to your environments based on their names. This helps you quickly distinguish between Production, Staging, and Infrastructure at a glance.
| Keyword | Icon | Color | Recommended For |
|---|---|---|---|
| prod | Emerald | Live production environments. | |
| staging | Amber | Pre-release / Staging clusters. | |
| test | Violet | QA, testing, and CI environments. | |
| infra | Blue | Kubernetes, Docker, or Cloud infra. | |
| server | Slate | Bare metal or virtual servers. | |
| rabbit | Orange | CronRabbit internal or SaaS tools. | |
| db, data | Cyan | Databases and storage services. | |
| default | Indigo | Generic environments. |
Pro Tip: Heartbeat Visuals
Monitors in your sidebars also use vibrant "heartbeat" icons that pulse with status colors. UP monitors show a sharp Emerald beat, while LATE or DOWN monitors transition to Amber and Red.
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) |
