openchair
FeaturesPricingAbout
Sign InStart Free Trial
Help Centre

Customers & Automation

  • Activity Feed
  • AI Booking Enquiry Auto-Responder
  • AI Style Preview
  • Automated Notifications
  • Birthday & Rebooking Automations

Customers & Automation

Concierge Actions & Backfill

Last updated 19 May 2026

Concierge Actions & Backfill

Every Concierge action in detail: the 14 action types, what triggers each, who can approve them, how audience preview and cost work, and how the backfill ranking system picks the right client when there's an open slot to fill.

Where to find them — Web: Concierge actions appear inline in /app/[slug]/concierge chat. Approval queue lives at /concierge/pending. Mobile: Concierge tab → chat surface. Pending review sheet on long-press of any pending action card.

TL;DR

  • 14 action types across 7 families (gap-fill, reconnect, retention, scheduling, feedback, inbox, automation setup).
  • Three risk tiers: Navigate (one-click route, no send), Draft (review and Send), Approval required (queued for Owner or Manager).
  • Audiences over 50 recipients require a hold-to-confirm gesture. Win-back queues for a 30-second cancel window. Single-client outreach is direct, no cancel.
  • Backfill ranks eligible clients on six weighted factors. Top 20 candidates returned; up to 5 used per gap-fill batch.

The 14 action types

Gap fill family

Flash deal

  • Trigger: empty slot, "gap", "fill", "tomorrow" in chat.
  • Risk: Draft.
  • Roles: Owner / Manager / Staff.
  • What executes: creates a real Flash Deal via the standard flash-deal flow; returns a shareable URL you can post anywhere (Instagram, your booking link, a one-off SMS).
  • Send UX: no audience: it's a URL you share manually.

Service spotlight

  • Trigger: "promote", "spotlight", "push my service".
  • Risk: Approval required.
  • Roles: Owner / Manager.
  • What executes: drafts a promotional SMS for a specific service, sent to a cohort you pick (similar to cohort outreach but promo-focused).

Reconnect family

Win-back campaign

  • Trigger: "lapsed", "win-back", "reconnect", "rebooking dropped".
  • Risk: Approval required.
  • Roles: Owner / Manager.
  • What executes: batch SMS to lapsed clients (60+ days inactive by default). Honours opt-out, blocked, recently-messaged dedup (30-day cooldown), and a 90-day per-wave cap (clients sent this wave in the last 90 days are excluded). Stamps lastReconnectSentAt on each recipient.
  • Send UX: audience preview with window picker (30 / 60 / 90 / 180 days), sample names, cost on Send button. Hold-to-confirm if 50+ recipients. Queues for 30 seconds with a Cancel button.

Client outreach (single-client)

  • Trigger: "text Sarah", "message client", "reach out to" — and the Concierge must have just looked the client up via lookup_client so the link is in recent context.
  • Risk: Draft for Owner; Approval required for Manager and Staff (approval skipped on solo venues).
  • Roles: Owner / Manager / Staff (staff can only message their own clients).
  • What executes: one SMS to a single named client. Stamps lastCampaignSentAt only (not lastReconnectSentAt, so the client remains eligible for future win-back).
  • Send UX: instant. No cancel window — small blast radius. No hold-to-confirm (single recipient).

Cohort outreach

  • Trigger: "send to VIPs", "message top spenders", "text new clients", "reach out to regulars".
  • Risk: Approval required.
  • Roles: Owner / Manager.
  • What executes: batch SMS to a non-lapsed cohort (VIPs, top spenders, regulars, new this month). The cohort is resolved at preview time so the count is live. Recently-messaged dedup applies.

Retention family

Birthday outreach

  • Trigger: "birthday", "wish".
  • Risk: Draft.
  • Roles: Owner / Manager / Staff.
  • What executes: SMS to clients with a birthday today or this week (operator picks the window).
  • Send UX: audience preview, sample names, cost on Send.

