Laravel Watchtower: Monitor Schedules, Queues &amp; Errors | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://www.msaied.com/public) - [Home](https://www.msaied.com/public)
- [Projects](https://www.msaied.com/public/projects)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [About](https://www.msaied.com/public#about)

           [  Contact](https://www.msaied.com/public#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://www.msaied.com/public)
- [ProjectsCase studies](https://www.msaied.com/public/projects)
- [ArticlesEngineering notes](https://www.msaied.com/public/articles)
- [CertificatesCredentials](https://www.msaied.com/public/certificates)
- [AboutHow I work](https://www.msaied.com/public#about)
- [ContactGet in touch](https://www.msaied.com/public#contact)

  [Start a conversation](https://www.msaied.com/public#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://www.msaied.com/public)
2. /
3. [Articles](https://www.msaied.com/public/articles)
4. /
5. [Laravel](https://www.msaied.com/public/articles?category=laravel)
6. /
7. Monitor and Control Schedules, Queues, and Errors in Laravel with Watchtower

   [Laravel](https://www.msaied.com/public/articles?category=laravel) [Composer Pacakge](https://www.msaied.com/public/articles?category=composer-pacakge) 

 Monitor and Control Schedules, Queues, and Errors in Laravel with Watchtower
=============================================================================

 Watchtower is a Laravel package that consolidates scheduled tasks, queues, jobs, and exceptions into a single production-ready dashboard — with actionable controls, flexible queue driver support, and optional alerting.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://www.msaied.com/public#person) Published 23 Jun 2026 · Updated 23 Jun 2026 · 3 min read

ShareCopy linkCopied

 ![Monitor and Control Schedules, Queues, and Errors in Laravel with Watchtower](https://cdn.msaied.com/275/ea3277c4bc2bbec3a89c5c5cc8856a04.png) 

  On this page +1. [What Is Watchtower?](#what-is-watchtower)
2. [Three Dashboard Tabs](#three-dashboard-tabs)
3. [Schedule](#schedule)
4. [Queues &amp; Jobs](#queues-amp-jobs)
5. [Errors](#errors)
6. [Production Safety by Default](#production-safety-by-default)
7. [Authorization](#authorization)
8. [Optional Alerts](#optional-alerts)
9. [Key Takeaways](#key-takeaways)

 What Is Watchtower?
-------------------

Watchtower is an MIT-licensed Laravel package that brings scheduled tasks, queues, jobs, and exceptions together on a single dashboard designed to run safely in production. Rather than just surfacing data, it lets you act on it: trigger a scheduled task on demand, bulk-retry failed jobs, and mark exceptions as resolved — all from one place.

It requires PHP 8.2+ and Laravel 11 or 12, and works with any queue driver (database, Redis, or SQS) without forcing a Redis dependency.

Three Dashboard Tabs
--------------------

### Schedule

Lists every scheduled task with its cron expression rendered in plain English, alongside run history, durations, and missed-run detection. A **Run now** button lets you dispatch any task immediately without touching the CLI.

### Queues &amp; Jobs

Displays live queue metrics next to the failed-jobs table. You can retry a single job or bulk-retry by exception type or time window — a significant time-saver when a downstream service blip takes out a whole batch.

### Errors

Groups exceptions by type and count with full stack traces, request context, and job context. Each error group has resolve and reopen controls so your team can track which issues have been addressed.

Production Safety by Default
----------------------------

Recording every request and job in-band would add latency to the very app being monitored. Watchtower avoids this by deferring writes to Laravel's `terminating()` callback. High-traffic applications can reduce overhead further with a sampling rate that still captures every failure and every schedule run regardless of the sample setting.

Row sizes are bounded by field truncation, and a daily `watchtower:prune` command enforces per-type retention windows (30 days for schedule runs and exceptions, 7 days for queue records by default).

Most behaviour is controlled through environment variables:

```env
WATCHTOWER_ENABLED=true
WATCHTOWER_DB_CONNECTION=monitoring
WATCHTOWER_SAMPLING_RATE=0.25
WATCHTOWER_AFTER_RESPONSE=true
WATCHTOWER_RETAIN_EXCEPTIONS=30

```

Setting `WATCHTOWER_ENABLED=false` acts as an instant kill switch, and ignore lists for jobs, commands, and exceptions keep noisy items off the dashboard.

Authorization
-------------

The dashboard is restricted to the local environment by default. To open it in other environments, define the `viewWatchtower` gate:

```php
use Illuminate\Support\Facades\Gate;

Gate::define('viewWatchtower', function ($user) {
    return $user !== null && $user->isAdmin();
});

```

Alternatively, use the fluent callback on the `Watchtower` facade:

```php
use Watchtower\Watchtower;

Watchtower::auth(fn ($request) => $request->user()?->isAdmin());

```

Unauthorized requests receive a `403` response.

Optional Alerts
---------------

Watchtower can send notifications when a scheduled task fails, a run is missed, or failed jobs exceed a threshold (25 within 60 minutes by default). Alerts are disabled until you set `WATCHTOWER_ALERTS_ENABLED=true`, and they support Slack, a generic webhook, or email.

The checks run via the `watchtower:monitor` command, which you add to your scheduler:

```php
$schedule->command('watchtower:monitor')->everyFiveMinutes();

```

Key Takeaways
-------------

- **Unified dashboard** for schedules, queues, jobs, and exceptions — no separate tools needed.
- **Actionable controls**: run tasks on demand, bulk-retry failed jobs, resolve/reopen errors.
- **Driver-agnostic**: works with database, Redis, or SQS queues.
- **Production-safe**: deferred writes, configurable sampling, field truncation, and automatic pruning.
- **Gate-based access control** consistent with Horizon and Telescope conventions.
- **Optional alerting** via Slack, webhook, or email with a simple scheduler command.

Source: [Laravel News — Monitor and Control Schedules, Queues, and Errors in Laravel with Watchtower](https://laravel-news.com/monitor-and-control-schedules-queues-and-errors-in-laravel-with-watchtower)

- [Laravel](https://www.msaied.com/public/articles?search=Laravel)
- [Monitoring](https://www.msaied.com/public/articles?search=Monitoring)
- [Queues](https://www.msaied.com/public/articles?search=Queues)
- [Scheduler](https://www.msaied.com/public/articles?search=Scheduler)
- [Packages](https://www.msaied.com/public/articles?search=Packages)
- [PHP](https://www.msaied.com/public/articles?search=PHP)

 Frequently asked questions 
---------------------------

  Does Watchtower require Redis to work?No. Watchtower works with any Laravel queue driver — database, Redis, or SQS — and has no hard Redis dependency.

   How does Watchtower avoid adding overhead to production requests?Watchtower defers its writes to Laravel's terminating() callback so they happen after the response is sent. You can also configure a sampling rate so only a fraction of requests are recorded, while every failure and schedule run is always captured.

   How do you restrict access to the Watchtower dashboard in production?Define the viewWatchtower gate using Gate::define() or use the Watchtower::auth() fluent callback. Without either, the dashboard is only accessible in the local environment. Unauthorized requests receive a 403 response.

   ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)About the author
----------------

[Mohamed Said](https://www.msaied.com/public#person)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

[About](https://www.msaied.com/public#about) [GitHub ↗](https://github.com/EG-Mohamed) [LinkedIn ↗](https://www.linkedin.com/in/msaiedm/) [WhatsApp ↗](https://wa.me/201094619204) [Email Address ↗](mailto:hello@msaied.com) [My CV ↗](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)  

   [Previous articleLaravel Concurrency Facade and Process Pools for Parallel Work](https://www.msaied.com/public/articles/laravel-concurrency-facade-and-process-pools-for-parallel-work-1) [Next articleLaravel Reverb at Scale: Broadcasting Architecture, Queue Pressure, and Channel Authorization](https://www.msaied.com/public/articles/laravel-reverb-at-scale-broadcasting-architecture-queue-pressure-and-channel-authorization)  

   On this page
-------------

1. [What Is Watchtower?](#what-is-watchtower)
2. [Three Dashboard Tabs](#three-dashboard-tabs)
3. [Schedule](#schedule)
4. [Queues &amp; Jobs](#queues-amp-jobs)
5. [Errors](#errors)
6. [Production Safety by Default](#production-safety-by-default)
7. [Authorization](#authorization)
8. [Optional Alerts](#optional-alerts)
9. [Key Takeaways](#key-takeaways)

 ###  Have a technical challenge?

 Tell me what you’re building. I reply within two working days.

[Start a conversation](https://www.msaied.com/public#contact) 

   Related articles
-----------------

 [ ![](https://cdn.msaied.com/740/cce86edc21eddcbdd2f2454fadaf9c70.png)  · 3 min read### The Pipeline Pattern in Laravel: Custom Pipelines Beyond Middleware

5 Oct 2026 ](https://www.msaied.com/public/articles/the-pipeline-pattern-in-laravel-custom-pipelines-beyond-middleware-1) [ ![](https://cdn.msaied.com/739/2d6897fdcdcf090613f96f72a64b8a78.png)  · 4 min read### MySQL Full-Text Search in Laravel: Indexes, Relevance Scoring, and Boolean Mode

4 Oct 2026 ](https://www.msaied.com/public/articles/mysql-full-text-search-in-laravel-indexes-relevance-scoring-and-boolean-mode) [ ![](https://cdn.msaied.com/738/073696a3fefe18bec825beec5ac658f5.png)  · 4 min read### Laravel Queue Rate-Limited Middleware: Throttling Jobs Without Losing Work

4 Oct 2026 ](https://www.msaied.com/public/articles/laravel-queue-rate-limited-middleware-throttling-jobs-without-losing-work) 

  Have a technical challenge?
----------------------------

Tell me what you’re building. I reply within two working days.

 [Discuss your project ↗](https://www.msaied.com/public#contact) 

  © 2026 Mohamed Said · Built with Laravel, meant to last.Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

 - [Home](https://www.msaied.com/public)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [GitHub](https://github.com/EG-Mohamed)
- [LinkedIn](https://www.linkedin.com/in/msaiedm/)
- [WhatsApp](https://wa.me/201094619204)
- [Email Address](mailto:hello@msaied.com)
- [My CV](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
- [Sitemap](https://www.msaied.com/public/sitemap.xml)
