Back to the build library
Any industry
Standard

Inbound Call Capture & Routing

Route every inbound call to the right person, record it, transcribe voicemail, and capture the caller as a contact before anyone picks up.

Industry
Any industry
Build effort
Standard
Typical time to launch
2–3 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

The phone is almost always the highest-intent channel a business has. Someone who dials is further down the decision than someone who fills in a form, and they expect an answer in seconds rather than hours. It is also, in most businesses, the worst-instrumented channel in the building. The number on the website rings one handset. If the person at that handset is on another call, with a customer, or off that day, the caller hears ringing and then a mailbox greeting recorded by someone who no longer works there. Nobody downstream ever learns the call happened.

The leak compounds in three directions. First, unanswered calls are rarely returned, because there is no list of them: the missed call exists only in a handset log that no manager reads. Second, callers who do get through are never captured as records, so a person who phones three times across two months looks like three strangers and gets pitched from scratch each time. Third, because no call is attached to a contact, a campaign, or an outcome, spend decisions get made on form fills alone, and the channel that produces the best-qualified conversations shows up in reporting as nothing at all.

On the staff side the failure is just as expensive. Whoever answers has no idea who is calling or why, so the first ninety seconds go to re-collecting information the business already holds. There is no recording to settle a dispute about what was promised, no transcript to hand to the person who actually has to act on it, and no way to tell whether the team is answering within three rings or within thirty. The build below closes all of it: every call becomes a contact, a recording, a transcript, a disposition, and a next action.

02

What gets built

Pipeline and stages

A single Inbound Calls pipeline, so that every conversation has a visible state and nothing ends in a handset log.

  • New Call: created automatically the moment a call connects or is missed.
  • Answered - In Conversation: the call is live; the card is claimed by whoever picked up.
  • Needs Callback: missed, abandoned, or voicemail left; this is the stage the callback ladder works.
  • Callback Attempted: one or more outbound attempts logged, no contact yet.
  • Qualified - Booking Needed: real inquiry, wants an appointment or quote.
  • Booked: appointment on a calendar.
  • Transferred - Awaiting Outcome: handed to a specialist, owner, or billing.
  • Resolved - No Further Action: question answered, nothing to sell.
  • Spam or Wrong Number: terminal, excluded from all reporting and all follow-up.

Calendars

  • Consultation Calendar: a round-robin calendar across whoever takes new inquiries, with a 15-minute buffer after each slot so notes get written.
  • Callback Window Calendar: short slots used only when a caller asks to be phoned back at a set time; it exists so a promised callback is an appointment with a reminder, not a sticky note.
  • Escalation Calendar: owner or senior specialist availability, limited to a few slots a day, used by the transfer path.

Custom fields

Create these on the contact record so call context survives the call.

  • Call Source Number: which tracked number was dialled.
  • Call Source Label: the human name of that number, for example Main Line, Google Ads Line, Van Signage Line, Print Line.
  • First Call Date: set once, never overwritten.
  • Last Call Date: overwritten every call.
  • Total Inbound Calls: a number field incremented by the capture workflow.
  • Last Call Direction: Inbound or Outbound.
  • Last Call Outcome: Answered, Missed, Voicemail, Abandoned, Busy.
  • Last Call Duration Seconds: used to separate real conversations from three-second hang-ups.
  • Last Call Recording Link: the stored recording URL.
  • Voicemail Transcript: a long text field holding the transcription.
  • Call Reason: New Inquiry, Existing Customer, Billing, Supplier, Recruitment, Other.
  • Routed To: the ring group or individual the call landed on.
  • Callback Promised At: a date-time field; drives the promise-keeping workflow.
  • Callback Attempt Count: number field, capped at three by the ladder.
  • Preferred Contact Method: Call, Text, Email.
  • Quiet Hours Zone: the caller time zone, so no automated message fires at 02:00 local.

Tags

  • call-inbound, call-missed, call-voicemail, call-after-hours, call-first-time, call-repeat.
  • callback-owed: applied on miss, removed the instant two-way contact is re-established. This tag is the single source of truth for who is owed a call.
  • routed-sales, routed-service, routed-billing, routed-owner.
  • spam-suspected, wrong-number, do-not-call.
  • sms-opted-out: hard suppression for every text step.
  • qa-sampled: marks a call already pulled for review, so the sampler does not pick it twice.

