Keep background jobs and cron running
Keep background tasks processing reliably and check the cron setup on your hosting.
On this page
Overview
The job queue runs hook elegant_support_run_queue. It evaluates SLA, polls IMAP, sends scheduled replies, delivers webhooks, runs automation, and processes RAG/index jobs. queue_batch_size (5–100, default 25) is Settings → System → System (#/settings/system/system). Production should hit wp-cron.php via system cron; WP-Cron only runs when someone visits the site.
When to use this
A quiet site overnight will not poll email, will not send Saturday scheduled replies, and will freeze SLA clocks if it relies on WP-Cron alone.
Where to find the controls
#/settings/system/system (queue batch, health). System Status cards: queue depth, cron last run. WordPress: Tools → Site Health. Host crontab or systemd timers.
Who can make these changes
Site admin / Support Admin. Agents only see the symptoms (stale SLA, pending scheduled replies).
Before you begin
Disable WP-Cron in wp-config (DISABLE_WP_CRON) only after system cron is installed. Set queue_batch_size higher on busy mailboxes, carefully. Watch depth on System Status.
Follow these steps
- Open System Status.
- Note cron last run and queue depth.
- On the host, schedule wget/curl to wp-cron.php every minute.
- Create a scheduled reply one minute ahead and confirm send.
- Adjust batch size if depth grows during IMAP hours.
Settings reference
queue_batch_size, cron last run, queue depth, job types (SLA, IMAP poll, send_scheduled_reply, webhooks, automation, RAG).
Example workflow
Staging uses WP-Cron and looks fine because developers keep the tab open. Production had no traffic at 03:00; Monday morning shows a backlog of inbound mail until system cron is added.
Good practices
Need system cron? Strongly recommended in production. Pair with IMAP and SLA if you promise overnight intake.
Important considerations
DISABLE_WP_CRON without a real crontab stops every WordPress cron, not only HelSup. Do not raise batch size to 100 on a tiny PHP worker.
If something does not work
Queue backlog: cron idle, fatal in a job (check error_log), IMAP hang, or batch too small. Automation/SLA/email all stall together — think queue first. Contact support if last-run is current but depth only grows.