Liftify

Centralized Messaging Inbox

A real-time, centralized messaging inbox built directly into Liftify's client portal — giving every client team instant visibility into customer SMS replies and the ability to respond from the same number that sent the original message.

6
Database Tables
10
Filter Dimensions
Real-time
WebSocket Updates
0 JS
Framework Required

Platform Overview

Liftify Centralized Messaging Inbox

Real-time messaging inbox with conversation list, threaded view, and contact sidebar

Liftify Tickets System

Ticket management system with filtering, assignment, and status tracking

Liftify Homepage

Liftify's reputation management platform homepage

The Challenge

Liftify's clients send thousands of SMS messages to customers on behalf of service businesses — requesting reviews, sending surveys, and driving engagement. But when customers replied, they hit a dead end: an automated response saying “this number is not being monitored for replies.”

Those replies weren't junk. They contained legitimate service issues, support requests, complaints, and opt-out requests. Clients had zero visibility into these conversations, meaning customer concerns went unanswered, brand trust eroded, and compliance risks grew silently.

Key Problems to Solve:

  • Dead-End Replies: Customer responses to SMS campaigns received an automated “not monitored” message with no path to resolution
  • Zero Visibility: Clients had no way to see what their customers were saying back
  • Unanswered Concerns: Service complaints, support questions, and opt-out requests went completely ignored
  • Compliance Risk: Opt-out requests buried in unmonitored replies created growing regulatory exposure
  • Eroding Trust: Customers felt their voices didn't matter when replies disappeared into a void
  • Multi-Tenant Complexity: Solution needed to work across thousands of client accounts, locations, and sending numbers

Our Solution

We built a centralized, real-time messaging inbox directly into Liftify's client portal — giving every client team instant visibility into customer replies and the ability to respond from the same number that sent the original message. The inbox was modeled after tools like Intercom, but purpose-built for Liftify's multi-tenant, multi-location business model.

The entire system runs on server-rendered HTML with Turbo Frames and Turbo Streams — no JavaScript framework, no client-side state management, no API layer to maintain. Real-time updates arrive as HTML fragments over WebSockets, keeping the architecture lean and performant.

Key Features Built:

Real-Time Message Feed

Inbound SMS replies appear instantly via WebSocket broadcasts with contact name, message preview, account, location, and assignment status.

Threaded Conversations

Full message history grouped by sender and time, with a companion sidebar showing customer details, review history, and campaign activity.

Direct SMS Reply

Compose and send replies using the original sending number with merge tag support, character counting for Twilio's 1,600-char limit, and keyboard shortcuts.

Conversation Lifecycle

Mark conversations as closed, reopen them, flag as unread, or assign to team members. Inbound messages automatically reopen closed conversations.

10-Dimension Filtering

Filter by account, location, assigned user, message source, campaign name/type, time period, custom fields, conversation status, and free-text search.

Saved Filter Configurations

Persist filter setups across sessions with granular sharing controls — private, shared with specific users, or shared with specific locations.

Contact Unsubscribe Workflow

Agents can unsubscribe customers directly from the conversation with confirmation safeguards, system message logging, and visual indicators.

SMS Ingestion Pipeline

Webhook processing for Twilio's Conversations API and direct SMS with phone normalization, customer matching, and duplicate prevention.

Technical Highlights:

MetricDetail
Database tables created6 (plus join tables and indexes)
Models5, with AASM state machines for conversation and message lifecycles
Service objects7 core + 3 shared, following single-responsibility principles
Domain events5, integrated with analytics pipeline for data warehouse reporting
ViewComponents5 reusable components
View partials27 across inbox and filter management
Stimulus controllers9 for thin client-side behavior
Filter dimensions10, with saved filter persistence and 30-second cached counts

Architecture Decisions That Mattered:

  • HTML-Over-the-Wire: The entire inbox runs on server-rendered HTML with Turbo Frames and Turbo Streams. No JavaScript framework, no client-side state management, no API layer to maintain. Real-time updates arrive as HTML fragments over WebSockets.
  • Multi-Channel Foundation: While SMS is the launch channel, the data model and UI were designed for email, WhatsApp, and webchat from day one. Channel-agnostic abstractions mean adding a new channel doesn't require restructuring.
  • Event-Driven Analytics: Every conversation action publishes domain events that flow through a buffered pipeline to the data warehouse, enabling reporting on response times, assignment patterns, and engagement metrics.
  • Multi-Tenant by Design: Every query is scoped to the current account, authorization is enforced through Pundit policies with granular permissions, and saved filters respect organizational boundaries.

Results & Impact

Clients went from having zero visibility into customer replies to a fully managed communication channel. Customer concerns that previously went unanswered — service complaints, opt-out requests, support questions — now have a clear path to resolution.

Key Outcomes:

✓ Full Conversation Visibility
Every customer reply is now surfaced instantly to the right team
✓ Two-Way Communication
Agents can reply from the original sending number, maintaining trust
✓ Compliance Resolution
Opt-out requests are handled immediately with proper logging
✓ Zero JavaScript Framework
Real-time inbox powered entirely by HTML-over-the-wire
✓ Multi-Tenant Scale
Works seamlessly across thousands of accounts and locations
✓ Engagement Opportunity
Transformed a compliance liability into a customer engagement channel

Ready to Build Your Messaging Platform?

Let's create a communication solution that turns customer replies into opportunities.