Send and receive messages in the customer portal
Summary
Section titled “Summary”The customer portal includes a messaging system where customers can exchange text messages with the garage. Conversations are unified across channels - portal messages, WhatsApp, SMS, and voice call transcripts all appear in a single timeline. Customers can start new conversations and reply to existing ones directly from the portal. Messages update in real time.
The portal also gets AI auto-responses — when a customer sends a message, the AI assistant replies straight away with helpful answers, the same way it does on WhatsApp and SMS. The customer’s message also lands in the staff unified inbox so a person can step in if needed.
Customers can attach photos and PDFs to portal messages — see Sending photos and files in portal messages.
Prerequisites
Section titled “Prerequisites”- The customer is signed in to the portal.
Viewing the conversation list
Section titled “Viewing the conversation list”- From the portal home page, click View Messages or open Messages from the profile menu.
- The messages page heading reads Messages with the subtitle “Your conversations with the garage team”.
- Each conversation card shows:
- Vehicle registration plate, make, and model (if linked to a work order).
- “General enquiry” label with a channel badge (if not linked to a work order).
- Last message preview prefixed with “Garage:” or “You:” and a channel icon (portal, WhatsApp, SMS, or voice).
- Relative timestamp (e.g. “5m ago”, “2h ago”, “3d ago”, or a date like “15 Mar”).
- Unread count badge if there are unread messages from the garage.
- Conversations are sorted by most recent message. The list updates in real time as new messages arrive.
Starting a new conversation
Section titled “Starting a new conversation”- If the customer has no existing conversations, the messages page shows a compose view with the heading Need help with your vehicle? and the text “Send us a message and we’ll get back to you.”
- The customer types a message in the text area (placeholder: “How can we help?”) with a 5,000 character limit shown as a counter.
- Click Send to start the conversation. The portal redirects to the new conversation thread.
Reading a conversation thread
Section titled “Reading a conversation thread”- Click a conversation card to open the thread.
- The thread page shows:
- Header with vehicle details (registration plate, make, model, job reference prefixed with “WO-”) or “General enquiry” for conversations not linked to a work order.
- Privacy notice in the top-right: “Messages are stored and visible to garage staff.”
- Response time notice below the header showing expected response times.
- Messages appear in a scrollable timeline, sorted oldest to newest. The view auto-scrolls to the latest message unless the customer has scrolled up.
Understanding the timeline
Section titled “Understanding the timeline”- The timeline interleaves messages from all channels and voice call records:
- Customer messages (sent from portal) appear on the right in a coloured bubble.
- Staff messages appear on the left in a white bubble with the staff member’s name.
- Each message shows a small channel badge icon (portal, WhatsApp, SMS) indicating which channel it came through.
- Timestamps appear below each message (e.g. “Just now”, “5m ago”, “2h ago”).
- Delivery status icons appear on customer messages:
- Clock icon - pending.
- Single tick - sent.
- Double tick (grey) - delivered.
- Double tick (coloured) - read.
- Image attachments render inline. Other file types show a View attachment link.
Voice call cards
Section titled “Voice call cards”- Voice calls appear in the timeline as collapsible cards with a left border accent. The collapsed view shows:
- Phone icon and “Voice call” label.
- Call duration (e.g. “2m 15s”).
- Outcome (Completed, Transferred to staff, Voicemail, or Call failed).
- Call summary text (if available).
- Date and time of the call.
- If a transcript is available, click the card to expand it. The transcript shows alternating speaker bubbles (bot on the left, customer on the right).
Sending a reply
Section titled “Sending a reply”- Type a message in the input field at the bottom of the thread (placeholder: “Message [garage name]…”).
- Press Enter to send, or Shift+Enter to add a new line. Alternatively, click the send button (arrow icon).
- The message appears immediately in the timeline as a pending message. Once delivered, the status icon updates.
Empty conversation states
Section titled “Empty conversation states”- If the thread has no messages and no voice calls, the customer sees “No messages yet” with “Send a message below to start the conversation.”
- If the thread has only voice calls and no text messages, the voice call cards are shown with a prompt: “Start a text conversation below.”
Expected Outcome
Section titled “Expected Outcome”The customer can communicate with the garage without phoning. All messages from every channel appear in one place. New messages appear in real time without needing to refresh the page.
Troubleshooting
Section titled “Troubleshooting”| Problem | Cause | Fix |
|---|---|---|
| Messages are not updating in real time. | The real-time connection (SSE) may have dropped. The portal falls back to polling every 5 seconds automatically. | Refresh the page. If the issue persists, check the customer’s internet connection. |
| Customer sees “Conversation not found”. | The conversation ID in the URL does not match any conversation the customer has access to. | The customer should return to the messages list and open the correct conversation. If the issue persists, the conversation may have been removed. |
| Customer cannot send a message. | The send button is disabled when the input is empty or a message is currently being sent. | Ensure the text field is not empty. Wait for the previous message to finish sending. |
| WhatsApp or SMS messages are not showing in the portal. | Conversations are unified - messages from all channels should appear. If they are missing, the messages may not be linked to the customer’s conversation. | Check in Torqueflow that the customer’s WhatsApp or SMS messages are associated with the correct conversation record. |
- The message input has a character limit of 5,000 characters for new conversations.
- The portal marks staff messages as read automatically when the customer views the conversation.
- Real-time updates use Server-Sent Events (SSE). If the SSE connection fails after retries, the portal switches to polling every 5 seconds. The customer does not need to do anything.
- The conversation list refreshes automatically when the customer returns to the browser tab.
- Messages sent from the portal are tagged with the “portal” channel. The garage team sees these alongside WhatsApp, SMS, and voice messages in Torqueflow’s unified inbox.
- When a new message lands while the customer is looking at the conversation list, the new conversation row fades in and the unread badge briefly pulses. The portal respects the customer’s reduced-motion preference and skips the animation if they have it set.