Skip to content

Building EasyReply: How Laravel Powers a Unified AI Customer Support Inbox

EasyReply is a multi-channel shared inbox built entirely on Laravel. Learn how the team used Laravel Reverb, Inertia.js, React, and Laravel Queues to deliver real-time, AI-assisted customer support at scale.

Published · Updated · 3 min read

Building EasyReply: How Laravel Powers a Unified AI Customer Support Inbox

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

Frequently asked questions

Why did the EasyReply team choose Laravel Reverb over a third-party WebSocket service?

Laravel Reverb integrates natively with Laravel's event broadcasting system, allowing the team to push real-time UI updates with minimal PHP code and without maintaining a separate WebSocket infrastructure.

How does Inertia.js help EasyReply avoid building a separate API?

Inertia.js acts as a bridge between Laravel controllers and React components, passing server-side data directly as props. This gives the app a single-page application feel while keeping routing and data fetching entirely within Laravel — no REST or GraphQL API required.

What role do Laravel Queues play in EasyReply's architecture?

Laravel Queues handle all resource-intensive background tasks — parsing emails, processing social media webhooks, syncing CRM data, and generating AI-drafted replies — asynchronously, so the user interface remains fast and responsive at all times.

Mohamed Said

About the author

Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

About GitHub LinkedIn WhatsApp Email Address My CV

Have a technical challenge?

Tell me what you’re building. I reply within two working days.

Discuss your project