Share storefront link

  • Trigger: "send my booking link", "share my storefront".
  • Risk: Draft.
  • Roles: Owner / Manager / Staff.
  • What executes: one SMS to a client (or a small group) containing your storefront URL.

Filter clients (navigate)

  • Trigger: "show me my VIPs", "filter clients by", "client cohort".
  • Risk: Navigate.
  • Roles: Owner / Manager.
  • What executes: opens the Clients page (/clients). Cohort-aware query parameters are a follow-up.

Scheduling family

Booking reschedule

  • Trigger: "reschedule", "move appointment".
  • Risk: Approval required.
  • Roles: Owner / Manager / Staff.
  • What executes: finds open slots near the original time and proposes a reschedule. On approve, the booking moves and the customer is notified via the standard reschedule path.

Feedback family

Review request

  • Trigger: "review", "feedback", "Google review".
  • Risk: Draft.
  • Roles: Owner / Manager.
  • What executes: batch SMS to today's completed bookings asking for a review. Stamps booking.reviewRequestSentAt so the same client isn't re-asked.

No-show follow-up

  • Trigger: "no-show", "missed appointment", "didn't show".
  • Risk: Approval required.
  • Roles: Owner / Manager.
  • What executes: per-target SMS to today's no-show clients with a rebook nudge.

Inbox family

