Start free trial
Start free trial Log in

14-day free trial. No credit card.

Laravel monitoring without an event quota

NightOwl runs on the same laravel/nightwatch package and keeps every request, job, query and exception in your PostgreSQL. $15 a month for a team, whether it's a quiet month or a launch.

No credit card needed.

NightOwl dashboard for Acme Shop over six hours: requests, duration, exceptions and jobs

Event quotas run out in the months you need monitoring most

Nightwatch counts every request, query and job against a monthly quota. A few scheduled jobs or a batch import can use a large share of it in a day. When the quota runs out, ingestion pauses unless you pay for extra events, so the gap lands during the launch or the incident. Sampling stretches the quota, but at a 10% request sample, nine requests in ten never reach the dashboard.

NightOwl has no quota. It keeps every event in your own PostgreSQL and costs the same whatever you send.

Monthly cost at the same event volume: Nightwatch versus NightOwl Team
Events/mo Nightwatch NightOwl
10M $28.75 $15
50M $130 $15
200M $340 $15

Nightwatch: the cheapest plan for each volume, from laravel.com/nightwatch/pricing on September 27, 2026. NightOwl Team plan. NightOwl writes your events to a PostgreSQL database you provide, which you host and pay for separately.

From the symptom to the line of code

A customer says something is broken. NightOwl already has the request, the payload it carried, the queries it ran and the exception it threw.

Exceptions become issues. Stack trace, file and line, every occurrence. Assign it, comment on it, resolve it.

A RequestException issue from ProductPageController line 21, 189 occurrences

Every request has a timeline. This checkout took 301 ms, and 275 ms of it was waiting on the payment provider.

Timeline of POST /api/checkout with its queries and a 275 ms outgoing call to api.kettlepay.test

See exactly what was sent. Payloads and response bodies for any status code, not only 500s.

A captured request payload with the zipcode field outlined

One customer at a time. Filter every chart and request down to the account that wrote to support.

The checkout route filtered to one customer, Nia Okafor, showing her three server errors

Skipped runs, not just failed ones. A scheduled task that quietly stops running shows up the minute it starts.

Runs of invoices:send turning from processed to skipped

Hear about it before your customers do

Alerts where you already look. Email through your own SMTP, Slack, Discord, or a webhook signed with HMAC-SHA256.

Thresholds on anything slow. Cross one, and NightOwl opens an issue and tells you by how much.

  • Routes
  • Jobs
  • Queries
  • Commands
  • Scheduled tasks
  • Outgoing hosts
  • Mail
  • Notifications
  • Cache

One app for every environment. Production, staging and local share a token, and staging noise never mutes a production alert.

The NightOwl alert email for worker saturation on Acme Shop

Running in about five minutes

  1. 1

    Install the agent. One Composer package. It brings the laravel/nightwatch package with it.

  2. 2

    Point it at PostgreSQL. A database you already run, or a free Supabase or Aiven tier.

  3. 3

    Start it and open the dashboard. Requests, jobs and exceptions show up within a minute.

Already on Nightwatch? The package you use keeps doing the capturing. NightOwl changes where the data goes.

Read the setup guide

No database yet? Start on a free tier: Supabase, Neon, Aiven, Neon via Vercel.

Terminal
# Install the agent (it brings laravel/nightwatch with it)
composer require nightowl/agent

# Add the token and your PostgreSQL details to .env
NIGHTOWL_TOKEN=your-agent-token
NIGHTOWL_APP_ID=your-app-id
NIGHTOWL_DB_HOST=your-pg-host
NIGHTOWL_DB_DATABASE=nightowl
NIGHTOWL_DB_USERNAME=nightowl
NIGHTOWL_DB_PASSWORD=your-password

# Create the tables, then start the agent
php artisan nightowl:install
php artisan nightowl:agent

Watch it catch real problems

A three-minute tour, then one-minute stories filmed on a live test shop. Every number on screen comes from a real run.

Video frame: the NightOwl dashboard for Acme Shop over 24 hours, with a P95 spike on the duration chart

