Skip to main content
View Categories

AI Concierge: Live Concierge

Let a real team member step into an AI Concierge chat and talk to a guest live from Slack, watch conversations as they happen, and jump in even when the guest did not ask for a person.


What it does #

Most of the time the AI Concierge can answer a guest on its own. But some conversations are worth a human: a guest who is ready to book and has one last question, or someone the assistant cannot quite satisfy. Without a way to step in, your only option is to capture the guest as a lead and follow up later, by which point the moment has often passed.

Live Concierge gives you that human moment without asking your team to sit inside the WordPress dashboard. Your team works entirely from a Slack channel they already watch. There are three parts, and you can use as much or as little as you want:

  • Guest-requested takeover. When live chat is available, a guest can choose to talk to a person. The request lands in Slack, an operator replies in the thread, and one click hands the guest back to the AI.
  • Session mirror. Stream live conversations into Slack as they happen, so your team can read along even before anyone steps in.
  • Unprompted takeover. From a mirrored thread, an operator can jump into a chat the guest never asked to escalate. The guest sees a brief notice that a team member has joined.

Here is the guest-requested flow from both sides:

  • A guest opens the concierge chat and chooses talk to a live person.
  • Your operator channel in Slack gets a Live chat requested message, including the guest’s last message and a link to the page they are on.
  • An operator replies in that Slack thread. Each reply shows up in the guest’s chat window, and anything the guest types back is relayed into the same thread, so the whole conversation stays in one place.
  • While your team member is chatting, the guest sees a short banner (“The AI is paused while a team member is with you”), so there is never confusion about who is talking.
  • When the operator is done, they click Release to AI (or type /concierge release), and the guest is handed back to the assistant.

The talk to a live person option only appears when three things are true at once: Live Takeover is turned on, the current time is inside the hours you set, and an operator has marked the team as present. When any of those is not true, the guest is offered the contact form instead, so you never advertise a live option you cannot staff.

Guests can always reach a person #

Beyond the live flow, the chat is built so a guest who wants a human never gets trapped talking to the AI:

  • A “Talk to a person” button sits in the chat header at all times. When a live operator is available it starts a live chat; otherwise it opens the contact form so the guest can leave their details. The button appears whenever live chat or Lead Capture is enabled, and you can change its label.
  • Certain guest phrases always trigger the offer of a person. If a message contains a phrase like “real person”, “call me”, “live agent”, or “customer service”, the concierge offers to connect the guest with your team no matter how the AI would have read the message. The phrase list is yours to edit, and single words match whole words only, so “human” does not fire inside “humankind”.
  • A green availability dot on the chat launcher shows guests that a live person is checked in right now, before they even open the chat. This is automatic whenever an operator is present; there is no separate setting to turn it off.
  • After a contact-form handoff, the guest is told how soon to expect you. Set the Handoff Response Time to something honest, like “a few hours” or “one business day”, and it is woven into the confirmation.

How to turn it on #

Everything for live human takeover lives on one screen. In your AI Concierge settings, open the Live Concierge tab. It has three sections, top to bottom: Availability and Presence, the Live Operator Slack app, and Session Mirror and Takeover. The plugin creates the Slack app for you with one click; after that you paste three values into WordPress and you are done.

1. Set your hours and turn on Live Takeover #

Under Availability & Presence, switch on Enable Live Takeover, then choose your Available Days, set Opens At and Closes At for the daily window, and confirm the Timezone. Outside those hours, guests automatically get the contact form instead.

2. Create the Slack app in one click #

You do not build the app by hand. In the Live Operator (two-way Slack chat) section, click Create your Slack app. Slack opens with this site’s configuration already filled in: the app name, the bot, the /concierge slash command, the permissions, and the request URLs that point back at your site. Pick your workspace, review the summary, and create the app. Then open Install App on the app’s page and install it to your workspace, approving the requested permissions.

If Slack says it cannot create the app (“We can’t render a summary or create this app”, with a note about errors in the manifest file): click Edit Configurations, shorten the name line near the top to 35 characters or fewer, and continue. Slack caps app names at 35 characters, and a long site title can generate a longer name than that.

If you would rather wire up an existing Slack app yourself, skip this step and use the manual setup at the end of this section.

3. Copy the two secrets into WordPress #

From the app you will need two values:

  • The Bot User OAuth Token (it starts with xoxb-), found on the app’s OAuth and Permissions page.
  • The Signing Secret, found on the app’s Basic Information page. This is what lets your site confirm that incoming requests really came from Slack.

Paste both into the Bot Token and Signing Secret fields in the Live Operator section, and save.

4. Pick your operator channel and test #

In Slack, create or pick the channel where live-chat requests should land, and invite the app’s bot to it (/invite @homerunner_concierge). Paste that channel’s ID into Operator Channel. Use the Slack channel ID (something like C0123456789), not the channel name. Save, then click Test connection to confirm Slack accepts the token.

5. Go live when someone is staffing it #

When an operator is ready to take chats, mark the team present, either with the Operator Presence control on the Live Concierge tab or by typing /concierge on in Slack. Presence lapses on its own after the number of minutes you set, so mark present again to keep the live option open. Type /concierge status any time to see whether live chat is currently available, and /concierge off to stop offering it.

6. Mirror conversations and allow unprompted takeover (optional) #

In the Session Mirror & Takeover section, choose how much to stream into Slack with Mirror Sessions to Slack: off, engaged only (once a guest has sent two or more messages), or all sessions. Optionally set a separate Mirror Channel for that feed (the bot must be invited to it too).