Inbox reply

  • Trigger: "reply", "respond", "inbox", "client asked".
  • Risk: Draft.
  • Roles: Owner / Manager / Staff.
  • What executes: drafts a reply to a single inbox conversation. On Send, the message goes out via the standard inbox path (visible in the customer's conversation thread).

Automation setup family

Enable reconnect automation

  • Trigger: surfaces automatically when reconnect automation is off and the venue has lapsed clients. No regex.
  • Risk: Navigate.
  • Roles: Owner / Manager.
  • What executes: opens /settings/reconnect to configure the automation.

Set up rebooking prompt

  • Trigger: "rebook prompt", "next visit nudge", "checkout rebook".
  • Risk: Navigate.
  • Roles: Owner / Manager.
  • What executes: opens /automations to configure the post-visit rebook nudge.

Risk tiers in detail

Navigate

The card is a labelled one-click route to a settings page. No draft, no Send, no Sparks beyond the chat turn. Useful for steering you to a setting the Concierge would otherwise have to explain in text.

Draft

The Concierge writes a draft (1 Spark for the selector + 1 for the draft). You review it, optionally refine (1 Spark each, up to 3 refines), then tap Send. On Send, the action executes inline.

Approval required

Same as Draft but the Send button creates a pending row instead. An Owner or Manager must open the approval queue (/concierge/pending or the mobile review sheet) and tap Approve.

Bypass rules:

  • Owner bypasses approval for actions they originated themselves. If you're the owner and you triggered the action in your chat, Send fires it directly.
  • Solo venues bypass approval entirely. A venue with a single staff member and solopreneur onboarding intent skips the queue for everyone.

Approval-required actions expire after 24 hours. Plain drafts expire after 7 days.

Audience preview + cost

Any action that sends to multiple clients shows an audience-preview card before Send. The preview is live: any toggle you change (e.g. the win-back window picker) re-queries instantly.

Field What it shows
Count Total eligible recipients in the cohort.
Sendable Sub-count after opt-out, blocked, recently-messaged dedup, no-contact filters.
Window picker (win-back only) 30 / 60 / 90 / 180-day inactivity windows.
Sample names Up to 5 first names with "and N more…". Useful for sanity-checking the audience.
Cost Lives inside the Send button: Send to 47 clients · A$3.40. NZ shows zero (email-only — see SMS allocation and limits).
Wallet warning "Wallet balance is short, top up before sending" disables Send until you top up.

Hold-to-confirm Send

When the recipient count is over 50, the Send button becomes a press-and-hold gesture:

  • Press and hold for ~600ms.
  • The fill bar progresses; release after completion to send.
  • A brief tap shows a "Hold to send" hint instead. Helpful for accidental taps.
  • Cmd/Ctrl-Enter focuses the hold button rather than bypassing the gesture.
  • Reduced-motion users see a static 50% fill bar.

The same hold-to-confirm component is shared by web and mobile, so the gesture is identical on both surfaces.

Scheduled-sends queue (win-back)

Win-back campaigns are the only action type currently using the server-side scheduled-sends queue:

  1. You approve and tap Send.
  2. The row enters conciergeScheduledSends with scheduled_for = now + 30 seconds.
  3. The card shows a countdown with a Cancel button.
  4. Cancel before the timer fires → status flips to cancelled, no SMS sent.
  5. After 30 seconds (capped at 5 minutes), the cron worker picks it up and fires.

Dual-path delivery: the client also runs a local setTimeout. If your tab stays open, the in-page timer fires first (snappy). If you close the tab or background the mobile app, the cron worker is the safety net. Race tolerance: the eligible-customer filter runs again at fire time, so anyone who rebooks between queue and fire is silently dropped from the audience — no double-send risk.

DND quiet hours pause the worker (it retries on the next tick rather than failing).

Backfill ranking system (gap fill)

When the Concierge identifies an open slot worth filling, it runs the backfill ranking system to find the best client to offer it to. Pure SQL scoring against the waitlist and recent client history. No LLM in this step.

The six factors

Factor Weight What it measures
Cadence proximity 35% How close the open slot is to the client's usual booking cadence. A client who comes every 6 weeks scores highest 5–7 weeks after their last visit.
Service fit 20% Whether the offered service is one the client books regularly.
Weekday preference 15% Does the slot fall on the client's most-booked day?
Time-band preference 10% Does the slot fall in their preferred time band (morning / afternoon / evening)?
Provider affinity 10% Is the offered staff member someone they've booked with before, ideally repeatedly?
Lead-time fit 10% Does the lead time (hours between now and slot) match what this client typically books with? Some clients only ever book days out; others tolerate same-day.

Eligibility filters

Before scoring, candidates must pass:

  • 3+ completed bookings in the last 12 months and 3+ lifetime visits
  • Not blocked
  • Not opted out of SMS (AU/GB) or email (NZ)
  • Valid contact details for the relevant channel
  • No outbound contact in the last 24 hours (cooldown)

Output

  • Top 20 candidates returned, sorted by score descending.
  • The Concierge selects up to 5 per gap-fill batch.
  • Confidence bands: 70+ high (Concierge flags these as strong matches), 40–69 medium, <40 low (rarely surfaced).

Audit trail

Where to look What it shows
Engage Activity Feed Every batch send, with recipient count, channel, timestamp.
Customer conversation thread Single-client outreach and inbox replies appear in the client's thread.
Approval queue history Pending and approved actions visible to Owner / Manager; records who approved and when.
Server-side audit All Concierge state changes (suggest, accept, send, success, failed, discarded, refine, cancel) write to conciergePendingActions and PostHog telemetry. Not currently surfaced in the UI, but preserved for support.

Role access summary

Action family Owner Manager Staff
Flash deal Direct Direct Direct
Service spotlight Direct (own) Approval —
Win-back campaign Direct (own) Approval —
Client outreach Direct (own) Approval Approval (own clients)
Cohort outreach Direct (own) Approval —
Birthday / Storefront link Direct Direct Direct
Filter clients (navigate) Yes Yes —
Booking reschedule Direct (own) Approval Approval (own bookings)
Review request Direct Direct —
No-show follow-up Direct (own) Approval —
Inbox reply Direct Direct Direct
Automation setup (navigate) Yes Yes —

Direct (own) means the Owner skips the approval queue for actions they originated themselves; Manager-originated approval-required actions still queue. Solo venues (single staff, solopreneur intent) bypass approval for everyone.

Common mistakes

Problem What to check
Action card appears with requires_approval but you can't see the approve button You're not Owner or Manager. Ask one of them to approve from the queue.
Win-back keeps surfacing the same client Recently-messaged dedup excludes anyone sent this wave in the last 90 days. If the client was sent ~85 days ago, they're still excluded for a few more days.
Send button shows "Wallet balance is short" Total cost exceeds your wallet balance. Top up from Settings → Billing or reduce the audience (use a tighter win-back window).
Refine button does nothing You've hit the 3-refine cap. Discard the draft and trigger again.
Scheduled win-back went out even though I closed the tab That's by design. The cron worker is the safety net. To cancel, use the in-app Cancel button within the 30-second window.
The same client outreach action is suggested twice The Concierge requires the client to be in recent chat context. If you mentioned them in two recent turns, the action may resurface. Once you send (or discard), it won't reappear without a fresh client reference.
Backfill suggestions look wrong Check the candidate's eligibility (3+ bookings, valid contact, opted in) and recent cadence. The ranker doesn't know about gaps that already exist on the client's side (holidays, illness).

FAQ

Why isn't an action being suggested when I ask for one?

Most actions have data gates. Win-back needs lapsed clients (60+ days inactive); review requests need today's completed bookings; no-show follow-up needs today's no-shows. If the gate isn't met, the Concierge won't propose the action even on direct request. Conversation keywords also matter: 'gap', 'fill', 'win-back', 'review', 'birthday' all trigger different action families.

What happens to a pending action if I don't approve it in time?

Approval-required actions expire after 24 hours. Draft actions expire after 7 days. Once expired, they can't be sent. Re-trigger from a new chat turn if you still want to send.

How does the backfill ranking system score customers?

Six weighted factors: cadence proximity (35%), service fit (20%), weekday preference (15%), time-band preference (10%), provider affinity (10%), and lead-time fit (10%). The top 20 candidates are returned; the Concierge picks up to 5 per batch.

Who bypasses the approval workflow?

Owners always bypass approval for actions they originated themselves. Solo venues (single staff, solopreneur onboarding intent) bypass approval entirely. Everyone else hits the approval queue.

Is there an audit trail of what was sent and approved?

Yes. Every batch send writes to the Engage Activity Feed (visible in the app). Approval-queue history is server-side, recording who approved and when. Single-client outreach appears in that client's conversation thread. Server-side audit isn't currently surfaced in the UI but is preserved for support.

Why does a win-back exclude clients who look perfectly eligible?

Three filters that aren't always obvious: recently-messaged dedup (any outbound in last 30 days), the 90-day per-wave cap (anyone sent this wave in the last 90 days), and the 24-hour contact cooldown. Run the audience-preview window picker (30 / 60 / 90 / 180) to see the count change as filters relax or tighten.

Related Articles

  • Concierge Overview
  • Concierge Automation (Gap Fill)
  • Coach (AI Business Advisor)
  • Understanding Spark
  • Using the Inbox
  • Reconnect Campaigns
openchair

The operating system for high-end service venues. Built in Australia for the world.

Product

  • Features
  • Pricing
  • AI Features
  • Mobile App
  • Online Booking
  • AI Concierge
  • Sign In

Solutions

  • Hair Salons
  • Barbers
  • Beauty
  • Wellness & Spa
  • Nail Salons
  • Tattoo Studios

Compare

  • All comparisons
  • vs Fresha
  • vs Timely
  • vs Square
  • vs Booksy
  • vs Mindbody
  • vs Boulevard
  • vs Phorest
  • vs Mangomint
  • vs GlossGenius
  • vs Vagaro
  • vs Shortcuts
  • vs Acuity

Resources

  • Blog
  • Help Centre
  • Guides
  • Glossary

Company

  • About
  • Contact
  • Book a Demo
  • Founding Members

Legal

  • Privacy
  • Terms
  • Cookie Policy
  • Sub-processors
  • Accessibility
  • Privacy Request

© 2026 OpenChair Platform. All rights reserved.

Made on the Goldie.