Skip to content

Migration Guide

This guide helps you migrate your existing scheduled tasks to Recuro from crontab, EasyCron, cron-job.org, and other scheduling tools.

Moving from crontab

Step 1: Inventory your crons

List all existing cron entries:

Terminal window
crontab -l

For each entry, note the cron expression, command, and purpose.

Step 2: Convert to HTTP endpoints

Crontab runs shell commands. Recuro fires HTTP requests. For each cron task, you need an HTTP endpoint that performs the equivalent action.

Before (crontab):

0 2 * * * /usr/bin/php /var/www/app/artisan sync:data

After (Recuro): Create an endpoint in your app that triggers the same logic:

POST https://api.yourapp.com/tasks/sync-data

Then create a Recuro cron:

Terminal window
curl -X POST https://app.recurohq.com/api/crons \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Data Sync",
"url": "https://api.yourapp.com/tasks/sync-data",
"method": "POST",
"cron_expression": "0 2 * * *",
"timeout_seconds": 120
}'

Step 3: Run in parallel, then cut over

  1. Create all Recuro crons in a paused state (is_active: false)
  2. Activate them one by one alongside the existing crontab entries
  3. Monitor both systems for a few cycles
  4. Once confirmed, remove the crontab entries

Moving from EasyCron or cron-job.org

These services already fire HTTP requests, so migration is straightforward:

Step 1: Export your schedule

Note for each cron:

  • URL
  • HTTP method
  • Cron expression
  • Any headers or body
  • Timeout setting

Step 2: Recreate in Recuro

For each cron, use the API or dashboard:

Terminal window
curl -X POST https://app.recurohq.com/api/crons \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Health Check",
"url": "https://api.yourapp.com/health",
"method": "GET",
"cron_expression": "*/5 * * * *",
"timeout_seconds": 30,
"alert_threshold": 3
}'

Step 3: Set up what the old tool lacked

Take advantage of features your previous tool may not have had:

  • Success assertions — Verify response content, not just status codes
  • Webhook signing — Authenticate requests to your endpoints
  • Completion callbacks — Get notified after each execution
  • Dead-letter queue — Automatically retry and capture failed queue jobs
  • Team collaboration — Invite your team with role-based access

Migration checklist

  • Inventory all existing scheduled tasks
  • Create HTTP endpoints for any command-based tasks
  • Set up a Recuro team and generate an API token
  • Create all crons in Recuro (start paused if running in parallel)
  • Configure alert thresholds on critical crons
  • Set up your notification channel (email, Slack, or Discord)
  • Generate a signing secret and implement verification on your endpoints
  • Activate crons and monitor for a few cycles
  • Disable or remove crons from the old system
  • Set up queues for any one-off job processing needs

Next steps