Requizon vs Laravel Pulse
Pulse shows you which outgoing requests were slow. Requizon shows those too, along with the ones that failed fast.
Checked against Laravel Pulse's docs and source on
Short answer
Pulse is free, already installed in a lot of applications, and its Slow Outgoing Requests card is a good answer to "which API is slow". It only sees calls over its threshold, a second by default, and it records how many and how slow, never the status. An API that fails in 80 ms is invisible to it. If failures and error rates are what you need to see, that is the gap Requizon fills, and the two run side by side without conflict.
- Laravel Pulse
- Laravel's free, self-hosted performance dashboard. Its Slow Outgoing Requests card lists HTTP client calls that took longer than a threshold. Free, MIT
- Requizon
- A Laravel package that records every outbound HTTP call into your own database and charts it by API, host and path. One-time purchase, runs on your servers
Laravel Pulse is Laravel's free, self-hosted performance dashboard. One of its cards is Slow Outgoing Requests, which lists the HTTP client calls that took longer than a threshold. If you have Pulse installed, you already have a view of your outbound traffic, and it is fair to ask what Requizon would add. The short version is failures: Pulse measures how slow a call was, and never records whether it worked.
What the Slow Outgoing Requests recorder keeps#
Pulse's SlowOutgoingRequests recorder registers global middleware on Laravel's HTTP client. When a call
finishes, successfully or not, it compares the duration with a threshold: 1,000 ms by default, adjustable per URL
pattern. Calls under the threshold are discarded. For the rest it records a count and the slowest duration, keyed by
the HTTP method and the URL, after applying any grouping patterns you have configured.
That is the whole record. The card shows each method and URL with how many times it was slow and its slowest time, over the last hour, six hours, 24 hours or seven days. Pulse trims data older than seven days by default.
At a glance#
| For outgoing requests | Pulse | Requizon |
|---|---|---|
| Price | Free, MIT | A one-time purchase per app |
| What else it shows | Slow requests, jobs and queries, exceptions, queues, cache, servers, usage | Nothing else |
| Which calls are recorded | Those over the threshold | All of them |
| Status code | Not recorded | Recorded and charted |
| Failure types | None | Connection, HTTP and application errors |
| Response time | Slowest per URL | Average per API, host and path, over time |
| Grouping | Method and URL, rewritten by your regular expressions | API, host and path, with IDs replaced automatically |
| Individual calls | Not kept | 14 days, with the body of each failure |
| History | 7 days | A year of hourly statistics |
| Raw Guzzle clients | Through a community recorder | Bundled middleware |
| Database | MySQL, MariaDB or PostgreSQL | MySQL 8.0.20+ or a compatible MariaDB |
| Laravel versions | 10 to 13 | 12 and 13 |
The calls Pulse cannot show you#
A threshold on duration is a good filter for slowness and the wrong filter for failure, because plenty of failing calls are fast. An expired API key can get its 401 in 60 ms. A vendor's broken deploy returns 500s as fast as it returns anything. A misconfigured DNS name fails before a connection is even opened. None of those reach the threshold, so none of them appear on the card, and an API that is failing every call can look perfectly healthy in Pulse.
The calls that do reach the card are recorded without a status, so a slow success and a slow timeout land in the same row, and telling them apart means going to find the exception.
Requizon records every transfer with its outcome. The overview charts responses per API stacked by status code or failure type, so the hour a vendor started returning 503s shows up as a change of colour in the chart, whatever the latency did.
Where Pulse is ahead#
-
It costs nothing, it is maintained by the Laravel team, and there is a good chance it is
already in your
composer.json. - One screen for the whole app. Slow queries, slow jobs, exceptions and server load next to slow outgoing requests is a better morning check than any single-purpose dashboard.
- It runs on PostgreSQL, and on Laravel 10 and 11. Requizon needs MySQL and Laravel 12 or later.
- It scales down its own cost. Sampling and a Redis ingest are built in for high-traffic applications. Requizon's answer to volume is its rollup and pruning, and it writes one row per transfer before that.
- Slowness is sometimes the only question. If your integrations fail loudly in your error tracker already and you just want to know which one drags, the Slow Outgoing Requests card answers that.
Grouping URLs#
Pulse groups by the full URL unless you give it regular expressions, so /orders/1 and
/orders/2 are separate rows until you write a pattern such as '#/\d+#' => '/*'. It is
flexible, and the patterns are yours to maintain as APIs change.
Requizon normalises paths without configuration: numeric,
UUID, ULID and hex segments, and any segment over 40 characters, become :id. Hosts can be mapped to API
names, so several hostnames for one vendor share a row. When the heuristic is wrong for an API you can set allowed
patterns or replace the normaliser.
Keeping Pulse and adding Requizon#
Both register global middleware on Laravel's HTTP client factory and neither changes the request, so they run together without any configuration. Keep Pulse as the overview of the application, and look at Requizon when the question is whether a particular API is failing and since when.
Questions people ask about the two
Does Laravel Pulse track failed outgoing requests?
No. The SlowOutgoingRequests recorder records a call only when its duration is over the configured threshold, 1,000 ms by default, and it stores the count and the slowest duration for each method and URL. It does not record the status code, so a slow 500 and a slow 200 look the same, and a failure faster than the threshold is not recorded at all.
How does Pulse group outgoing requests?
By method and full URL by default. The recorder's groups option takes regular expressions that rewrite the URL before it is stored, so you can replace IDs with a wildcard or collapse a whole domain into one entry. Requizon replaces numeric, UUID, ULID and hex path segments with :id without configuration, and groups hosts into named APIs.
Can I use Requizon and Pulse at the same time?
Yes. Both register global middleware on Laravel's HTTP client factory and neither alters the request or the response. Pulse keeps giving you slow queries, slow jobs, exceptions and server usage on one screen, and Requizon adds the failure detail for outgoing calls.
How long does Pulse keep its data?
Seven days by default (PULSE_STORAGE_KEEP), which matches its longest dashboard period. Requizon keeps individual calls for 14 days and hourly aggregates for 365, both configurable.
Does Pulse record Guzzle requests?
Only those made through Laravel's HTTP client, which is where its recorder installs its middleware. A community package adds a recorder for raw Guzzle clients. Requizon ships a Guzzle middleware you push onto an SDK's own handler stack.