Laravel Scheduled Tasks
Laravel has built-in support for health check pings via the pingBefore and thenPing methods on the scheduler:
routes/console.php
use Illuminate\Support\Facades\Schedule; $pingUrl = 'https://watchcron.com/ping/your-uuid'; Schedule::command('app:process-orders') ->hourly() ->pingBefore("$pingUrl/start") ->thenPing($pingUrl) ->pingOnFailure("$pingUrl/fail");
Laravel's
pingBefore, thenPing, and pingOnFailure are the cleanest integration — no extra code needed. They work with Artisan commands, closures, and job dispatches.
Multiple tasks with separate checks
use Illuminate\Support\Facades\Schedule; // Each task gets its own WatchCron check Schedule::command('app:process-orders') ->everyFiveMinutes() ->thenPing('https://watchcron.com/ping/uuid-orders'); Schedule::command('app:send-reports') ->dailyAt('08:00') ->pingBefore('https://watchcron.com/ping/uuid-reports/start') ->thenPing('https://watchcron.com/ping/uuid-reports') ->pingOnFailure('https://watchcron.com/ping/uuid-reports/fail'); Schedule::command('app:cleanup-temp') ->daily() ->thenPing('https://watchcron.com/ping/uuid-cleanup');
Make sure your Laravel scheduler is actually running. Add
* * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1 to your server's crontab, or use php artisan schedule:work in development.