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
- Log in to cPanel and open Advanced → Cron Jobs.
-
Under "Add New Cron Job", choose
Common Settings: Once Per Minute (* * * * *),
or set each field to
*. - Paste the full command from your install's finish screen into the Command field.
- 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:
- Green — ran within the last 3 minutes. You're set.
- Amber — missing or stale. Cron either isn't configured, is pointed at the wrong path, or your host's cron isn't running that minute yet (some budget hosts run cron every 5 minutes regardless of what you set — give it a few minutes after adding the entry).
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:
-
Run it as the website's user (for example
wwwon aaPanel), never as root. Files the scheduler creates as root cannot be written by the website afterwards. -
Use the full path of your site's PHP, for
example
/www/server/php/84/bin/phpon aaPanel. A server can have several PHP versions, and a barephpmay be a different one.
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.