Durable Jobs
Scheduling & Delayed Jobs
LiveRun jobs later for reminders, follow-ups, retry windows, cleanup, and recurring backend work.
Goal
Schedule backend work without keeping a process alive or relying on request timing.
Current status
Live
This area is documented as current, user-reliable behavior.
Workflow
- 1Pass scheduledAt when a job should run later.
- 2Use idempotency keys so rescheduling attempts do not duplicate work.
- 3Use recurring schedules for repeated platform tasks when your StackShift plan supports them.
Run later
Trial reminder
tsawait stackshift.queue('notifications').enqueue(
'sendTrialEndingReminder',
{ customerId: 'cus_123' },
{
scheduledAt: '2026-05-12T10:00:00.000Z',
idempotencyKey: 'trial-ending:cus_123',
}
)Recurring jobs
- Use recurring jobs for daily cleanup, billing sync, report generation, and periodic reconciliation.
- Keep the job body idempotent because recurring jobs often touch external systems.
- Use observability to inspect the latest run and previous attempts.
Expected result
Delayed work runs at the intended time and remains visible before execution.