Overview
Cron Jobs let you schedule automated HTTP requests to any URL on a recurring schedule. Use them for health checks, data syncing, cleanup tasks, or triggering your own API endpoints — no external cron service needed.
Sendi’s email features like scheduled emails and campaigns are processed automatically by an internal scheduler. You don’t need to create cron jobs for those — they just work. This feature is for scheduling HTTP requests to your own endpoints.
How It Works
- Create a cron job in the dashboard with a name, URL, HTTP method, and cron schedule
- Sendi runs it — every minute, the scheduler checks for due jobs and executes them
- View results — each run is logged with status, HTTP response code, duration, and timestamp
- Pause/resume — disable a job without deleting it; re-enable when ready
Cron Schedule Syntax
Cron expressions use 5 fields:
┌───────── minute (0 - 59)
│ ┌───────── hour (0 - 23)
│ │ ┌───────── day of month (1 - 31)
│ │ │ ┌───────── month (1 - 12)
│ │ │ │ ┌───────── day of week (0 - 7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * *
Common Schedules
| Expression | Description |
|---|
* * * * * | Every minute |
*/5 * * * * | Every 5 minutes |
*/15 * * * * | Every 15 minutes |
0 * * * * | Every hour |
0 */6 * * * | Every 6 hours |
0 0 * * * | Daily at midnight |
0 9 * * 1-5 | Weekdays at 9am |
0 0 * * 1 | Every Monday at midnight |
HTTP Methods
Supported methods: GET, POST, PUT, PATCH, DELETE.
For POST, PUT, and PATCH requests, you can include a request body (e.g. JSON payload).
Add custom headers as JSON to authenticate with your endpoints:
{
"Authorization": "Bearer your_api_key",
"Content-Type": "application/json"
}
Run History
Every execution is logged with:
- Status —
success or failed
- HTTP status code — the response code from your endpoint
- Duration — how long the request took in milliseconds
- Timestamp — when the run was executed
The last 50 runs are kept per job. Older runs are automatically cleaned up.
Timeouts
Each job has a 30-second timeout. If your endpoint doesn’t respond within 30 seconds, the run is marked as failed.
Plan Limits
Use Cases
- Health checks — ping your API every minute to monitor uptime
- Keep services alive — prevent free-tier services (Render, Railway) from sleeping
- Data sync — pull data from external APIs on a schedule
- Cleanup tasks — delete expired sessions, old records, temp files
- Scheduled reports — trigger daily/weekly report generation
- Webhook triggers — POST to Slack, Discord, or any service on a schedule