Operations and reliability
This guide is for platform engineers and SREs: what must run continuously, what runs on a schedule, and what to verify after deploy.
Queue workers
Scan ingestion uses a dedicated queue name (ingestion) and outbound webhook deliveries run on analytics. Run workers for both queues in production. Horizon supervisors in this app use Redis queues; keep QUEUE_CONNECTION=redis for Horizon-based deployments.
Laravel Horizon
When Horizon is installed, use it to supervise workers, inspect throughput, and retry failed jobs. Restrict Horizon dashboard access in non-local environments with an explicit email allowlist and ensure horizon:snapshot runs on schedule for queue metrics.
Scheduled tasks
The application registers scheduled commands for analytics rollups, alert evaluation, weekly summaries, and privacy purges. Ensure a single scheduler runner invokes php artisan schedule:run every minute (cron or equivalent).
Mail and notifications
Workspace alerts and invitations depend on a working mail transport. Misconfigured mail does not block redirects, but operators will not receive threshold emails.
Rate limits (public tracking)
Public redirect and pixel endpoints apply per-IP rate limits. Defaults are configurable for high-traffic campaigns. Coordinate with your edge or WAF if you terminate TLS in front of the app.
Environment checklist
| Concern | What to verify |
|---|---|
| Database | Migrations applied; backups and restore tested. |
| Redis / cache | Available if used for queues, Horizon, or cache in your stack. |
| Stripe | Keys and webhook secret set; Customer Portal return URLs valid. |
| OAuth (optional) | Google OAuth client and redirect URIs match the deployment host. |
Release gate checklist
- Quality gate passes locally and in CI:
composer test - Formatting gate passes:
composer lint - Queue health verified: ingestion and analytics queues have active workers, and Horizon supervisors are online.
- Tracking smoke test: create one QR, perform a scan, confirm analytics row appears, and confirm destination receives expected UTM query values.
- Billing verification: Stripe webhooks succeed and Customer Portal opens from workspace billing.