Back to the build library
Any industry
Starter

After-Hours Coverage

Every inquiry that lands after closing gets answered, qualified and booked overnight, so the morning starts with a calendar instead of a backlog.

Industry
Any industry
Build effort
Starter
Typical time to launch
1–2 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

Most businesses answer inquiries from roughly nine to five and quietly lose everything else. The call that comes in at 7:10pm, the web form submitted at 11:40pm on a Sunday, the text sent in the forty minutes between the last person locking up and the voicemail greeting being checked the next morning. None of these are smaller or less serious than daytime inquiries. They are often larger, because somebody contacting a business outside its own working hours is usually doing it after finishing their own working day, which means they have stopped browsing and started deciding.

The failure is mechanical rather than attitudinal. A missed call rolls to voicemail. The voicemail is not checked until 9:40 the next morning, after the opening rush. By then the caller has already rung two competitors, and whichever one answered gets the job. A web form drops into an inbox that nobody opens until mid-morning, so the first human reply arrives twelve hours after the inquiry. Long past the window in which a reply still feels like service rather than an interruption. Nothing was handled badly. It simply was not handled at all for twelve hours, and the market does not wait twelve hours.

Money leaks in three identifiable places. First, in response latency: inquiries that get no acknowledgement for hours convert at a fraction of the rate of those acknowledged immediately, and that gap is pure loss because the lead was already paid for. Second, in attribution damage: when overnight inquiries never reach the pipeline, paid channels running twenty-four hours a day look worse than they are, so budget gets cut on the strength of a reporting artefact. Third, in quiet attrition of reputation: a caller who reaches a dead voicemail twice stops calling, and that decision is never recorded anywhere. This build closes all three by making the business behave, between closing and opening, as if somebody competent is awake.

02

What gets built

Pipeline and stages

A single pipeline named After-Hours Inquiries, which hands qualified leads across to the day pipeline each morning. Stages in order:

  • Overnight Captured: contact created outside business hours, first acknowledgement sent.
  • BO Engaged: the contact has replied at least once and BO is working the conversation.
  • Qualified Overnight: the qualifying questions are answered and the intent is understood.
  • Booked Overnight: an appointment exists on a calendar without any staff involvement.
  • Needs Human AM: BO has captured context but the inquiry needs a person; queued for the morning.
  • Urgent Escalated: matched an urgency rule and was pushed to the on-call route immediately.
  • Overnight Unresponsive: acknowledged but never replied; passes to nurture.
  • Handed to Day Team: terminal stage for this pipeline; ownership has transferred.

Calendars

  • Next-Day Consultation: the main bookable calendar, with availability deliberately opened wider for the first ninety minutes of the business day so overnight leads can take the earliest slots.
  • Callback Window: a calendar of thirty-minute callback blocks rather than meetings, so BO can book a time a human will ring rather than promising a vague morning call.
  • On-Call Escalation: a thin calendar holding who is reachable overnight, by week, so the urgency route always resolves to a real person.

Custom fields

Create these on the contact record. The names matter because every workflow condition below references them.

  • inquiry_received_at: exact timestamp of first inbound contact.
  • after_hours_flag: yes or no, stamped at creation by comparing the timestamp to the business-hours definition.
  • first_response_at: timestamp of the first outbound message.
  • inquiry_channel: call, SMS, web chat, web form, social message.
  • inquiry_summary: BO writes a two-line plain summary of what the person wants.
  • urgency_level: routine, soon, urgent.
  • qualified_overnight: yes or no.
  • callback_window_booked: the chosen callback slot.
  • am_handoff_notes: what the day team needs to know in one paragraph.
  • quiet_hours_held: yes or no, set when an outbound message was deferred.

Tags

  • after-hours: applied to every contact created outside business hours; this is the reporting backbone.
  • missed-call-textback, overnight-chat, overnight-form: channel of origin.
  • bo-qualified, bo-booked, bo-stuck: what BO achieved on the thread.
  • urgent-overnight: matched an urgency rule.
  • am-callback-due: needs a human call in the first hour of the day.
  • quiet-hours-held: had at least one message deferred.
  • sms-opted-out: hard suppression for all SMS steps.

