The Problem: Customer Support Fragmented Across Too Many Tools
Growing support teams often juggle Gmail, Slack, Instagram DMs, and a CRM simultaneously. Messages get lost, response times suffer, and engineers waste time hunting down bug reports across three different apps.
EasyReply was built to solve this by consolidating every channel into a single shared inbox, enhanced with AI. The entire platform runs on Laravel — and the architectural choices behind it are worth examining closely.
The Laravel Architecture That Powers EasyReply
Real-Time Updates with Laravel Reverb
When a WhatsApp message arrives or an email enters the support queue, agents need to see it immediately — no page refresh required.
EasyReply relies on Laravel Reverb to provide a scalable WebSocket server that pushes updates to the client the moment a new message arrives or a teammate begins typing. Because Reverb integrates directly with Laravel's event broadcasting system, triggering a real-time UI update requires minimal PHP code:
// Broadcast an event when a new message arrives
broadcast(new NewMessageReceived($conversation))->toOthers();
This tight integration means the team avoids maintaining a separate WebSocket service while still getting production-grade real-time performance.
SPA Feel Without a Separate API: Inertia.js + React
The team wanted a dynamic, component-driven interface without the overhead of building and versioning a standalone REST or GraphQL API.
By combining Inertia.js with React, EasyReply gets the interactivity of a single-page application while keeping Laravel in charge of routing and data fetching. Controllers pass data directly to React components as props — no serialisation layer in between:
// Laravel controller returning data to a React component via Inertia
return Inertia::render('Inbox/Show', [
'conversation' => $conversation->load('messages', 'assignee'),
]);
This approach shortened time-to-market and keeps the codebase unified under one repository.
Asynchronous Processing with Laravel Queues
Parsing incoming email threads, processing webhooks from social platforms, syncing CRM data, and generating AI-drafted replies are all resource-intensive operations. Handling them synchronously would block the UI.
EasyReply offloads every heavy task to Laravel Queues, keeping background workers busy while the interface stays fast and responsive. Whether it is an AI model generating a reply or a Hubspot sync running after a conversation closes, queue workers handle it without the user noticing.
Integrations Built for Developer Workflows
EasyReply ships with integrations that align with how engineering and support teams actually work:
| Integration | Purpose | |---|---| | Linear | Link support tickets directly to engineering issues | | Hubspot | Auto-sync customer interactions with your CRM | | Slack | Collaborate on support without leaving your workspace | | Betterstack | Sync incident reports with customer communications | | MCP | Allow AI agents to securely access your support data |
The Model Context Protocol (MCP) support is particularly notable. It lets EasyReply's AI bridge the gap between the support inbox and a team's own data sources, providing contextual awareness that generic SaaS tools cannot match.
Key Takeaways
- Laravel Reverb delivers production-ready WebSocket broadcasting with minimal configuration, ideal for real-time collaborative tools.
- Inertia.js + React eliminates the need for a separate API layer while preserving a modern SPA experience.
- Laravel Queues are essential for any platform that ingests webhooks, processes emails, or calls external AI models asynchronously.
- Combining these three Laravel primitives enables a small team to ship a scalable, multi-channel SaaS product quickly.
- MCP support signals a growing trend of AI agents needing structured, secure access to business data.
Source: Building EasyReply: How We Used Laravel to Unify Customer Support — Laravel News