Forms

  • Call Disposition Form: an internal form the answering team completes in under twenty seconds: Call Reason, outcome, next action, free-text note. It writes straight to the contact fields and moves the pipeline card, which means staff never touch the pipeline manually.
  • Callback Request Form: public, embedded on the contact page and linked from the missed-call text, capturing name, number, reason, and a preferred window. It exists so a caller who cannot wait can hand you the callback slot themselves.
  • Transfer Handoff Form: internal, used when a call is passed on: what the caller wants, what has already been promised, urgency. The receiving person gets this as a notification so the caller is not re-interrogated.

BO's role and guardrails

  • BO answers the main line only after the configured ring group has failed to pick up, and only to take a structured message: name, number, reason, urgency, best callback window.
  • BO handles the whole after-hours window: greets, states opening hours plainly, offers either a callback slot from the Consultation Calendar or a message, then writes both into the contact record.
  • BO may answer three categories of question unaided: opening hours, location and parking, and whether a service is offered at all. Everything else is captured and routed.
  • Guardrails: BO never quotes a price, never confirms availability outside the real calendar, never promises a specific person will call, and never claims to be human if asked directly.
  • BO escalates immediately on any phrase suggesting an emergency, a complaint, or a legal matter, applying routed-owner and notifying the owner by text rather than taking a message.
  • Every BO interaction is logged verbatim on the contact so the human who follows up can read it rather than start over.

Numbers and channels

  • Main Line: the number on the website and on the door, forwarding into the Front Desk ring group.
  • Campaign Lines: one tracked number per significant source: paid search, vehicle signage, directory listings, print. Each carries its own Call Source Label and its own whisper message.
  • Ring groups: Front Desk (simultaneous ring across all available handsets, 20 seconds), Sales (sequential, 15 seconds per leg, ordered by closest-to-quota or simply by seniority), Owner Escalation (single destination plus mobile).
  • Whisper messages: a short spoken cue played to the staff member before the caller is connected, for example "Google Ads line, new inquiry" or "Main line, repeat caller", so the greeting is informed from the first word.
  • Call recording on all inbound and outbound calls, with the announcement played before connection and the retention period set to the client's chosen window.
  • SMS enabled on the Main Line for missed-call text-back and callback confirmations; email as the fallback channel where no mobile is present.
03

How it runs, step by step

  1. A prospect searching for the service clicks a paid ad and taps the number shown. That number is a tracked Campaign Line, not the main switchboard, so the source is known before a word is spoken.
  2. The platform matches the caller ID against existing contacts. There is no match, so a contact is created with the caller ID as the phone number, Call Source Label set to Google Ads Line, First Call Date and Last Call Date stamped, Total Inbound Calls set to 1, and tags call-inbound and call-first-time applied.
  3. A card appears in the Inbound Calls pipeline at New Call while the phone is still ringing, so a manager watching the board sees the call live.
  4. The call enters the Front Desk ring group. All available handsets ring simultaneously for 20 seconds. The whisper message "Google Ads line, new inquiry" plays to the person who answers, immediately before the caller is connected.
  5. Recording begins after the announcement. The card moves to Answered - In Conversation and is assigned to whoever picked up, which fixes ownership without anyone clicking anything.
  6. The caller wants a quote for work at their premises. The staff member opens the contact, sees it is a first-time caller from the ads line, and books a consultation from the Consultation Calendar during the call.
  7. On hanging up, the staff member submits the Call Disposition Form: Call Reason New Inquiry, outcome Answered, next action Booked. That writes Last Call Outcome, Last Call Duration Seconds, and Last Call Recording Link, and moves the card to Booked.
  8. A confirmation text and email go out within two minutes, each containing the appointment time, the address, and a reschedule link. The appointment reminder sequence takes over from there.
  9. Two days later the same person calls back from the same mobile, this time on the Main Line. The caller ID matches, so no duplicate is created: Total Inbound Calls increments to 2, call-repeat is applied, and the whisper message says "Main line, repeat caller".
  10. Nobody is free. The ring group times out at 20 seconds and the call drops to BO, who greets the caller, takes name and reason, offers a callback window, and writes a structured message into Voicemail Transcript plus Callback Promised At.
  11. The card moves to Needs Callback, callback-owed is applied, and a missed-call text goes out inside 60 seconds: a real apology, the reason, and a link to the Callback Request Form.
  12. The owner of the contact gets an internal notification containing the transcript, not just a missed-call alert, so the callback starts informed.
  13. The callback ladder runs: attempt one inside 15 minutes during opening hours, attempt two at four hours, attempt three the next working morning, each attempt incrementing Callback Attempt Count.
  14. Contact is re-established on attempt two. The staff member submits the disposition form, callback-owed is removed, the card moves on, and the whole chain (both calls, the transcript, the recordings, the booking) sits on one contact record that any colleague can read in thirty seconds.
