Failed Jobs
A plugin to easily retry and prune failed jobs.
Author:
Srinath Reddy Dudi
Documentation
- Installation
- Usage
- Retrying Failed Jobs
- Filtering Jobs
- Pruning Jobs
- Customization
- Testing
- Changelog
- Contributing
- Security Vulnerabilities
- Credits
- License
This plugin provides a failed jobs resource which can be used to retry and manage laravel failed queue jobs.

#Installation
You can install the plugin via composer:
composer require binarybuilds/filament-failed-jobs
#Usage
Register the plugin in your panel service provider as
use BinaryBuilds\FilamentFailedJobs\FilamentFailedJobsPlugin;
$panel->plugin(FilamentFailedJobsPlugin::make());
[!IMPORTANT] If you are using laravel horizon, Instruct the plugin by chaining the
->usingHorizon()method.
#Retrying Failed Jobs
You can retry failed jobs each one separately using the retry action next to each job, or bulk retry by selecting multiple jobs and then using the bulk options' menu. You can also use the global retry action to retry all failed jobs or jobs from a specific queue.

#Filtering Jobs
This plugin by default comes with the following filters which you can use to filter failed jobs.
- Connection
- Queue
- Job
- Failed At

#Pruning Jobs
If you have too many stale failed jobs, You can use the global prune jobs action to prune stale failed jobs. This action will prompt you to input the hours to retain the failed jobs. Any failed jobs that are older than the given hours will be pruned.
For example, If you enter 12 hours, It will prune all failed jobs that are older than 12 hours.

#Customization
This plugin works out of the box and adds a Failed Jobs resource to your admin panel. You can customize the
display if needed.
#Remove connection column from index table
Most of the applications do not leverage more than one queue connection. So it would be clean to hide the connection
column in this case. You can do so by chaining the hideConnectionOnIndex method as below.
FilamentFailedJobsPlugin::make()->hideConnectionOnIndex()
#Remove queue column from index table
Similarly, if your application only pushes to the default queue, You can hide the queue column by chaining the hideQueueOnIndex method as below.
FilamentFailedJobsPlugin::make()->hideQueueOnIndex()
#Change filters layout
This plugin comes with a few filters to help you easily filter failed jobs. If you would like to change how the
filters are displayed, You can do so by chaining filtersLayout method which
accepts Filament\Tables\Enums\FiltersLayout parameter.
FilamentFailedJobsPlugin::make()->filtersLayout(FiltersLayout::AboveContent)
#Authorization
You can restrict access to the failed jobs resource using the authorize method. This accepts a boolean or a closure that returns a boolean.
FilamentFailedJobsPlugin::make()->authorize(fn () => auth()->user()->can('view-failed-jobs'))
#Navigation Group
You can change the navigation group using the navigationGroup method. This accepts a string, UnitEnum or Closure.
FilamentFailedJobsPlugin::make()->navigationGroup('System')
#Navigation Label
You can customize the navigation label using the navigationLabel method.
FilamentFailedJobsPlugin::make()->navigationLabel('Queue Failures')
#Navigation Icon
You can change the navigation icon using the navigationIcon method. This accepts a Heroicon string or a Heroicon enum value.
FilamentFailedJobsPlugin::make()->navigationIcon('heroicon-o-exclamation-triangle')
#Navigation Sort Order
You can change the navigation sort order using the navigationSort method.
FilamentFailedJobsPlugin::make()->navigationSort(10)
#Polling for new failed jobs
By default, the table will refresh (poll) every 60 seconds to retrieve new failed jobs. You can change the polling interval by passing an interval string to the pollingInterval method.
FilamentFailedJobsPlugin::make()
->pollingInterval('60s')
Altertavely, you can disable the polling functionality entirely by passing a false value to the withPolling method.
FilamentFailedJobsPlugin::make()
->withPolling(false)
#Combined Example
You can chain multiple configuration methods together.
FilamentFailedJobsPlugin::make()
->authorize(fn () => auth()->user()->isAdmin())
->navigationGroup('System')
->navigationLabel('Failed Jobs')
->navigationIcon('heroicon-o-queue-list')
->navigationSort(50)
->withPolling(true)
->pollingInterval('60s')
#Testing
composer test
#Changelog
Please see CHANGELOG for more information on what has changed recently.
#Contributing
Please see CONTRIBUTING for details.
#Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
#Credits
#License
The MIT License (MIT). Please see License File for more information.
The author
Hi, I’m Srinath — a software engineer and product builder passionate about creating tools that make developers’ lives easier. I’ve been working with Laravel for years, building open-source packages and performance-focused tools to help teams ship better software faster. Through my work at BinaryBuilds, I focus on crafting reliable, developer-friendly solutions that simplify complex workflows and boost productivity.
From the same author
Command Runner
Run artisan and shell commands in the background from your Filament admin panel.
Author:
Srinath Reddy Dudi
Cache Manager
Easily clear your Laravel application cache directly from the Filament admin panel.
Author:
Srinath Reddy Dudi
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle
Data Lens
Advanced Data Visualization for Laravel Filament - a premium reporting solution enabling custom column creation, sophisticated filtering, and enterprise-grade data insights within admin panels.
Padmission