Forms

  • After-Hours Inquiry: four fields only: name, mobile, what they need in one line, and how soon. Anything longer collapses overnight completion rates. Hidden fields capture page URL and the timestamp.
  • Overnight Callback Request: name, mobile, and a preferred callback window picked from the Callback Window calendar.
  • Urgency Triage: a short internal form the on-call person completes after an escalated call, so the escalation leaves a record rather than a phone log.

BO's role and guardrails

BO is the AI assistant that owns the conversation between closing and opening. BO's job is to acknowledge, understand, qualify, and either book or queue. BO is not a salesperson and not an adviser.

  • BO answers only on channels active outside business hours: SMS, web chat, and social messaging. BO does not initiate contact with anyone who did not message first.
  • BO opens by naming the situation honestly (that the office is closed and that BO can take details and book) rather than pretending to be a staff member.
  • BO asks a maximum of four qualifying questions per thread, one message at a time, never stacked.
  • BO never quotes a price, a fee, or a discount under any circumstance. Pricing questions get a booked call instead.
  • BO never makes commitments about timelines, availability of staff, or outcomes.
  • BO hands off the moment the conversation touches anything contractual, a complaint, or an urgency keyword. Handoff means stage change plus notification, not a promise that somebody is already on it.
  • BO stops entirely on any opt-out language and on any message that reads as distress.
  • Every BO thread is readable in full by the day team the next morning. Nothing is summarized away.

Numbers and channels

  • One provisioned business number used for both inbound calls and SMS, so the text-back arrives from the number the person actually dialled. A text from an unfamiliar number reads as spam and gets ignored.
  • Call forwarding during business hours to the normal answering point; outside business hours, forwarding is bypassed and the missed-call route takes over.
  • Web chat installed on every page, with an after-hours greeting variant that differs from the daytime one.
  • Email sending from a verified, authenticated domain, used for the longer overnight confirmations where SMS is too small a container.
  • Social messaging inboxes connected so overnight direct messages land in the same conversation view.
03

How it runs, step by step

  1. At 7:48pm, after closing, somebody rings the business number. Nobody answers. The call is recorded as missed and the after-hours route takes over rather than the daytime voicemail.
  2. Within fifteen seconds, an SMS goes out from the same number: a short acknowledgement naming the business, stating that the office is closed, and asking what the person needs.
  3. A contact record is created. inquiry_received_at is stamped, after_hours_flag is set to yes, inquiry_channel is set to call, the after-hours and missed-call-textback tags are applied, and the contact enters Overnight Captured.
  4. The person replies two minutes later describing what they want. first_response_at was already stamped on the outbound text, so response latency for this inquiry is fifteen seconds rather than thirteen hours.
  5. BO takes the thread, moves the contact to BO Engaged, and asks the first qualifying question. BO's reply is scanned for urgency keywords before anything else happens.
  6. Over four short exchanges BO establishes what is needed, how soon, and roughly where or for whom. BO writes two lines into inquiry_summary and sets urgency_level.
  7. Nothing matched an urgency rule, so BO offers booking: two specific next-day slots from the Next-Day Consultation calendar, presented as times rather than as a link, with the link following only if neither suits.
  8. The person picks the earlier slot. BO books it, sets qualified_overnight to yes, applies bo-qualified and bo-booked, and moves the contact to Booked Overnight.
  9. A confirmation SMS goes out immediately with the date, time, location or call method, and a single line on what to have ready. A longer confirmation email follows with the same detail plus reschedule and cancel links.
  10. It is now 8:21pm, inside quiet hours for non-transactional messaging. No further promotional or nurture message is sent. Transactional confirmations are exempt and have already gone.
  11. At 7:30am the overnight digest arrives for the day team: every overnight contact grouped by stage, with the ones in Needs Human AM and Urgent Escalated listed first, each with its am_handoff_notes.
  12. At 8:00am a reminder SMS goes to everybody booked for that day, and any contact tagged am-callback-due appears on an assigned task list with the callback window already agreed.
  13. The day team opens each overnight thread, reads the full conversation rather than a summary, and takes over. The contact moves to Handed to Day Team and into the normal day pipeline.
  14. Contacts who were acknowledged but never replied sit in Overnight Unresponsive and pass automatically into a light nurture sequence rather than being deleted or chased by phone.