04

Automations in detail

1. Inbound Call Capture and Routing

Trigger: inbound call received on any tracked number.

Conditions and branches: first branch on whether the caller ID matches an existing contact. Second branch on whether the current time falls inside business hours for the location. Third branch on which tracked number was dialled.

  • No contact match: create a contact from the caller ID. Set First Call Date and Last Call Date to now, Total Inbound Calls to 1, Call Source Number and Call Source Label from the dialled number, Last Call Direction to Inbound. Apply call-inbound and call-first-time.
  • Contact matched: update Last Call Date, increment Total Inbound Calls by 1, apply call-repeat, and leave First Call Date untouched.
  • Both paths: create an opportunity in Inbound Calls at New Call, named with the contact name and the source label.
  • Inside hours: route to the ring group mapped to that number: Main Line to Front Desk (simultaneous, 20 seconds), Campaign Lines to Sales (sequential, 15 seconds per leg), billing DDI to Service. Apply routed-sales, routed-service, or routed-billing to match. Play the whisper message for that number. Start recording after the announcement.
  • Outside hours: hand straight to the after-hours workflow below without ringing a handset, and apply call-after-hours.
  • Answered: move the card to Answered - In Conversation, assign it to the answering user, and set Routed To.
  • Not answered after the ring group times out: pass to BO for message capture, then hand to the missed-call workflow.

Exit: the workflow ends when the call terminates in any state. It never runs twice on the same call leg, and contacts carrying spam-suspected or wrong-number skip opportunity creation entirely.

2. Missed Call Text-Back

Trigger: call ends with outcome Missed, Abandoned, or Voicemail.

Conditions and branches: suppress entirely if the contact carries sms-opted-out, do-not-call, or spam-suspected. Suppress if Last Call Duration Seconds is under 4, which filters dial-and-hang-up noise. Suppress if a missed-call text has already been sent to this contact in the last 12 hours, so a caller who tries four times in a row gets one message rather than four. Branch on whether the number is mobile. If not, send the email variant instead.

  • Wait 60 seconds. This is deliberate: it gives a colleague the chance to catch the call on a second attempt, and a text that arrives while the phone is still ringing reads as automated.
  • Check whether a connected call with this contact has happened in the intervening minute. If yes, exit.
  • Send SMS from the Main Line: "Hi {{contact.first_name}}, this is {{location.name}} - sorry we missed your call just now. Reply here and we'll pick it up, or grab a time that suits you: {{callback_form_link}}"
  • Apply call-missed and callback-owed. Set Last Call Outcome.
  • Move the pipeline card to Needs Callback.
  • Notify the assigned user, or the Front Desk group if unassigned, with the caller name, source label, and transcript if one exists.
  • Wait 10 minutes. If the contact has replied by text, assign the conversation to the first available team member and exit.
  • Wait 2 hours. If still no two-way contact and still inside business hours, send a second, shorter message: "Still here if you need us - just reply with what you're after and we'll come back to you today."

Stop conditions: any inbound reply, any connected outbound call, removal of callback-owed, the card reaching a terminal stage, or the contact opting out. Quiet hours apply: if the next step would fire outside 08:00-20:00 in the contact's Quiet Hours Zone, hold it to the next 08:00.

3. Voicemail-to-Text Triage

Trigger: voicemail recorded, or BO completes a message capture.

