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.