Scheduled Jobs
Create, inspect, and remove BullMQ scheduled jobs across queues with cron or interval-based schedules.
Global Scheduled Jobs View
Route:
/$orgSlug/c/$connectionId/scheduled-jobs
This page aggregates scheduled jobs across discovered queues for the active connection.
Create a Scheduled Job from a Queue
Queue detail now includes a first-class scheduler workspace.
Route:
/$orgSlug/c/$connectionId/queues/$queueName/scheduled-jobs/new
Use Schedule Job from a queue to open a dedicated page for creating the scheduler.
The page supports:
- stable scheduler IDs
- job name and JSON payload
- cron schedules with timezone support
- fixed interval schedules (
everyin milliseconds) - optional start date, end date, and run limit
- template job options such as attempts, priority, backoff, and retention
- an editor-style JSON payload experience with formatting and indentation shortcuts
- immediate handoff into an edit page after creation
Queue-Level Scheduled Jobs
Route tab under queue detail:
/$orgSlug/c/$connectionId/queues/$queueName?tab=scheduled
Useful for queue-specific cleanup and scheduler ownership review. Every scheduler listed here links to its own edit page:
/$orgSlug/c/$connectionId/queues/$queueName/scheduled-jobs/$schedulerId
Data Included Per Scheduled Job
- Scheduler ID
- Cron pattern or interval cadence
- Queue name
- Job name
- Next run time (if available)
- Timezone, start/end window, and limit (when configured)
- Recent failed count
- Last failed timestamp
API Endpoints
- List across queues:
GET /api/c/:connectionId/scheduled-jobs
- List by queue:
GET /api/c/:connectionId/scheduled-jobs/queue/:queueName
- Create scheduler:
POST /api/c/:connectionId/scheduled-jobs/queue/:queueName
- Load scheduler:
GET /api/c/:connectionId/scheduled-jobs/queue/:queueName/:schedulerId
- Update scheduler:
PUT /api/c/:connectionId/scheduled-jobs/queue/:queueName/:schedulerId
- Remove scheduler:
DELETE /api/c/:connectionId/scheduled-jobs/queue/:queueName/:schedulerId
Create Scheduler Request Shape
{
"schedulerId": "billing-hourly",
"name": "reconcile-billing",
"data": {
"source": "dashboard"
},
"schedule": {
"type": "cron",
"pattern": "0 * * * *",
"timezone": "America/Los_Angeles",
"immediately": true,
"limit": 24
},
"options": {
"attempts": 3,
"priority": 5,
"backoff": {
"type": "fixed",
"delay": 5000
},
"removeOnComplete": 100,
"removeOnFail": false
}
}
Rules:
schedulerIdmust be stable and unique within the queueschedule.typeis eithercronorevery- cron schedules can include
timezoneandimmediately - interval schedules use
everyMs startDate,endDate, andlimitare optional for either mode
Recommended Workflow
- Open the queue you want to schedule into.
- Use the top-bar Schedule Job action or the queue's Scheduled Jobs tab CTA.
- Enter a stable scheduler ID and worker-facing job name.
- Choose cron or interval mode, then set timezone/window/limit if needed.
- Add payload and job options, create the scheduler, then use the dedicated edit page for later changes.
Failure Analysis Pattern
When a scheduled job has recent failures:
- Jump to queue detail.
- Inspect failed jobs by matching job name.
- Review logs and stacktraces.
- Decide whether to keep scheduler, fix worker logic, or remove scheduler.
Screenshot placeholder: grouped scheduled jobs page with failure indicators.
Video placeholder: remove scheduler workflow and failure triage.