Conditions and branches: branch on urgency keywords found in the transcript, then on Call Reason as captured.

  • Transcribe the recording and write the result into Voicemail Transcript. Store the audio link in Last Call Recording Link.
  • Apply call-voicemail.
  • Urgent branch: transcript contains any of: emergency, urgent, leaking, no heat, no power, cancel, complaint, attorney, lawyer, refund. Apply routed-owner, notify the owner by SMS immediately regardless of quiet hours, and move the card to Transferred - Awaiting Outcome. Internal text: "Urgent voicemail from {{contact.full_name}} on {{contact.phone}}. Transcript: {{custom_values.voicemail_transcript}}"
  • New Inquiry branch: apply routed-sales, create the task "Call back new inquiry - {{contact.full_name}}" due in 1 hour, and move the card to Needs Callback.
  • Billing branch: apply routed-billing, assign to the service inbox, due in 4 hours.
  • Supplier, Recruitment, or Other: email the transcript to the shared inbox, move the card to Resolved - No Further Action, and create no task. These should never consume callback capacity.
  • All non-urgent paths: wait 5 minutes, then email the assigned user the full transcript with a one-click link to the contact.

Exit: on transcript delivery and task creation. If transcription fails, the workflow still notifies with the audio link and a note that no transcript is available, so a failed transcription never silently swallows a lead.

4. After-Hours and Overflow Handling

Trigger: inbound call arrives outside business hours, on a public holiday, or during a declared overflow window.

Conditions and branches: branch on holiday calendar, then on whether the caller chooses a callback slot or a message.

  • Play the after-hours greeting, which states the real opening hours rather than "we are currently closed".
  • Hand to BO. BO opens with: "Thanks for calling {{location.name}}. The team's back at {{opening_time}} tomorrow. I can either book you a call with someone then, or take a message - which would you prefer?"
  • Booking path: BO offers the next three open slots on the Consultation Calendar, books the chosen one, and sends an immediate confirmation by SMS and email. Move the card to Booked.
  • Message path: BO captures name, number, reason, and urgency into the custom fields, then writes Callback Promised At as the next working-day opening time. Move the card to Needs Callback and apply callback-owed.
  • Urgency check: if the caller describes an emergency, BO stops message-taking, states that the on-call number is being used, and triggers the owner escalation path from workflow 3.
  • Wait until 08:30 on the next working day, then send: "Morning {{contact.first_name}} - we picked up your message from last night. Someone will call you before {{promised_time}}."
  • Create a task for the opening-shift owner, due at opening plus 30 minutes, listing every overnight message in priority order.

Stop conditions: the caller hangs up before capture, in which case the missed-call workflow takes over; or the caller books, which ends the message path.

5. Callback Ladder

Trigger: tag callback-owed applied.

Conditions and branches: every step is gated on business hours, on quiet hours in the contact's zone, and on Callback Attempt Count being under 3. If Callback Promised At is set, the first attempt is scheduled to land before that time rather than on the default delay.

  • Wait 15 minutes. Create task "Callback attempt 1 - {{contact.full_name}} - {{custom_values.call_reason}}" assigned to the contact owner, due in 30 minutes.
  • Check for a connected outbound call. If one exists, increment Callback Attempt Count and exit the ladder.
  • Wait 4 hours. Increment Callback Attempt Count. Create task "Callback attempt 2". Send SMS: "Tried to reach you, {{contact.first_name}} - what's the best time today? Reply with a window and we'll call then."
  • Wait until the next business morning at 09:15. Increment Callback Attempt Count. Create task "Callback attempt 3 - final". Move the card to Callback Attempted.
  • Wait 2 hours. If still no contact, send the closing message: "We haven't managed to catch you, so we'll stop calling. Whenever you're ready, book a time here: {{calendar_link}} - or just reply to this message."
  • Remove callback-owed, move the card to Resolved - No Further Action, and add the contact to the long-cycle nurture list rather than deleting the record.

Stop conditions: any inbound call or reply, any connected outbound call, a booking created, do-not-call or sms-opted-out applied, or the card moved to Spam or Wrong Number. Three attempts is the ceiling by design: past that the calls annoy more people than they recover.

6. Disposition Capture and Pipeline Sync

Trigger: Call Disposition Form submitted.