04

Automations in detail

Workflow 1: After-Hours Missed Call Text-Back

Trigger: a call to the business number ends without being answered.

Conditions and branches: first check the business-hours definition against the call timestamp. If the call is inside business hours, exit immediately: daytime missed calls belong to a different, shorter workflow. If outside, check whether the contact carries sms-opted-out; if yes, skip all SMS steps and create the record silently for the morning list.

Actions in order:

  • Create or update the contact. Stamp inquiry_received_at, set after_hours_flag to yes, set inquiry_channel to call. Apply after-hours and missed-call-textback.
  • Wait 15 seconds. The delay is deliberate. An instant text while the phone is still at the caller's ear reads as automated.
  • Send SMS from the dialled number: “Hi, this is the team at [Business]. Sorry we missed your call: we're closed right now. Tell me what you need and I'll get it sorted or booked for you tonight.”
  • Stamp first_response_at.
  • Move to Overnight Captured.
  • Wait 10 minutes. If no reply, send one follow-up: “Still here if it's easier to type it out. If you'd rather we call you, reply with a time that works in the morning.”
  • Wait 45 minutes. If still no reply, move to Overnight Unresponsive and exit. No third message overnight.

Stop and exit conditions: any inbound reply exits this workflow and starts Workflow 3. Opt-out language exits and triggers Workflow 8. A successful answered callback from the business exits the workflow. Hard exit if the contact reaches Booked Overnight by any route.

Workflow 2: Overnight Web Chat and Form Capture

Trigger: the After-Hours Inquiry form is submitted, or a web chat conversation is started, while outside business hours.

Conditions and branches: branch on channel. Form submissions get an immediate SMS plus email because a phone number was captured. Chat conversations stay in chat until a number is offered, since forcing a channel switch mid-sentence loses people. If no mobile was captured on either, branch to email-only and skip every SMS step without erroring.

Actions in order:

  • Create the contact with inquiry_channel set to form or web chat. Apply after-hours plus overnight-form or overnight-chat.
  • Wait 0 minutes: this one is immediate, because the person is still on the page.
  • Chat branch: BO replies in the chat widget with “Thanks for reaching out. The office is closed, but I can take the details and get you booked. What are you looking to get done?”
  • Form branch: send SMS “Got your inquiry just now: we're closed but I've got it. Quick question so the right person is ready for you: [first qualifying question].” Then send a confirmation email with the same opening and the business hours stated plainly.
  • Stamp first_response_at and move to Overnight Captured.
  • Wait 5 minutes in the chat branch. If the visitor has gone, and a number exists, continue the identical conversation over SMS with “Looks like you've stepped away: carrying on here so you don't lose the thread.”
  • Wait 30 minutes. If no reply on any channel, move to Overnight Unresponsive.

Stop and exit conditions: exit on any reply, on booking, or on opt-out. Exit if the contact already has an open thread from a call in the previous two hours, so one person contacting twice does not get two parallel conversations.

Workflow 3: BO Overnight Qualification and Booking

Trigger: an inbound reply arrives on an after-hours thread, on SMS, web chat, or social message.

Conditions and branches: the first branch is always urgency. Scan the inbound text against the urgency keyword list before BO composes anything; a match routes to Workflow 4 and this workflow stops. Second branch: if the message contains pricing language, BO does not answer it, and moves straight to offering a booked call. Third branch: if the message mentions an existing order, account, or complaint, BO collects nothing further and routes to Needs Human AM.

Actions in order:

  • Move to BO Engaged. Apply no tag yet: tags here record outcomes, not attempts.
  • BO asks qualifying question one. Wait for reply, maximum 20 minutes between questions before a single nudge.
  • BO asks questions two through four, one message per question, never two questions in a single message. Each answer writes to the relevant custom field.
  • BO writes inquiry_summary in two lines and sets urgency_level.
  • Pricing branch only: “I can't give you a figure over text. It depends on a couple of things and I'd rather not guess at it. The fastest way is a short call where you get a real number. Want me to book you in?”
  • BO offers two named slots: “I've got 9:15 or 11:40 tomorrow. Which suits?” Only if both are refused does BO send the booking link.
  • On acceptance: book the slot, set qualified_overnight to yes, apply bo-qualified and bo-booked, move to Booked Overnight, and trigger Workflow 5.
  • On refusal of booking: BO offers a callback window instead, writes callback_window_booked, applies am-callback-due, writes am_handoff_notes, and moves to Needs Human AM.
  • If BO cannot progress after four exchanges: apply bo-stuck, write what is known into am_handoff_notes, move to Needs Human AM, and send “I want to get this right rather than guess: someone from the team will call you first thing. You're on the list for the morning.”

