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
Laravel Customer Support

Laravel Customer Support Laravel Package

a2zwebltd/laravel-customer-support

Portable Laravel helpdesk engine with ticketing, threaded replies, attachments, internal notes, agent assignment, SLA tracking, mail notifications, a Livewire + Flux UI, and optional Nova admin resources.

View on GitHub
Deep Wiki
Context7

Laravel Customer Support is a portable helpdesk engine that drops into any Laravel 11–13 application with minimal wiring. It ships complete ticket management with threaded replies, file attachments, internal notes, agent assignment, and SLA tracking, plus mail notifications, a Livewire + Flux interface, and optional Nova admin resources. Everything is configurable, so you can adapt statuses, priorities, categories, and gates to fit your existing app.

  • Six ticket statuses with threaded customer/agent conversations
  • Priorities with configurable SLA hours per level
  • Internal notes hidden from customers
  • Bundled Livewire UI and auto-registered Nova resources
  • Publishable config and migrations for full customisation
Frequently asked questions about Laravel Customer Support
What is a2zwebltd/laravel-customer-support used for?
It is a drop-in customer support and helpdesk engine for Laravel applications. It provides support tickets with threaded replies, file attachments via spatie/laravel-medialibrary, internal agent notes, agent assignment, configurable categories and priorities, SLA tracking, and mail notifications. A bundled Livewire + Flux UI and optional Nova resources let agents manage tickets without adopting an external SaaS helpdesk.
How do I install laravel-customer-support in my Laravel app?
Install it with composer require a2zwebltd/laravel-customer-support, then run php artisan migrate to create the ticket tables. Optionally publish the config using php artisan vendor:publish --tag=customer-support-config. Next, add the HasSupportTickets trait to your User model, which must also implement HasMedia from spatie/laravel-medialibrary, and define the manage-support-tickets gate in AppServiceProvider::boot().
Which PHP, Laravel, and Livewire versions does the package support?
It requires PHP 8.2 or newer and supports Laravel 11, 12, and 13. The bundled UI needs livewire/livewire ^3 or ^4 and livewire/flux ^2, because the Blade templates use Flux components. Attachments depend on spatie/laravel-medialibrary ^11, and laravel/nova ^5 is optional and auto-registers its resources when present.
Can I use the package without the bundled Livewire and Flux UI?
The domain layer covering tickets, messages, SLA, events, and mail is separable from the UI, but the shipped UI is Blade + Livewire + Flux + Tailwind and is the real coupling point. There is no documented headless API, so a React, Vue, or Inertia frontend would require writing your own controllers against the SupportTicket and SupportTicketMessage models. Adopting the domain layer only is viable but usually means forking the package or shadowing its routes to disable the bundled screens.
How do I configure the manage-support-tickets gate for support agents?
Define it in AppServiceProvider::boot() with something like Gate::define('manage-support-tickets', fn (User $user) => $user->is_admin) or your own role logic. Treat this as security-critical rather than cosmetic, because a wrong definition exposes ticket data to non-agents, so add a test that covers it. You also own the gate semantics as agent roles evolve, including any per-category or per-tenant agent scoping.
How does SLA tracking and the support:escalate-overdue command work?
Each priority (Low, Normal, High, Urgent) carries configurable SLA hours, and the package ships a support:escalate-overdue artisan command for flagging overdue tickets. You must register that command in your scheduler for escalation to actually run. The documentation does not state whether the command is idempotent or how it behaves on repeated runs, so verify that before relying on it in production.
Is laravel-customer-support actively maintained and safe for production?
The supply-chain risk is high: the repository has around two GitHub stars, zero dependents, a single vendor namespace, and a v1.0.x changelog limited to the initial release and small fixes. There is no published support policy, no third-party security review, and no evidence of a bus factor above one, and the documentation is a README without upgrade or operational guidance. The MIT license means you can fork, so treat a maintenance contingency plan as a prerequisite rather than a nice-to-have.
Can I isolate support tickets per tenant or account for multi-tenancy?
Tenant isolation is not evidenced in the README or the schema, so treat any multi-tenancy claim as unverified. If you need per-account isolation, plan to add tenant columns and global scopes yourself and cover them with tests. Also review the public ticket-creation routes for authentication, rate limiting, spam, and attachment abuse before going live.
How do I test ticket creation and replies in my application's test suite?
The package does not document test helpers or factories, so plan to write your own factories for SupportTicket and SupportTicketMessage. Cover the three risky integration points: the manage-support-tickets gate, the HasSupportTickets plus HasMedia contract on your User model, and the scheduled escalation command. If you adopt the bundled UI, add feature tests against the Livewire components as well.
What are the alternatives to this package for a Laravel helpdesk?
Alternatives include building a support domain yourself, integrating a hosted helpdesk such as Zendesk or Freshdesk over its API, or choosing a Laravel helpdesk package with broader adoption. This package fits best when your app is on Laravel 11+ and already uses Livewire and Flux, and when you accept forking under MIT if maintenance stalls. If your frontend is React, Vue, or Inertia, a domain-layer-only adoption or a hosted API integration is usually the cleaner path.
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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style