Conditions and branches: branch on the selected next action.

  • Write Call Reason, Last Call Outcome, Last Call Duration Seconds, Routed To, and the free-text note onto the contact. Append the note to the timeline rather than overwriting it.
  • Next action Booked: move the card to Booked, remove callback-owed, and hand to the appointment reminder sequence.
  • Next action Quote to send: move to Qualified - Booking Needed, create task "Send quote" due in 24 hours, and send the caller: "Good speaking with you, {{contact.first_name}}. Your quote will be with you by {{due_date}}."
  • Next action Transfer: move to Transferred - Awaiting Outcome, require the Transfer Handoff Form, and notify the receiving user with its contents.
  • Next action Nothing needed: move to Resolved - No Further Action and clear callback-owed.
  • Next action Spam: apply spam-suspected, move to Spam or Wrong Number, and suppress the contact from every outbound workflow.
  • If no disposition is submitted within 2 hours of a call ending with outcome Answered, notify the answering user once: "Call with {{contact.full_name}} has no disposition. 20 seconds here keeps the board honest: {{form_link}}"

Exit: on form submission, or on the single nudge. The nudge never repeats. A second reminder trains people to ignore the first.

7. Call Recording QA Sampling

Trigger: scheduled, every Monday at 07:00.

Conditions and branches: select answered inbound calls from the previous week with Last Call Duration Seconds above 45 and without qa-sampled. Branch on team member so the sample is spread rather than clustered.

  • Select up to three calls per team member, weighted toward calls where the card did not progress past Answered - In Conversation: those are where coaching pays.
  • Apply qa-sampled to each so the same call is never reviewed twice.
  • Create a review task for the manager per call, due Wednesday, with the recording link and the contact timeline attached.
  • Wait until Thursday 09:00. If any review task is still open, send one reminder to the manager listing only the outstanding ones.
  • On review completion, write the score and notes to the call record and, where the reviewer marks a coaching point, create a follow-up task against the team member for the next one-to-one.

Exit: when all sampled reviews are complete or the following Monday arrives, whichever is first. Unreviewed calls are not carried forward; a backlog of QA tasks is worse than a smaller honest sample.

8. Weekly Call Performance Digest

Trigger: scheduled, every Monday at 08:00, covering the previous seven days.

Conditions and branches: send only if at least one inbound call was logged in the period, so quiet weeks do not produce an empty email that teaches the owner to filter the digest away.

  • Compile total inbound calls, answered count, missed count, answer rate, average ring time to pickup, calls by Call Source Label, voicemails left, missed-call texts sent, replies to those texts, callbacks completed within the promised window, and bookings created from calls.
  • Compile the exception list: cards sitting in Needs Callback for more than 24 business hours, cards in Transferred - Awaiting Outcome for more than 48, and answered calls with no disposition.
  • Email the owner and the manager. Subject: "Calls last week: {{answer_rate}} answered, {{callback_overdue_count}} callbacks overdue".
  • Wait 10 minutes, then create one task per exception-list item, assigned to the relevant owner and due that day.
  • Branch: if answer rate fell below the client's threshold, add a line naming the hours in which misses clustered, which is usually the real finding: lunch cover, or the first hour after opening.

Exit: on send and task creation. The digest reports measured platform data only; it draws no conclusions the numbers do not support.

05

What changes

The phone stops being a black box. Every call (answered, missed, abandoned, or after-hours) leaves a contact record, a pipeline card, a recording, and in most cases a transcript. A missed call is no longer a lost call, because within sixty seconds the caller has a text acknowledging it and a route back in, and within fifteen minutes someone has a task to call them. The callback that was promised on a Tuesday afternoon now has a time stamp and a workflow enforcing it.

Staff answer informed. The whisper message tells them which line called and whether the caller is new, and the contact record tells them what was said last time. Handoffs stop losing information because the handoff is a form, not a shout across the office. Managers get a board rather than a feeling, and the first week of recordings usually settles two or three arguments about what the team actually says on the phone.

Reporting finally includes the channel that produces the best conversations. Because every tracked number carries a source label, calls can be attributed alongside form fills, and spend decisions stop being made on half the data.

