Documentation

Laravel

The Laravel scheduler can report on its own — one line of setup.

The scheduler has built-in pingBefore, thenPing and pingOnFailure hooks. No separate script needed.

routes/console.php (Laravel 11+)
use Illuminate\Support\Facades\Schedule;

Schedule::command('reports:build')
    ->dailyAt('03:00')
    ->timezone('Europe/Moscow')
    ->withoutOverlapping()
    ->pingBefore(config('services.tickwatch.ping') . '/start')
    ->thenPing(config('services.tickwatch.ping'))
    ->pingOnFailure(config('services.tickwatch.ping') . '/fail');
config/services.php
'tickwatch' => [
    'ping' => env('TICKWATCH_PING'),
],

A separate concern: the scheduler itself

All these hooks go silent at once if schedule:run stops being called — the most common breakage in Laravel projects: the crontab line got lost during a server move. Add a separate one-minute-interval monitor for the scheduler itself.

crontab
* * * * * cd /var/www/app && php artisan schedule:run >> /dev/null 2>&1 && curl -fsS -m 5 https://ping.tickwatch.dev/YOUR-KEY > /dev/null
Laravel · Tickwatch