Use Cases
Common patterns for web apps that need background processing.
Async Processing
Offload slow tasks from your request-response cycle. Return immediately to users while work happens in the background.
Email Sequences
Schedule follow-up emails without managing queues or workers.
// Schedule welcome email 24 hours after signup await fetch('https://cronly.eu/api/jobs', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY' }, body: JSON.stringify({ name: 'welcome-email', url: 'https://myapp.com/api/send-welcome', run_at: new Date(Date.now() + 86400000).toISOString() }) });
Report Generation
Generate PDFs or exports without timing out. Email when ready.
// Return immediately, process in background await cronly.createJob({ name: 'generate-report', url: 'https://myapp.com/api/reports/generate', run_at: new Date().toISOString(), body: JSON.stringify({ reportId, userId }) }); return Response.json({ status: 'processing' });
Webhook Relay
Acknowledge webhooks fast, process reliably later.
// Stripe webhook - return 200 immediately export async function POST(req) { const event = await req.json(); await cronly.createJob({ name: `stripe-${event.id}`, url: 'https://myapp.com/api/process-stripe', run_at: new Date().toISOString() }); return Response.json({ received: true }); }
Scheduled Tasks
Replace server cron jobs with managed, observable scheduling.
Subscription Renewals
Process recurring billing daily at 6 AM UTC.
{
"name": "process-renewals",
"url": "https://myapp.com/api/billing/renewals",
"cron": "0 6 * * *"
}
Database Cleanup
Clean up old sessions every night at 2 AM.
{
"name": "cleanup-sessions",
"url": "https://myapp.com/api/maintenance/cleanup",
"cron": "0 2 * * *"
}
Health Checks
Monitor external APIs every 15 minutes.
{
"name": "healthcheck-stripe",
"url": "https://myapp.com/api/health/stripe",
"cron": "*/15 * * * *"
}
Why Cronly?
Just HTTP endpoints. Works with any stack, any platform.
Recurring schedules and delayed jobs in one simple API.
Automatic exponential backoff. No retry logic to build.
Your data stays in Europe. GDPR-friendly by design.
Alternatives comparison
| Alternative | Limitation |
|---|---|
| setTimeout/setInterval | Doesn't survive restarts, no visibility |
| Database polling | You're building job infrastructure |
| SQS/RabbitMQ | Overkill - workers, DLQs, monitoring |
| Vercel/CloudFlare cron | No one-time jobs, no retries, platform lock-in |