Writing

Background jobs are hard.
We write about why.

Horizon internals, queue failure patterns, and monitoring that actually wakes you up for the right reasons.

Debugging Silent Laravel Cron Failures in Production

Debugging silent Laravel cron failures is harder than it sounds. The job never ran, the log is empty, and nobody got an alert. Here's how to find the real cause and make failures loud.

Read →

Laravel Horizon Paused: How to Detect It Before Customers Notice

horizon:pause sets a Redis key and stops all job processing. It's easy to forget to resume after a deploy. Here's how to check the paused state directly and automate the detection.

Read →

Laravel Horizon Shows Running But Jobs Aren't Processing

Horizon's status dashboard says everything is fine. Jobs are silently piling up. Here's why that happens and how to actually detect a dead supervisor.

Read →

The Laravel Background Job Monitoring Checklist (What Most Teams Miss)

A structured Laravel background job monitoring checklist covering Horizon health, queue depth, cron run history, alerting, and deployment safety. Most teams check one or two of these. Few check all five.

Read →

Laravel Cron and Queue Monitoring Tools: What Each One Actually Does

A honest breakdown of every Laravel cron and queue monitoring tool in 2025: ping monitors, APM tools, and purpose-built options. What each one monitors, what it misses, and when to use it.

Read →

Laravel Queue Depth Monitoring: Alert Before the Backlog Explodes

Queue depth spikes silently. By the time you notice the backlog, it's already a crisis. Here's how to query depth for Redis and database drivers, set thresholds per queue, and why oldest-job age is the metric you actually want.

Read →

How to Monitor Laravel Scheduled Tasks in Production

schedule:run failing is completely silent by default. Here's how to wire up event listeners, record exit codes and durations, and alert on missed or failed scheduled tasks.

Read →

Laravel Horizon Redis Keys Explained

A comprehensive reference of every Redis key Laravel Horizon stores: what each key contains, what it means operationally, and how to inspect it with redis-cli when debugging.

Read →

Why Generic Cron Monitors Miss Laravel Horizon Failures

Cronitor tells you a job ran. It can't tell you your Horizon supervisor is paused. Here's what's actually going on under the hood.

Read →