Stop and exit conditions: urgency match, opt-out, booking confirmed, four-exchange ceiling reached, or the business day opening. At opening time BO stops composing new messages entirely and every live thread transfers to the day team.

Workflow 4: Urgency Detection and On-Call Escalation

Trigger: an inbound overnight message matches the urgency keyword list, or the Urgency Triage form marks an inquiry urgent.

Conditions and branches: maintain the keyword list as a named list, not inline, so it can be edited without touching the workflow. Branch on severity: a distress or safety match routes immediately to the on-call human with no automated reply beyond directing the person to the appropriate emergency service. A commercial urgency match (a deadline, a failure, a time-bound loss) routes to on-call with context. Check the On-Call Escalation calendar for who is reachable; if nobody is on-call this week, fall back to a named default and flag the gap in the morning digest.

Actions in order:

  • Apply urgent-overnight, set urgency_level to urgent, move to Urgent Escalated.
  • Send SMS to the contact immediately: “Understood: I'm flagging this to someone now rather than waiting for the morning. Stay on this number.”
  • Wait 0 minutes. Notify the on-call person by SMS and by push, including the contact name, number, channel, and the inbound message verbatim. Verbatim matters; a paraphrase of an urgent message loses the thing that made it urgent.
  • Create an assigned task due in 15 minutes.
  • Wait 15 minutes. If the task is not complete and no outbound call has been logged, notify the secondary on-call contact and escalate the task.
  • Wait a further 15 minutes. If still untouched, notify the business owner directly and mark the escalation as missed in the digest.
  • Once handled, the on-call person completes the Urgency Triage form, which writes back to am_handoff_notes.

Stop and exit conditions: the assigned task completing, or an outbound call to the contact being logged. BO never resumes a thread that reached this workflow; it stays with people. Safety matches never receive a nurture or marketing message afterwards.

Workflow 5: Overnight Booking Confirmation and Show Protection

Trigger: an appointment is created on Next-Day Consultation while outside business hours.

Conditions and branches: branch on how soon the appointment is. If it is less than fourteen hours away, compress the reminder sequence to a single morning message, because a full reminder ladder does not fit. If more than fourteen hours, run the standard ladder. Branch on channel preference: email-only contacts get the same content without SMS.

Actions in order:

  • Send confirmation SMS immediately: “Booked: [day] at [time]. You'll be with [staff or team]. Reply R to reschedule or C to cancel, no hard feelings either way.”
  • Send confirmation email immediately with date, time, address or call link, what to bring or have ready, and reschedule and cancel links.
  • Wait until 8:00am: never earlier, regardless of when the booking happened. Send “Morning: still good for [time] today? Reply Y to confirm.”
  • Wait 2 hours. If no confirmation and the appointment is more than three hours away, send one more: “Haven't heard back on [time] today. Still works, or shall I move it?”
  • Wait until 1 hour before the appointment. Send the final reminder with the location or join link only, no questions.
  • On a reschedule reply: hand the thread to the reschedule workflow, keep the stage, and do not treat it as a cancellation.
  • On a cancel reply: acknowledge without friction: “No problem, that's canceled. Want me to find you another time?”, and move to a cancellation nurture rather than deleting the contact.

Stop and exit conditions: appointment marked as attended, canceled, or no-show. All steps stop on opt-out except the final transactional reminder for an appointment the person has already confirmed.

Workflow 6: Quiet Hours Queue and Morning Release

Trigger: any outbound non-transactional message is about to send while inside the defined quiet-hours window.