Leave Allow Unprompted Takeover on if you want operators to be able to join a chat the guest did not request. A Take over button appears on the mirrored Slack thread, and clicking it (or running /concierge takeover <session-id>, where the session ID is on the thread’s mirror card) puts the operator in the chat. The guest sees the Takeover Notice as a system note. Set the Team Display Name to control how your team is labeled to the guest.

Session cards in Slack include a visitor context line (location, device, IP) and a repeat-visitor badge by default. If you would rather keep that detail out of Slack, turn off Show Visitor Identity on Cards.

Setting the app up manually instead #

If you are configuring an existing Slack app by hand, expand Set it up manually instead in the Live Operator section. It shows the full app manifest (JSON) ready to copy into Slack’s app settings, plus this site’s three request URLs:

  • Events request URL: https://your-site.com/wp-json/hr-ai-enhancer/v1/slack/events
  • Slash command request URL: https://your-site.com/wp-json/hr-ai-enhancer/v1/slack/command
  • Interactivity request URL: https://your-site.com/wp-json/hr-ai-enhancer/v1/slack/interactivity

Enable interactivity, add a slash command named /concierge pointed at the command URL above, and subscribe the app to new message events so operator replies reach your site. The bot needs the chat:write, commands, channels:history, and groups:history scopes. Slack requires the request URLs to be public HTTPS.

Settings #

SettingWhat it controls
Enable Live TakeoverThe master switch for the whole feature. When off, the live option never appears, the widget never checks for an operator, and everything below is dormant. Off by default.
Available DaysThe days your team offers live chat. With no days selected, the live option never opens. Defaults to Monday through Friday.
Opens At / Closes AtThe start and end of your daily live-chat window, in 24-hour time. If the close time is earlier than the open time, the window spans midnight. Defaults to 9:00 AM and 5:00 PM.
TimezoneThe timezone your hours are read in. Leave blank to use your site timezone.
Presence Auto-Lapse (minutes)How long a single “available” toggle stays active before it lapses on its own, so a forgotten “on” never strands guests. Defaults to 60.
Operator PresenceA live toggle (not a saved setting) that marks your team available right now. The Slack /concierge on and /concierge off commands control the same state.
Bot TokenThe Slack app’s Bot User OAuth Token. Powers the two-way operator channel. Required. Leave the field blank on save and a stored token is kept.
Signing SecretThe Slack app’s signing secret. Verifies that inbound requests genuinely come from Slack. Required.
Operator ChannelThe Slack channel ID where live-chat requests post. Use the channel ID, not the #name, and invite the bot to that channel. Required.
Mirror Sessions to SlackHow much of the conversation is streamed into Slack. Off: only escalated chats reach Slack. Engaged only: mirroring starts once a guest has sent two or more messages (recommended, to avoid flooding). All sessions: every conversation is mirrored. Off by default.
Mirror ChannelAn optional separate channel ID for the mirrored feed. Leave blank to use the operator channel above. The bot must be invited to it.
Allow Unprompted TakeoverShows a “Take over” button on Slack session threads so an operator can join a chat the guest did not request. On by default.
Show Visitor Identity on CardsInclude the visitor context line (location, device, IP) and the repeat-visitor badge on Slack session cards. Turn off to keep visitor identity out of Slack entirely. On by default.
Team Display NameHow the live operator is labeled to the guest in chat, for example your brand or team name. Defaults to “Our team”.
Takeover NoticeThe status line the guest sees when an operator joins, rendered as a system note rather than a chat message. Defaults to “A team member has joined the chat.”
Handoff Trigger PhrasesOne phrase per line. When a guest message contains any of these, the concierge always offers to connect them with your team, regardless of how the AI reads the message. Single words match whole words only. Leave blank to use the built-in defaults (phrases like “human”, “real person”, “talk to a person”, “call me”, “live agent”, “representative”, “customer service”).
Handoff Button LabelThe label of the always-visible “talk to a person” button in the chat header. Defaults to “Talk to a person”.
Handoff Tooltip (operator available)Tooltip shown on the handoff button when a live operator is checked in. Defaults to “Speak to a live operator”.
Handoff Tooltip (no operator)Tooltip shown when no live operator is available; clicking then opens the contact form. Defaults to “Get in touch with our team”.
Handoff Response TimeHow soon your team responds to a contact-form handoff, for example “a few hours” or “one business day”. Shown to the guest after they submit. Defaults to “one business day”.
Live Chat Paused BannerThe banner the guest sees while a live team member is handling the chat and the AI is paused. Defaults to “The AI is paused while a team member is with you.”

The Slack slash command supports /concierge on, /concierge off, /concierge release, /concierge status, and /concierge takeover <session-id>.

Tips #

  • Live Concierge is different from Slack Notifications. Slack Notifications is a one-way alert that fires when a guest submits their contact details, set up with a simple webhook on the Integrations tab. Live Concierge is a two-way conversation that needs a full Slack app. You can run both at the same time.
  • Start the session mirror on Engaged only rather than All sessions. It keeps your channel focused on conversations that have momentum instead of flooding it with one-line bounces.
  • Unprompted takeover pairs naturally with the mirror: read along on the threads you care about, and step in with the Take over button the moment a conversation is worth a human.
  • Add the phrases your guests actually use to Handoff Trigger Phrases. If your follow-up emails say “reply CALL ME”, add that wording so those guests are routed straight to your team.
  • Not seeing requests in Slack? Check that Live Takeover is enabled, the current time is inside your hours, an operator is marked present (presence auto-lapses), the bot has been invited to the operator channel, and you saved the channel ID rather than the channel name. Run /concierge status in Slack to see the first three at a glance. A Slack outage never breaks guest chat, and the AI keeps answering.
  • When nobody is staffing chat, guests are offered the contact form instead, saved through Lead Capture. For the full admin tour see Operator Tools, and for the big picture see the AI Concierge overview.