Scheduled tasks
Four jobs that need cron, and what silently stops working without it.
Several things happen on a schedule. They all depend on one cron entry, and it is the step most often skipped during setup.
The cron entry#
* * * * * cd /path/to/panel && php artisan schedule:run >> /dev/null 2>&1
One entry, every minute. Laravel decides internally what is actually due. In cPanel this goes in Cron Jobs with the interval set to once per minute.
What runs#
| Job | When | What it does |
|---|---|---|
| Subscription reminders | Daily, 09:00 | Emails customers whose subscription or update window is approaching its end. |
| Auto-approve referral earnings | Daily, 09:30 | Approves pending earnings older than your threshold. |
| Retry Paddle webhooks | Every 15 minutes | Reprocesses failed webhook events. |
| Prune download logs | Daily, 02:30 | Deletes download records past your retention setting. |
What breaks without cron#
- No renewal reminders, so more subscriptions lapse silently.
- Failed webhooks are never retried, so a transient outage leaves sales unfulfilled indefinitely.
- Earnings never auto-approve and pile up as pending.
- Download logs grow without limit.
None of these throw an error. The panel keeps looking healthy while quietly doing less than it should — which is exactly why it is worth verifying rather than assuming.
Verifying#
Run it once by hand and watch the output:
php artisan schedule:run
Or run a single job directly:
php artisan webhooks:retry-paddle --status=all
php artisan subscriptions:send-reminders
php artisan referrals:auto-approve-earnings
php artisan downloads:prune-logs
Queue workers#
With QUEUE_CONNECTION=database, notifications are queued rather than sent inline. Something has to work the queue:
php artisan queue:work --tries=3
On shared hosting without a process supervisor, either run this from cron on a short interval or set QUEUE_CONNECTION=sync so notifications send immediately during the request. sync makes some requests slower, but it never leaves a welcome email stuck in a table that nothing is draining.