On line 55 in the AfterConstraint, it's compared with diffInHours. This should be in minutes, since Hours already is checked above. $diff = (int) $schedule->timestamp_target->diffInHours( now()->floorSeconds(), absolute: true ); This causes that now() diff in hours always is 0. See line 60, delay min, but compared to diffInHours. **FIX** $diff = (int) $schedule->timestamp_target->diffInMinutes( now()->floorSeconds(), absolute: true );