Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Escalated Laravel

Escalated Laravel Laravel Package

escalated-dev/escalated-laravel

A full-featured, embeddable support ticket system for Laravel with SLA tracking, escalation rules, agent workflows, and a customer portal. Self-host or sync to cloud with one config change.

View on GitHub
Deep Wiki
Context7

Add a complete open-source helpdesk to Laravel. Support tickets, SLAs, agent inboxes, automation and customer portals. Self-hosted and MIT licensed.

Frequently asked questions about Escalated Laravel
What is escalated-dev/escalated-laravel and what features does it include?
Escalated for Laravel is a full-featured, embeddable support ticket system you can drop into a Laravel app without any external helpdesk service. It ships with a complete ticket lifecycle, an SLA engine with per-priority targets and breach detection, condition-based escalation rules, an agent dashboard with filtered queues and bulk actions, and a customer portal. It also includes inbound email threading, a knowledge base, and an embeddable widget. Unlike a thin SDK, it is effectively an application delivered inside a Composer package with its own routes, migrations, config, gates, views, and Artisan commands.
How do I install escalated-laravel in an existing Laravel application?
Install it with composer require escalated-dev/escalated-laravel, then run php artisan escalated:install followed by php artisan migrate. You must define the escalated-admin and escalated-agent authorization gates in the host app, and add the package's routes under a configurable prefix that defaults to /support. On the frontend you edit app.ts to register the Escalated/ Inertia page resolver namespace and add the package paths to your Tailwind content or @source configuration. Optionally register EscalatedPlugin if you want the UI themed by your host layout.
Which Laravel and PHP versions does Escalated support?
Escalated supports Laravel 11.x through 13.x and requires PHP 8.2 or newer. The constraints are declared in the package's composer.json and reflected in the README badges. The host application must also run Inertia.js with Vue 3 and Tailwind CSS, since the shipped UI depends on that stack.
Does Escalated work in a Blade, Livewire, or API-only Laravel app?
Not really. The package's integration model assumes an Inertia.js plus Vue 3 plus Tailwind host application, including edits to app.ts for the page resolver and Tailwind source paths. If your app is Blade or Livewire based, a React SPA, or purely API-only, the out-of-the-box value largely disappears and you would be writing your own UI against its controllers. This frontend coupling is the single biggest architectural gate before adopting it.
How do I connect my existing User model to Escalated tickets?
Your User model implements the Ticketable contract using the HasTickets trait, and the installer can patch the model for you automatically. The package reflects the user key type (int, UUID, ULID, or string) at migration time so the ticket tables match your users table, and a user_key_type override is available if you need to force a type. Because the type is chosen once, changing it later requires a manual migration, so treat that decision as a one-way door.
How does the SLA engine handle business hours and breaches?
The SLA engine applies per-priority response and resolution targets, calculates elapsed time against your business hours, and automatically flags breaches when targets are exceeded. Because state transitions like snoozing depend on time passing, the package expects a scheduler entry for the escalated:wake-snoozed-tickets Artisan command, making the Laravel scheduler a hard runtime dependency. SLA state is visible in the agent queue so staff can prioritize at-risk tickets.
How do Escalated's escalation rules work?
Escalation rules are condition-based automations that run against tickets and can escalate, reprioritize, reassign, or notify when their conditions match. They are configured rather than coded, so support leads can adjust behavior without deploying changes. Rules work alongside the SLA engine, so a breach can trigger an escalation and a priority change in the same flow.
Can I self-host Escalated or sync tickets to the cloud?
Yes, the package supports three hosting modes behind a driver pattern: fully self-hosted, synced to an Escalated cloud account for multi-app visibility, and fully proxied to the cloud. You switch modes with a single config change while using the same controllers and UI. In synced mode, outbound writes degrade to queued retries rather than hard failures, which keeps the local helpdesk usable during connectivity problems.
How does the embeddable support widget work and is it secure?
A public route at GET {prefix}/widget/embed.js serves a widget bundle built from the separate @escalated-dev/escalated npm package, and you can disable it with escalated.widget.serve_script. Cross-origin embedding only works for origins listed in escalated.widget.allowed_origins, which receive CORS headers and a CSRF-check exemption while requests are forced to run as guests; wildcard subdomains such as https://*.example.com are supported. The allowlist is empty by default, so nothing is exposed until you explicitly opt in. Host-supplied widget metadata such as order number or plan is stored as a sanitised flat scalar map alongside a server-recorded embedded_on origin.
What production risks should I weigh before adopting Escalated?
The package migrations create and own many tables in your application database, so schema ownership is invasive and the user key type is effectively fixed after the first migration. You are also locked into Inertia, Vue 3, and Tailwind for the shipped UI, and you must keep a scheduler running for snoozed ticket wake-ups. The project is young, so review the changelog before upgrading; v1.9.4, for example, changed widget CORS and metadata handling. If your app does not use the Inertia and Vue stack, an external helpdesk or a thinner ticketing package is likely a better fit.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
roundly-consulting/kubernetes-api-for-laravel
roundly-consulting/plausible-for-laravel
gvp/gvp-laravel-template
metasyncsite/laravel-metasync-client
roundly-consulting/onboarding-for-laravel
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo