Customers & Automation
Inbound Message Handling
Inbound Message Handling
Understand how customer replies reach your inbox — when a customer responds to an SMS or email from your venue, OpenChair routes the message to the right conversation, classifies the intent, and either auto-responds with AI or escalates for human review.
Where to find it: Inbound messages appear automatically in the Inbox (web: Engage → Inbox, mobile: Messages tab). There are no settings to configure for inbound routing — it works automatically when you have a dedicated SMS number or send emails from your venue.
Overview
Inbound message handling:
- Routes incoming SMS to your venue by matching the dedicated phone number
- Routes incoming email by matching the venue slug in the reply-to address
- Matches inbound messages to existing conversation threads using phone numbers and email headers
- Classifies SMS intent (confirm, decline, reschedule, question) using AI or fast-path pattern matching
- Auto-responds to SMS conversations via AI until the conversation resolves or escalates
- Logs all inbound emails for manual review — email conversations do not receive AI auto-responses
- Detects auto-replies (out-of-office, bounces) and marks them accordingly
How SMS inbound works
Venue matching
When a customer sends an SMS, the message arrives via Twilio and is matched to your venue by the dedicated phone number in the "To" field. Each venue has one unique dedicated number — there is no shared number.
If the message cannot be matched to any venue (e.g. the number has been released), the message is logged but not processed.
Customer matching
The system matches the sender's phone number against known customers:
- Active gap-fill offers: Checks if the sender has an active waitlist offer pending
- Recent conversations: Searches the last 20 outbound messages for a matching phone number
- Reconnect campaigns: Checks reconnect campaigns sent in the last 30 days
Phone numbers are normalised to E.164 format (e.g. +61412345678) for matching, so customers can reply from their phone in any local format.
If the sender cannot be matched to any customer or active conversation, the message is logged but no conversation is created.
Message threading
SMS messages are threaded automatically by the relationship between the customer and the original outbound message. A reply to a gap-fill offer becomes part of that gap-fill conversation. A reply to a reconnect campaign becomes part of that reconnect conversation.
Each message in a thread has a turn number that increments with each exchange.
How email inbound works
Venue matching
When a customer replies to an email from your venue, the reply is sent to an address like [venue-slug]@reply.openchairpro.com. The system extracts the venue slug from the address and matches it to your venue.
Conversation threading
Email threading uses the In-Reply-To email header. When your venue sends an email (booking confirmation, campaign, etc.), the message ID is recorded. When a customer replies, the In-Reply-To header references that original message ID, linking the reply to the correct conversation.
Conversation key formats:
- Matched reply:
email:{notificationLogId}— linked to the original outbound message - Unmatched email:
email_unmatched:{venueId}_{timestamp}— a new conversation from an unknown thread
Auto-reply detection
The system detects automatic email replies (out-of-office messages, bounce notifications) and marks them as auto-replies. Detection checks three layers:
- Email headers: RFC 3834 auto-submission headers, X-Auto-Response-Suppress, Precedence: bulk/junk
- Subject line: Patterns like "Out of office", "Automatic reply", "Delivery status notification"
- Body text: Phrases like "This is an automated response", "This mailbox is not monitored"
Auto-replies are logged with status Completed and do not require human attention. They appear with an orange "Auto-reply" badge in the conversation list.
AI auto-response (SMS only)
When a customer replies to an SMS, the AI automatically classifies the intent and responds. Email conversations do not receive AI auto-responses — they are always handled manually.
Intent classification
The AI determines what the customer wants:
| Intent | Example | AI action |
|---|---|---|
| Confirm | "Yes", "Sounds good", "Book it" | Confirms the booking and ends the conversation |
| Decline | "No", "Not interested", "Pass" | Acknowledges the decline and ends the conversation |
| Reschedule | "Can I come Thursday instead?" | Offers alternative times |
| Question | "How long does it take?" | Escalates to a human for review |
| Unknown | Unclear or ambiguous message | Asks for clarification |
Fast-path matching
Common responses are matched instantly without calling the AI:
- Confirm patterns: "yes", "yeah", "yep", "sure", "ok", "okay", "perfect", "sounds good", "book it", "confirm", "absolutely", "done", "deal", "lock it in", "great"
- Decline patterns: "no", "nope", "nah", "not interested", "cancel", "never mind", "pass", "skip", "no thanks", "not now"
Fast-path matching provides near-instant responses for clear yes/no answers.
Turn limit and escalation
The AI handles up to 3 turns (message exchanges) per conversation. After 3 turns, the conversation is automatically escalated to a human regardless of intent. The escalation banner in the inbox shows the reason:
- "AI reached the 3-message limit. Customer may need a human response."
- "Customer asked a question the AI couldn't answer."
- "Customer's intent was unclear after multiple attempts."
Manual takeover
When a staff member sends a manual reply to a conversation, AI handling pauses for that thread. The system switches to manual mode — subsequent inbound messages are logged but the AI does not auto-respond. Intent is still parsed using simple pattern matching (confirm/decline) for tracking purposes.
AI voice persona
The AI uses your venue's configured voice persona when generating responses. The persona determines the tone (e.g. warm and creative for "The Stylist", polished and efficient for "The Host"). If no persona is configured, the system defaults to "The Assistant" (minimal, factual).
STOP keyword handling
If a customer replies with exactly "STOP" (case-insensitive), the system treats the message as a decline with maximum confidence. The conversation is ended.
Note
The STOP keyword ends the current conversation but does not automatically opt the customer out of all future messages. To fully opt out a customer, use the customer profile to mark them as opted out, or the customer can use the unsubscribe link in marketing emails.
Do Not Disturb and inbound messages
Do Not Disturb (DND) settings only affect outbound messages — they do not block or delay inbound message processing. If a customer sends a message during your venue's DND hours (default 9 PM to 8 AM):
- The inbound message is received and logged immediately
- The AI auto-response is still sent (SMS only) — DND does not suppress AI replies to active conversations
- Reconnect automations and campaign sends respect DND, but conversational AI replies do not
Dedicated SMS number
A dedicated phone number is required for all SMS functionality, including receiving inbound SMS. Without a dedicated number, only email inbound is available.
| Market | Number format | Provider |
|---|---|---|
| Australia | +61 mobile number | Twilio |
| United Kingdom | +44 mobile number | Twilio |
| New Zealand | Not available | — |
Each venue has exactly one dedicated number. The number is provisioned through the Engage settings page. See SMS & Email Allocation and Limits for provisioning details.
Email bounce and complaint handling
When an email sent by your venue bounces permanently or receives a spam complaint:
- The customer's record is flagged with emailBounced = true
- Future email sends to that address are automatically suppressed
- The bounce or complaint is logged via the delivery status webhook
This prevents your venue from repeatedly sending to invalid or hostile email addresses, protecting your sender reputation.
Frequently asked questions
| Question | Answer |
|---|---|
| What happens if a customer texts a number that is no longer active? | The message is received by Twilio but cannot be matched to a venue. The message is logged but not processed or shown in any inbox. |
| Can customers start new SMS conversations or only reply? | Customers can only reply to messages your venue has sent. The system matches inbound SMS by looking for active outbound conversations with that phone number. Unsolicited texts from unknown numbers are not processed. |
| Why did an email create an "unmatched" conversation? | The email's In-Reply-To header could not be matched to any outbound message from your venue. This can happen if the customer forwarded the email, replied from a different account, or if the original email was sent before the tracking system was in place. |
| Does the AI respond to emails? | No. Email conversations are always logged as manual handling — no AI auto-response is generated. A team member must reply manually from the inbox. |
| What happens if the AI wallet is empty during an SMS conversation? | If Spark metering is active and the wallet is insufficient, the AI sends a fallback message: "Thanks for your message. Our AI assistant is temporarily unavailable, so the venue will follow up shortly." The conversation continues in manual mode. |
| How fast are AI auto-responses? | Fast-path matches (clear yes/no) respond in under 1 second. AI-classified responses typically take 2–5 seconds depending on complexity. |
Troubleshooting
| Issue | Solution |
|---|---|
| Customer SMS not appearing in the inbox | The sender's phone number must match a customer with an active outbound conversation (gap fill, reconnect, or booking message) from the last 30 days. If no match is found, the message is logged but no inbox conversation is created. |
| Customer email not appearing in the inbox | Check that the email was sent to the correct reply-to address ([slug]@reply.openchairpro.com). If the customer replied from a different email client or forwarded the message, the In-Reply-To header may be missing, creating an unmatched conversation. |
| AI gave wrong response to customer | The AI classifies intent based on the message text. Ambiguous messages like "maybe" may be misclassified. After 3 turns, the conversation escalates automatically. You can take over at any time by sending a manual reply, which pauses AI handling. |
| Out-of-office replies filling up the inbox | Auto-replies are detected and marked as Completed automatically. They appear with an "Auto-reply" badge and do not count as conversations needing attention. If auto-replies are not being detected, the sender's email client may not be setting standard auto-reply headers. |
| Inbound messages arriving during DND hours | DND does not affect inbound message processing. Messages are received and AI auto-responds 24/7. DND only suppresses outbound campaign and automation messages. |
Related Articles
Last updated: March 2026