[ MIGRATION ]

Migrate from Sentry to NightOwl

Keep Sentry for front-end errors if you need it. For your Laravel backend, switch to BYOD PostgreSQL from $5/month flat.

QUICK ANSWER

How do I migrate from Sentry to NightOwl?

Install the Nightwatch package + NightOwl agent alongside Sentry (both SDKs can run in parallel). Point NightOwl at your PostgreSQL. Let both run for 1-2 weeks while validating that NightOwl surfaces the same errors and performance data. Reconfigure your alert channels in NightOwl. Remove sentry/sentry-laravel once you're confident. If you need front-end JS error tracking, keep Sentry for that layer only — NightOwl is backend-only.

Updated · 2026-04-13

Before you start

  • Inventory what you currently use Sentry for — errors, performance, releases, session replay, front-end JS?
  • NightOwl covers: errors, performance, queries, queues, scheduled tasks, cache, mail, notifications, outgoing HTTP, logs (all backend-only)
  • NightOwl does not cover: front-end JavaScript source maps, session replay, cross-service distributed tracing without OTel
  • Provision a PostgreSQL instance (or reuse existing) — NightOwl creates its own prefixed tables

Migration timeline

01

Install NightOwl

composer require nightowl/agent, then php artisan nightowl:install. Both SDKs now active — no conflict.

02

Reconfigure alert channels

Recreate Slack, Discord, Email, Webhook in NightOwl's alert channels UI. Keep Sentry channels active for now.

03

Parallel run (1-2 weeks)

Compare what shows up in each. Validate NightOwl catches the same errors. Check your team can navigate the new UI.

04

Disable Sentry alert channels

Suppress the duplicate notifications so your team isn't getting paged twice per incident.

05

Remove Sentry SDK

composer remove sentry/sentry-laravel, delete config/sentry.php, remove SENTRY_LARAVEL_DSN env var. Deploy.

06

Cancel Sentry subscription

If Laravel is your only Sentry usage. Keep if you still need front-end JS tracking.

Parallel install — both SDKs together

bash
# Keep your existing Sentry config untouched. Add NightOwl alongside:
composer require nightowl/agent
php artisan nightowl:install

# Follow the prompts to configure your PostgreSQL connection and NightOwl account.

Both SDKs register independent exception handlers. No conflict — exceptions are reported to both destinations simultaneously. This is the parallel validation period.

What to validate during parallel run

  • Exception coverage — every exception Sentry sees should also land in NightOwl. Compare issue counts in both.
  • Performance data — check that slow routes, slow queries, and queued jobs appear with similar data shape.
  • Alert delivery — trigger a controlled error in staging. Both Sentry and NightOwl should page.
  • Team workflow — does NightOwl's issue-management UI fit how your team triages? (Status, priority, assignment, comments are all there.)

Removing Sentry cleanly

bash
composer remove sentry/sentry-laravel
rm config/sentry.php

# In .env — delete these:
# SENTRY_LARAVEL_DSN=...
# SENTRY_TRACES_SAMPLE_RATE=...

# Remove Sentry references from:
# - App\Exceptions\Handler (if you added Sentry integration)
# - Any custom exception reporters

php artisan config:clear
php artisan cache:clear

What you'll want Sentry for (still)

  • Front-end JS errors with source maps — NightOwl doesn't do browser-side.
  • Mobile app crash reporting — NightOwl doesn't do iOS / Android SDKs.
  • Session Replay — Sentry-specific product, no NightOwl equivalent.
  • Cross-language distributed tracing — Sentry's SDK suite propagates traces across polyglot stacks natively. For pure Laravel, NightOwl's per-request traces cover the same ground within one app.

AFTER MIGRATION

Flat from-$5/mo instead of Sentry's event-based bill

Telemetry lives in your PostgreSQL. No per-event pricing, no per-seat fees, no surprise traffic-spike bills. The exception your team chased all night doesn't cost you extra this month.

INSTALL

Install in 60 seconds

Works on Laravel 10+ / PHP 8.2+. Keep the official Nightwatch package — NightOwl reads the same instrumentation.

$ composer require nightowl/agent
$ php artisan nightowl:install

Publishes the config, creates monitoring tables in your PostgreSQL, and starts the agent. First payload lands in the dashboard within 30 seconds.

Frequently asked questions

How long does a Sentry → NightOwl migration take?

For most Laravel-only apps, one afternoon. Install the Nightwatch package + NightOwl agent, point at your PostgreSQL, run in parallel with Sentry for a few days to compare signal, then remove Sentry. If you depend on Sentry for front-end (JavaScript / mobile) error tracking, keep Sentry for that layer and run NightOwl for the backend only.

Can I migrate historical Sentry data to NightOwl?

No, and we don't recommend trying. Sentry's schema is specific to its product and doesn't map cleanly to Laravel-native watcher data. Keep Sentry read-only for historical lookups during the transition and let NightOwl accumulate new data from day one. Most teams find they rarely reference issues older than a few weeks anyway.

Do I need to remove the Sentry SDK during migration?

Not initially. You can run both SDKs in parallel — they don't conflict at runtime, and having both for 1-2 weeks lets you validate NightOwl surfaces the same errors Sentry does before you cut over. Once you're confident, remove sentry/sentry-laravel from composer and delete the config.

What about Sentry Performance / transactions?

NightOwl captures request traces and performance per-route via the Nightwatch package — covering the same ground Sentry Performance does, plus Laravel-specific watchers (queries, jobs, scheduled tasks, cache) that Sentry's generic PHP APM doesn't surface as cleanly. You lose Sentry's cross-service trace propagation unless you add OpenTelemetry.

Will my alert channels keep working?

You reconfigure them in NightOwl. Sentry's integrations don't carry over automatically. The good news: Slack, Discord, Email, and Webhook channels take 2-3 minutes each to recreate. Your Slack channel URL is still valid; just paste it into NightOwl's alert channels UI.

What's the biggest gotcha switching from Sentry?

Users accustomed to Sentry's release-tracking UX. Sentry auto-correlates errors to deploys; NightOwl doesn't have deploy tracking as a first-class feature yet (you can tag telemetry with git SHA manually). If deploy tracking is load-bearing to your workflow, keep Sentry for that dimension or tag NightOwl telemetry yourself via context.

Can I still use Sentry for front-end JavaScript errors?

Yes. NightOwl is Laravel-only (backend). If you ship a SPA or mobile app where source-map JavaScript error tracking matters, keep Sentry for that layer and use NightOwl for the Laravel backend. Many teams run this split successfully.

PRICING

Flat pricing. No event caps. No per-seat fees.

14-day free trial, no credit card. Your PostgreSQL, your data.

HOBBY

$5 /month

1 app · 14 days lookback · all Laravel events

TEAM

$15 /month

Up to 3 connected apps · unlimited environments · all Laravel events

AGENCY

$69 /month

Unlimited apps · unlimited agent instances · same flat rate at any traffic

Related