Laravel Monitoring in 3 Minutes: NightOwl Product Tour

A three-minute tour of NightOwl, monitoring built for Laravel. It follows one afternoon on a Laravel shop: a P95 spike on the dashboard, the checkout route behind it, a slow request whose time went to the payment provider, and the issue those failures opened.

Video frame: a request timeline with 501 queries on GET /api/ordersLength 0:57NightOwl finds the problem, you fix it Video frame: a captured request payloadLength 0:56Debugging a Laravel 422 You Can't Reproduce Video frame: checkout requests slowed by an outgoing callLength 0:55Laravel API Slow but No Errors? Find the Slow Third-Party Call Video frame: the worker saturation alert emailLength 0:53Laravel App Slow but Nothing Is Broken: PHP Worker Saturation

What it records

Nightwatch captures it, NightOwl links it together by trace, so you can move from any event to the request or job that caused it.

Requests

Status codes, P95 and timing per route.

Exceptions

Grouped by fingerprint, per environment.

Queries

By shape, with the file and line.

Jobs

Attempts, retries and queue wait.

Scheduled tasks

Every run, skipped ones too.

Outgoing requests

Each outside API call, by host.

Mail and notifications

What went out, and what sent it.

Cache

Hits, misses and writes per pattern.

Users

Everything one account did.

Logs

From the request that wrote them.

Commands

Artisan commands and duration.

Agent health

Ingest rate and buffer depth.

Your coding agent can read it too

You hand the issue to your coding agent. It pulls the same data over MCP, confirms the problem and writes the fix. Available on the Team and Agency plans.

  • Claude
  • Codex
  • Cursor
  • Windsurf
  • Zed
Connect your coding agent
Claude Code calling NightOwl tools, then rewriting OrderController with eager loading

Pricing

One flat price with no event quota. Every plan starts with a 14-day free trial.

Hobby
$5 a month

One app for a side project. Issues and alerts, with a 14-day dashboard window.

Start my 14-day trial
TeamRecommended
$15 a month

Up to 3 apps and 5 people per team. Full history, the MCP server, data clearing and agent health.

Start my 14-day trial
Agency
$69 a month

Unlimited client apps and people, one overview of every app, and apps you can hand over.

Start my 14-day trial

Frequently asked questions

Anything else, write to support@usenightowl.com

Do I need Laravel Nightwatch installed?

You don't install it separately: laravel/nightwatch is a Composer dependency of the NightOwl agent, so it gets pulled in automatically when you require nightowl/agent. Nightwatch captures the telemetry, and the agent routes it to your PostgreSQL instead of the hosted Nightwatch Cloud.

Do I have to run a database?

Yes. NightOwl stores your data in a PostgreSQL database you control, which is why the price doesn't grow with your traffic. Any PostgreSQL 14 or newer works. Small apps fit on a free Supabase or Aiven tier, and the setup guides walk through each one.

What's the performance overhead in my app?

Small. Laravel puts the Nightwatch package's overhead under 3ms per request. The package sends its data after the response, and a separate agent process does the database writes. In an ingest-only benchmark, one agent accepted 13,400 payloads a second.

Where does my data live?

In your PostgreSQL database. The hosted dashboard reads from it with credentials you provide, over TLS when your database offers it. You hold the keys, the backups and the retention policy.

What happens when my database fills up?

Nothing is deleted until you choose to. Schedule nightowl:prune and it keeps the number of days you set in NIGHTOWL_RETENTION_DAYS, so the database stays the size you want.

Can I leave without losing data?

Yes. The data is standard PostgreSQL with documented schemas. Cancel your subscription and the data stays exactly where it is, yours to query, archive, or import elsewhere.

How does it handle scale?

Run several agent instances for more ingest throughput, and raise the drain workers (up to 16 per agent) to write to your database in parallel. Each agent buffers incoming data in a local SQLite file, so a traffic spike waits there while the database catches up.

Try it on your own app

Your first requests show up within a minute of starting the agent. No credit card needed.

Ask NightOwl

Answers come from the pages of this site and can be wrong. Check the linked page before you rely on one.