Skip to main content

What is Laravel Pulse

Laravel Pulse delivers at-a-glance insights into your application’s performance and usage. With Pulse, you can track down bottlenecks like slow jobs and endpoints, find your most active users, and more.

Pulse vs Telescope

For in-depth debugging of individual events, check out Laravel Telescope.

Data flow


Installation

Pulse’s first-party storage implementation requires a MySQL, MariaDB, or PostgreSQL database. If you are using a different database engine, you will need a separate MySQL, MariaDB, or PostgreSQL database for your Pulse data.
1

Install the package

Install Pulse via Composer.
2

Publish configuration and migrations

Publish the Pulse service provider assets.
3

Run migrations

Create the tables needed to store Pulse data.
Once migrations have run, access the Pulse dashboard at the /pulse route.

Publishing the configuration file

You can publish the configuration file separately to customize recorders and advanced options.

Dashboard access

Authorization

By default, the Pulse dashboard is only accessible in the local environment. For production, configure the viewPulse authorization gate in your AppServiceProvider.

Customizing the dashboard

Publish the dashboard view to customize cards and layout.
The published file is at resources/views/vendor/pulse/dashboard.blade.php. The dashboard is powered by Livewire, so no JavaScript rebuild is required for customization.
Control each card’s size and position with cols and rows props.

Recorders

Recorders capture entries from your application and write them to the Pulse database. Configure them in the recorders section of config/pulse.php.

Requests and slow requests

The Requests recorder captures information about incoming requests. Configure the slow route threshold (default: 1000ms), sample rate, and ignored paths.

Slow jobs

The SlowJobs recorder captures jobs that exceed the configured threshold (default: 1000ms). You can set per-job thresholds using regular expressions.

Exceptions

The Exceptions recorder captures reportable exceptions occurring in your application. Exceptions are grouped by class and the location where they occurred.

Cache

The CacheInteractions recorder captures cache hits and misses. You can normalize similar keys into groups using regular expressions.

Queues

The Queues recorder tracks queue throughput: queued, processing, processed, released, and failed jobs.

Servers

The Servers recorder captures CPU, memory, and storage usage of your servers. You must run the pulse:check command on each server you want to monitor.
By default, Pulse uses PHP’s gethostname() as the server name. Override it with an environment variable.

Users

The UserRequests and UserJobs recorders capture which users are making requests and dispatching jobs. This data appears in the Application Usage card.

Redis ingest

For high-traffic applications, you can send entries to a Redis stream and process them asynchronously.
When using Redis ingest, run the pulse:work command to move entries from Redis into the database.

Sampling

For high-traffic applications, capturing every event can result in millions of database rows. Enable sampling to record only a fraction of events. The dashboard scales values up and marks approximations with ~.
The more entries you have for a metric, the lower you can set the sample rate while maintaining accuracy.

Environment variables

Key configuration values can be set via environment variables.

Custom cards

You can build custom Pulse cards to display data specific to your application. Cards are implemented as Livewire components.
Use Pulse’s Blade components in your card view for a consistent look and feel.
Capture custom data with the Pulse::record method.
Once your component and template are defined, include the card in your dashboard view.

Summary

Next steps

Error handling

Learn how Laravel handles and reports exceptions.

Logging

Configure and use Laravel’s logging system.
Last modified on April 14, 2026