Cron Setup

On shared hosting, Threadline has no persistent background process — a single cron entry that runs every minute takes its place. This single entry does two jobs: sends/receives queued messages, and processes uploaded documents.

This step is not optional. Without it, uploaded documents will sit at "Processing" forever and customers won't receive AI replies — messages will be received and stored, but never answered.

The cron entry

The install wizard's final screen shows this command, already filled in with your install's actual path:

* * * * * cd /home/youraccount/public_html && php artisan schedule:run >> /dev/null 2>&1

It must be schedule:run. A cron that runs artisan queue:work only handles the queue. The scheduler never starts, so campaigns, renewals and reminders do not run and Cron & Health keeps warning that the scheduler has never run. Threadline starts the queue worker by itself from schedule:run.

Use your host's command-line PHP (a path ending in /php, such as /opt/alt/php83/usr/bin/php on CloudLinux hosts), not lsphp or php-fpm, which cannot run artisan.

Adding it on cPanel

  1. Log in to cPanel and open Advanced → Cron Jobs.
  2. Under "Add New Cron Job", choose Common Settings: Once Per Minute (* * * * *), or set each field to *.
  3. Paste the full command from your install's finish screen into the Command field.
  4. Click Add New Cron Job.

Other control panels (Plesk, DirectAdmin) have an equivalent "Cron Jobs" or "Scheduled Tasks" screen — the command is the same either way.

Confirming it's working

Go to System → Cron & Health once you're logged in. It shows when the scheduler last ran:

If it stays amber for more than 10–15 minutes, double-check the path in the command matches where you actually uploaded Threadline, and that the php in the command resolves to PHP 8.3+ on your host (some hosts need a full path like /usr/local/bin/php83 instead of plain php — check your host's cron documentation for the correct PHP binary path).

Amber while the cron entry is correct usually means PHP's proc_open function is switched off in the disable_functions list. The cron job then runs and reports success, but no scheduled task actually starts. The requirements list further down System → Cron & Health shows whether proc_open is enabled.

VPS with a control panel, or set up by hand

The cron entry is needed here too. Two details matter on a server:

The exact screens are in Install: VPS (aaPanel) and Install: VPS (Control Panel).

Docker and Dokploy

Not needed — the scheduler runs as a persistent process inside the container instead of via cron. System → Cron & Health still shows when it last ran, if you want to confirm it.