Conditions and branches: define quiet hours explicitly in the contact's own time zone, not the business's, and define them conservatively. Branch on message class. Transactional messages. A confirmation of something the person just did, a reminder for an appointment they booked, a reply inside a conversation they are actively having: send regardless. Promotional and nurture messages (anything the person did not just ask for) are held. An actively running conversation is not quiet-hours restricted; replying to someone who is texting you at 1am is service, not intrusion.

Actions in order:

  • Evaluate message class against the branch rules above.
  • Held branch: set quiet_hours_held to yes, apply quiet-hours-held, and queue the message.
  • Wait until the start of the permitted window in the contact's time zone.
  • Release the queued message. If more than one message queued for the same contact, release only the most recent and discard the rest. A stack of overnight messages arriving together at 8:01am reads worse than silence.
  • Clear quiet_hours_held after release.
  • Report the count of held and released messages into the digest, so a workflow quietly holding half its sends gets noticed.

Stop and exit conditions: discard any queued message if the contact replies before release, opts out, or books, since all three make the queued message obsolete. Discard anything held for more than eighteen hours rather than sending it stale.

Workflow 7: Morning Handoff and Overnight Digest

Trigger: scheduled, 7:30am local, every day the business opens.

Conditions and branches: if zero overnight contacts, send a single line confirming nothing came in. An absent digest is indistinguishable from a broken digest. If any contact sits in Urgent Escalated unhandled, send that as a separate alert before the digest rather than buried inside it.

Actions in order:

  • Collect all contacts tagged after-hours created since the previous business day's close.
  • Group by stage, ordered: Urgent Escalated, Needs Human AM, Booked Overnight, BO Engaged, Overnight Unresponsive.
  • For each contact, include name, number, inquiry_channel, inquiry_summary, am_handoff_notes, and the latency between inquiry_received_at and first_response_at.
  • Send the digest by email to the day team and post it to the connected team channel if one is in use.
  • Create one assigned task per contact in Needs Human AM, due by 9:30am, carrying the agreed callback window where one exists.
  • Wait until 10:30am. For any such task still open, notify the manager with a list rather than individual pings.
  • Move every contact that a human has opened and actioned to Handed to Day Team.

Stop and exit conditions: runs once per business morning and ends. Does not run on days the business is closed; those inquiries roll into the next opening digest instead of vanishing.

Workflow 8: Opt-Out, Reply Handling and Compliance Guard

Trigger: any inbound message containing opt-out language, on any channel.

Conditions and branches: match on a maintained list of opt-out terms and their obvious variants and misspellings, not on exact-match keywords alone. Branch on scope: a message asking to stop texts suppresses SMS only; a message asking to be removed entirely suppresses every channel. Separately branch on ambiguity. A message like “stop calling me in the evenings” is a preference, not an opt-out, and should route to a human rather than being processed as either.

Actions in order:

  • Apply sms-opted-out and set the platform-level messaging suppression on the contact, not just the tag. The tag is for reporting; the suppression is what actually stops sends.
  • Send one confirmation of the opt-out and nothing further: “You're unsubscribed from texts from [Business]. You won't hear from us here again.”
  • Remove the contact from every active workflow, including nurture sequences the overnight build feeds into.
  • Full-removal branch: suppress email as well, and record the request date and the exact wording used.
  • Ambiguous branch: send no automated change, create an assigned task for a human to clarify, and pause all non-transactional sends in the meantime.
  • Write an audit line recording channel, timestamp, and verbatim request, so the opt-out can be evidenced later.

Stop and exit conditions: terminal. Nothing in this build re-enrolls an opted-out contact. Re-entry requires fresh opt-in captured on a form that states what the person is agreeing to receive, and that opt-in event is stamped on the record.

05

What changes

Afterwards, the business has no dead hours. An inquiry at 9pm gets an acknowledgement in under a minute, a real conversation if the person wants one, and frequently an appointment on the next day's calendar: all without anybody being on shift. The morning changes character completely: instead of opening a voicemail box and an inbox and reconstructing what happened overnight, the day team opens a digest that is already triaged, with the urgent items at the top and the booked appointments already confirmed.

The second change is less obvious and more valuable. Overnight demand becomes visible. Most businesses have no idea how much inquiry volume arrives outside their hours, because the inquiries that were never captured were never counted. Once every overnight contact carries the after-hours tag, the volume is measurable, and decisions about staffing, hours, and paid media budget stop being guesses.

