Laravel, Rails & WordPress
Capture HTTP, console, queue, and optional database / log / application-event activity as breadcrumbs on error reports, and send uncaught exceptions to the same POST /api/ingest endpoint as your other clients. Full field reference: Ingest API.
Laravel (lookout/tracing)
Install the lookout/tracing Composer package. It auto-registers LookoutTracingServiceProvider, which wires:
- HTTP — route match + request/response line on
RequestHandled - Artisan — command start/finish
- Queue — job processing, processed, failed, and exception events
- Optional — sampled SQL (
QueryExecuted),MessageLogged, allowlisted domain events, or a wildcard listener (see published config)
Install in your Laravel app (step by step)
Run everything from the Laravel project root (where artisan and composer.json live).
- Install with Composer (adds the package to
composer.jsonandvendor/lookout/tracing):cd /path/to/your-laravel-app composer require lookout/tracing - Connect to Lookout — either:
php artisan lookout:installand paste the DSNhttps://PROJECT_API_KEY@your-lookout-host.example.com, or- add
LOOKOUT_DSN/LOOKOUT_LARAVEL=trueto.envby hand, or - set
LOOKOUT_URL(shared host) +LOOKOUT_API_KEYper environment.
- Config cache: if you deploy with
config:cache, runphp artisan config:clearafter changing.env, thenconfig:cacheagain when ready. - Optional:
php artisan vendor:publish --tag=lookout-tracing-configfor full env tuning. - Distributed tracing: register middleware aliases
lookoutTracing.continueTraceand (when using performance)lookoutTracing.performanceon your HTTP stacks, or useLOOKOUT_PERFORMANCE_AUTO_MIDDLEWARE=truefor the latter only — details in the package README.
You do not register the service provider manually; Laravel discovers it.
Quick setup (what the env flags do)
LOOKOUT_LARAVEL=true(set bylookout:installby default) turns on uncaught exception reporting and trace auto-flush unless you overrideLOOKOUT_REPORT_EXCEPTIONS/LOOKOUT_TRACING_AUTO_FLUSH.- One secret per env (shared Lookout URL): commit a non-secret host once —
LOOKOUT_URL=https://your-lookout-host.example.com(orLOOKOUT_BASE_URI, orconfig/services.php→lookout.url) — and only setLOOKOUT_API_KEYper environment.
Glows (like Flare glows): call Lookout\Tracing\GlowBreadcrumb::glow($message, $level = 'info', $data = null) anywhere in the request/job to append a manual breadcrumb. Same idea as Flare, but not the Flare::glow() API—they ship on the next error report’s breadcrumbs array, not as standalone trace-span events. See the package README section Glows (Flare-style manual breadcrumbs).
Breadcrumbs reset at each route match, Artisan command, or queue job so workers and Octane do not leak context across units of work.
Package source in this repository: packages/lookout-tracing — full API: tracing, crons, profiling, logs, metrics, RUM.
Plain PHP and other PHP frameworks
The same lookout/tracing Composer package works without Laravel: there is no auto-registered provider. After composer require lookout/tracing, call Tracer::instance()->configure([...]) with your project API key and Lookout base URL (scheme + host), then use Tracer / Tracing, optional PSR-15 continue-trace middleware, Monolog handler, Guzzle middleware, and the ingest helpers described in the package README.
Symfony, Slim, Mezzio, and custom front controllers follow this path. See Install → Other PHP projects in packages/lookout-tracing/README.md.
Rails
A drop-in Ruby module lives at packages/lookout-rails/lib/lookout_framework.rb with instructions in packages/lookout-rails/README.md. It subscribes to ActiveSupport::Notifications for dispatch, Action Controller, Active Job, and optional Active Record SQL sampling.
Call LookoutFramework.report_exception(exception) from your app’s central error handler to POST JSON to Lookout with the current breadcrumb trail.
WordPress
The packages/lookout-wordpress plugin reports uncaught exceptions and fatal shutdown errors to POST /api/ingest with your project API key. Install the folder as wp-content/plugins/lookout/, then use Settings → Lookout in wp-admin (base URL, API key, optional environment). It does not wrap every PHP notice; see the package README for behavior, the Send test event button, and the same-host skip rule. Full install path: Packages & installation.