Metrics to watch

  • Answer rate: connected inbound calls as a share of all inbound calls, broken out by hour of day and by day of week. The hourly view is what exposes cover gaps.
  • Average ring time to pickup: seconds from connection to answer.
  • Missed-call recovery rate: share of missed calls that produce a reply, a connected callback, or a booking within 24 hours.
  • Callback promise adherence: share of callbacks completed before Callback Promised At.
  • Calls to booking rate: bookings created from calls, divided by calls dispositioned as New Inquiry.
  • Calls by source label: volume and booking rate per tracked number.
  • Disposition completion rate: answered calls with a submitted disposition form. Below roughly nine in ten, the rest of the reporting is unreliable.
  • Repeat caller share: contacts with Total Inbound Calls above one, which indicates either loyalty or unresolved first calls, and is worth splitting.
  • Voicemail-to-contact time: minutes from voicemail left to connected human call.
  • Spam share: calls dispositioned as spam, by source number. A campaign line with a high spam share is usually a scraped listing.
06

Before you start

Prerequisites

  • A decision on who answers what. Ring groups encode an org chart; if the client has not agreed who takes new inquiries versus billing, the build stalls here rather than in configuration.
  • Real opening hours per location, plus the holiday calendar for the next twelve months, plus a declared on-call path for genuine emergencies if the business has them.
  • A list of every number currently in public circulation: website, directory listings, vehicles, print, signage, email footers. Each one that matters becomes a tracked line, and the ones that do not matter should be retired rather than forwarded.
  • Agreement on recording retention: how long audio and transcripts are kept, and who may listen to them.
  • Named owners for the Needs Callback and Transferred - Awaiting Outcome stages. An unowned stage is where cards go to die.

Integrations

  • Google Calendar or Outlook two-way sync for every person on the Consultation and Escalation calendars, so BO never offers a slot that is already taken.
  • Existing phone system decisions: either port the main number onto the platform, or forward it in. Forwarding is faster to launch but costs you the caller ID on some carriers, which breaks contact matching: check this before committing.
  • Desk handsets or softphones for anyone in a ring group, with a tested audio path on the client's actual network, not the consultant's.
  • Slack or Teams for internal urgent notifications if the client lives there rather than in email.
  • Optional: Zapier or Make for pushing call outcomes into a legacy system the client will not retire.

Number provisioning and messaging compliance

  • Provision numbers in the correct area codes and complete carrier registration before launch. In the US, A2P 10DLC brand and campaign registration is required for the missed-call text-back and every other SMS step; expect the approval to take days, not minutes, and start it on day one of the build. Unregistered traffic gets filtered silently, which looks exactly like a workflow that does not fire.
  • Register the campaign use case honestly as customer care and conversational messaging, with sample message copy matching what you actually send.
  • Call recording announcements must play before recording starts, on both inbound and outbound legs. Several US states require all-party consent; the announcement is what gets you there.
  • Implement opt-out handling on every SMS path: STOP, UNSUBSCRIBE, QUIT and the usual variants must apply sms-opted-out and suppress every text workflow immediately, with a single confirmation reply and nothing after it.
  • Set quiet hours at 08:00-20:00 in the contact's own time zone, held in Quiet Hours Zone, with the urgent-escalation path as the only documented exception.
  • Honor do-not-call as an absolute suppression across calls, texts, and emails, and make it a one-click action from the contact record so staff actually use it.

Data protection

  • Call recordings and transcripts are personal data and frequently contain more than the caller intended to share. Agree a retention period, restrict who can play recordings, and make sure deletion requests actually remove the audio and not only the contact record.
  • If the business operates in a regulated sector (health, finance, legal) the transcript fields can accumulate information that carries specific handling obligations. Scope what BO is allowed to ask for accordingly, and keep sensitive detail out of fields that appear in digest emails.
  • Where callers may be in the UK or EU, document the lawful basis for recording and for automated follow-up, and make the privacy notice reachable from the number's greeting or the website page carrying it.

None of the above is legal advice. Telecoms consent, recording, and messaging rules vary by jurisdiction and change often. Confirm the specifics with the client's own counsel before launch, and get the retention period and consent language signed off in writing.

Scoping, number counts, and configuration depth vary per business. Book a call at bookings.appbo.io to work through yours.

Field notes

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