Metrics to watch, weekly:

  • Median first-response latency for after-hours inquiries, computed from inquiry_received_at to first_response_at. This is the headline number and it should be measured in seconds.
  • Overnight capture rate: after-hours contacts created, divided by after-hours missed calls plus form submissions plus chat starts. Gaps here mean a channel is not wired in.
  • Overnight reply rate: share of acknowledged contacts who reply at all. A low rate usually means the first message sounds automated.
  • BO booking rate: share of replying contacts who reach Booked Overnight without human involvement.
  • Needs-Human-AM clear rate by 9:30am: the discipline measure for the day team.
  • Escalation response time: minutes from urgency match to the on-call task being completed, plus a count of missed escalations.
  • Show rate for overnight-booked appointments compared with daytime-booked ones. A meaningful gap means the confirmation ladder needs work, not that overnight leads are worse.
  • Opt-out rate on after-hours threads. A rising number is the clearest signal that the overnight messaging is too pushy.
06

Before you start

Prerequisites

  • A written definition of business hours, including the days the business is actually closed and any seasonal variation. Every branch in this build depends on it, and an inaccurate hours table is the single most common cause of overnight workflows misfiring.
  • A decision about who is on-call overnight, by week, with a named fallback. The build cannot invent this.
  • An agreed urgency keyword list, written by someone who knows the business, not generated generically.
  • The four qualifying questions BO is allowed to ask, in order, in writing.
  • A clear statement of what BO may never say, pricing, timelines, clinical or professional advice, commitments on behalf of staff.

Integrations and provisioning

  • A provisioned business number capable of both voice and SMS, with call forwarding configured for business hours and bypassed outside them. Verify that outbound texts display the dialled number.
  • Calendar connection for the staff whose availability feeds Next-Day Consultation, two-way so external bookings block platform slots.
  • Email sending domain authenticated with SPF, DKIM, and DMARC records in place before the first send. Overnight confirmations that land in spam are worse than no confirmations, because the person believes they are confirmed.
  • Web chat embedded site-wide with an after-hours greeting variant.
  • Social messaging inboxes connected if overnight direct messages are a real channel for this business.
  • Optional: a team chat connection such as Slack for the digest and escalation alerts, and Zapier or Make if overnight inquiries also need to reach a system the platform does not connect to directly.

Messaging compliance

  • A2P and 10DLC registration must be completed before any volume of SMS is sent in the United States. Register the brand and the campaign, describe the use case accurately as conversational and appointment-related messaging, and submit the exact opt-in language and sample messages used in this build. Unregistered traffic gets filtered silently, which is the worst possible failure mode for an overnight system. The messages appear sent and never arrive.
  • Opt-out handling must work on every channel, be honoured immediately, suppress at the platform level rather than by tag alone, and be evidenced with timestamp and verbatim wording. Include opt-out instructions in the first message of any sequence.
  • Quiet hours should be set conservatively in the contact's time zone, with the transactional and conversational exemptions defined explicitly as in Workflow 6. Do not rely on a single global setting.
  • Consent for each channel should be captured and stamped at the point of collection, with the form stating plainly what the person will receive. A missed call is an invitation to reply, and the text-back reply is reasonable, but ongoing marketing to that number needs its own opt-in.
  • Record keeping: retain consent events, opt-outs, and overnight conversation transcripts for as long as the business's own retention policy requires, and no longer.

Data protection

  • Overnight conversations collect personal data at a point when no human is supervising. Decide in advance what BO is allowed to collect, and configure BO to refuse anything beyond it, particularly payment details, identity documents, and sensitive personal information, none of which belong in an SMS thread.
  • Restrict who can read overnight transcripts to the people who need them, and review that access list when staff change.
  • If the business operates in or serves people in a jurisdiction with a general data-protection regime, the lawful basis for overnight messaging, the privacy notice, and the retention period all need to be settled before launch rather than after.

None of the above is legal advice. Messaging rules, consent standards, and data-protection obligations vary by jurisdiction and by industry, and they change. Confirm the specifics: registration requirements, consent wording, quiet-hour windows, and retention periods: with the client's own counsel before going live. To scope a build for a specific business, book a call at bookings.appbo.io.

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call