Cron job

Cron is optional. You need it for email reports, alerts and webhooks, and for ingest queues or data retention. In cPanel, add a job that runs every minute.

Cron is optional. You need it for email reports, alerts and webhooks, and if you set TIDEMARK_INGEST=queue or TIDEMARK_RETENTION_DAYS above zero. (Update checks don't need it: they also run while an administrator is using the app.)

In cPanel, open Cron Jobs and add a job that runs every minute:

* * * * * php /home/you/tidemark/artisan schedule:run >> /dev/null 2>&1

What the scheduler runs#

Task When Condition
Run queued jobs: the ingest queue and the sending of alert webhooks (queue:work --stop-when-empty --max-time=50) Every minute TIDEMARK_INGEST=queue, or QUEUE_CONNECTION is anything but sync (the default is database). A webhook can take up to a minute to leave after its alert fires; with sync it is sent at once
tidemark:prune Daily at 03:15 TIDEMARK_RETENTION_DAYS is above 0
tidemark:check-updates Daily, at a minute chosen per installation TIDEMARK_UPDATE_CHECK is on (the default). Also runs without cron while an administrator uses the app
alerts:run Every five minutes Always; does nothing until a site has alert rules
reports:send Hourly Outgoing email is configured. Sends the weekly and monthly reports that are due, at 08:00 in each site's timezone
cache:prune-stale-tags Hourly Cache store is Redis

The queue job does not overlap itself, so a slow run never stacks.

Check the PHP binary#

Some hosts have several PHP versions. If the job fails, use the full path to a PHP 8.3 binary, for example /usr/local/bin/ea-php83.

Was this article helpful?
Last updated 10 Nov 2026
Powered by Tidemark Billing