Queue
Veldriq
A queue is a waiting list of background jobs. Mail tests, PDFs, webhooks, and many imports store a row instead of making the browser wait. Something else — a worker or a cron drain — must pick that row up. If nothing does, the CMS still works and the inbox / PDF never appears. Production queue is required, not optional.
Horizon is not in this product. Default: QUEUE_CONNECTION=database.
Failed jobs UI: Platform Admin hub Queues (/admin/queues), page title Failed jobs (Retry / Delete).
Jobs that wait
Section titled “Jobs that wait”| Job | When it is dispatched |
|---|---|
PlatformTestMail |
Send test email on Mail / SMTP |
GenerateServiceReportJob / invoice / credit note / estimate PDF jobs |
Document PDFs |
DeliverWebhookJob |
Outbound tenant webhooks |
DispatchCommunicationIntentJob |
Customer communications |
| Automation evaluate/execute jobs | Automations |
DeliverFieldPushJob |
Optional Firebase Cloud Messaging |
There is no other “PDF daemon.”
Hosting: drain vs persistent worker
Section titled “Hosting: drain vs persistent worker”| Tier | What you run | What the buyer experiences |
|---|---|---|
| A | Nothing | CRUD works. Mail, PDFs, webhooks, automations, and Field Push sit in jobs forever |
| B | Cron drain every minute | Shared hosting. Jobs run within about a minute |
| C | Persistent queue:work |
Recommended VPS. Restart the worker after deploy (php artisan queue:restart) |
cPanel drain (from backend/):
php artisan queue:work --stop-when-empty --tries=3 --timeout=90Consequence of no worker: UI saves succeed; PDFs never appear; mail never leaves; PM drafts never generate.
Related: Scheduler · Troubleshooting queue.