Back to the build library
Home services
Standard

On-Site Estimate Scheduling

Book the estimate visit against travel time and territory, so the calendar fills in geographic order instead of scattering trucks across the map.

Industry
Home services
Build effort
Standard
Typical time to launch
2–4 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

A booking tool that shows open slots will cheerfully put a 9am estimate on the north edge of the service area and a 10am estimate forty minutes south. The slots were open, so the software said yes. The technician spends the morning driving, arrives late to the second appointment, and the third gets pushed. By mid-afternoon the office is making apology calls for a day that was broken before it started - and the booking tool will do exactly the same thing tomorrow.

The cost is not abstract. Windshield time is the single largest hidden expense in a home services business and it is almost never measured. A technician doing four estimates a day with scattered routing may spend more of the day driving than estimating, which means the business is paying wages and fuel to produce fewer priced jobs than the same person could produce with the same hours and better geography. Add the no-show rate - homeowners who booked a free estimate three weeks out and forgot, or who were never really going to be home - and a meaningful share of every week's capacity is spent on nothing.

There is a second failure underneath the first. The estimate visit gets booked before anyone has checked whether it needs to happen at all. A roof replacement needs eyes on site. A straight water heater swap often does not, if the homeowner can send three photos and the data plate. Businesses that book every inquiry into a truck visit are rationing their scarcest resource by whoever asked first rather than by whoever actually needs it. This build makes the calendar respect geography, makes the homeowner confirm they will be there, and filters out the visits that a photo could have replaced.

02

What gets built

Pipeline and stages

One pipeline, Estimate Visits. The stages are built around the two things that actually go wrong: the visit not being needed, and the homeowner not being there.

  • Visit Requested - scope is known, nobody has decided yet whether a truck is required.
  • Remote Assessment - photos requested in place of a visit. A real stage, not a holding pen.
  • Territory Matched - the job address has been resolved to a territory and an estimator.
  • Slot Offered - two or three specific windows have been sent and the homeowner has not picked yet.
  • Visit Booked - appointment on the calendar, confirmation sent.
  • Confirmed by Customer - the homeowner has actively re-confirmed inside the 24-hour window. This distinction is the whole no-show defense.
  • Visit Complete - estimator has marked the visit done and logged findings.
  • No-Show - nobody was home. Tracked separately so the pattern is visible.
  • Canceled by Customer, Rescheduled - both reached without destroying the original record.

Calendars

This is where the build earns its keep. Do not use one shared calendar.

  • Estimates - North, Estimates - South, Estimates - Central (name them for the real territories). One calendar per territory, each assigned only the estimators who cover it. Appointment length 60 minutes with a 30-minute buffer after, which is the travel allowance, not slack.
  • Day-of-week territory rules. Each territory calendar only opens availability on its days - North on Monday and Thursday, South on Tuesday and Friday, Central on Wednesday, for example. This single setting does most of the route optimization for free, because every booking on a given day is already in one territory.
  • Slot granularity: offer arrival windows, not times. Configure slots as 8-10am, 10am-12pm, 1-3pm and 3-5pm. A two-hour window the business can hit beats a 9:15am promise it cannot.
  • Daily cap of four estimate slots per estimator per day, with the last window of the day left closed on the calendar and opened manually only for same-territory overflow.
  • Remote Assessment Review - a 20-minute internal-only calendar for the estimator to price photo submissions in a batch rather than between drives.

Custom fields

  • job_address and job_ZIP code - separate fields. The ZIP code is what every territory rule reads.
  • territory - single select: North, South, Central, Edge-of-area. Written by the territory matcher, never typed by hand.
  • visit_required - single select: Yes - complex, Yes - customer insists, No - photos sufficient, Undecided.
  • visit_reason - text. Why a truck is going. Forces the decision to be explicit.
  • assigned_estimator - user reference.
  • arrival_window - text, e.g. "Tue 14 Oct, 10am-12pm".
  • access_notes - long text: gate codes, dogs, parking, which door, where the shut-off is.
  • decision_maker_present - checkbox. Whether whoever can authorize the work will actually be there.
  • confirmed_by_customer_at - datetime. Written only on an active re-confirmation.
  • reschedule_count - number. Two reschedules is a pattern worth seeing.
  • noshow_count - number, lifetime, on the contact.
  • photos_received - number, shared with the quote-request build if both are live.
  • visit_outcome - single select: Priced on site, Needs follow-up, Out of scope, No access, Customer not home.

Tags

  • estimate-visit, remote-assessment - which path the lead is on.
  • territory-north, territory-south, territory-central, territory-edge.
  • awaiting-slot-choice - offered windows, no answer yet.
  • confirmed-24h - the homeowner re-confirmed. Absence of this tag is what triggers the escalation.
  • noshow-risk - applied on a second unconfirmed appointment or after one prior no-show.
  • repeat-noshow - two or more lifetime no-shows. Changes how the business books them.
  • access-notes-missing, decision-maker-absent - both reduce the value of the visit and both should be chased before the truck moves.
  • sms-opted-out - checked as an exit on every outbound workflow.

Forms

  • Estimate Visit Request - job address, what needs estimating, who will be home, best days. Six fields maximum.
  • Remote Assessment Upload - a mobile-first page asking for specific shots, named individually: the whole unit, the data plate or model label, the connections, and a wide shot of the space around it. Named shots get usable photos; "upload photos" gets a blurry corner of a wall.
  • Access and Arrival Details - sent after booking: gate code, dog on site, where to park, which door, who will meet the estimator. Writes to access_notes and decision_maker_present.
  • Visit Outcome - an internal form the estimator submits from their phone on site, writing visit_outcome and triggering what happens next.

BO's role and guardrails

BO runs the booking conversation and the confirmation chase. BO does not decide whether a visit is needed on complex work, and does not touch pricing.

  • BO applies the remote-assessment rule mechanically: for the service types the business has listed as photo-assessable, BO offers the photo route first, framed as faster for the homeowner, not cheaper for the business - "I can usually get you a figure same day from photos instead of waiting for a visit. Want to try that first?"
  • If the homeowner asks for a visit anyway, BO books it and sets visit_required to Yes - customer insists. The homeowner always wins that argument.
  • BO never offers a slot outside the matched territory's days, even when the homeowner pushes. It escalates to a human instead, who can make the business decision to break the route.
  • BO never offers a precise arrival time. Windows only.
  • BO always asks whether the person who can approve the work will be there, and says why.
  • BO never states prices, fees or whether an estimate is free or chargeable - that line is set by the business and lives in the confirmation template, not in BO's judgment.
  • BO hands to a human on: a third reschedule, any complaint, any request for a specific named estimator, or anything involving an insurance claim.

Numbers and channels

  • One local business number for all homeowner SMS, registered for application-to-person messaging.
  • A separate dispatch number, or a distinct caller ID, for estimator-to-homeowner calls on the day, so the homeowner recognizes the ring.
  • Inbound call routing on the main line: during business hours to the office, outside hours into a menu that can book an estimate visit through voice and drop the result into Visit Requested.
  • Email on an authenticated sending domain for confirmations and calendar invites, with .ics attachments so the appointment lands in the homeowner's own calendar.
03

How it runs, step by step

One homeowner wanting a roof assessed, from inquiry to a priced job - and the route that stayed intact around them.

  1. The request arrives. A homeowner submits Estimate Visit Request: roof, a south-side address, "missing shingles after the storm", available most afternoons. The contact is created, tagged estimate-visit, and an opportunity opens in Estimate Visits at Visit Requested.
  2. The visit-needed test runs. Roofing is on the business's must-visit list, so visit_required is set to Yes - complex and visit_reason is written as "storm damage, roof, requires inspection". Had this been a water heater, BO would have offered the photo route first and the opportunity would have gone to Remote Assessment instead.
  3. Territory matching. job_ZIP code is checked against the territory table. It resolves to South, so territory is set, territory-south is applied, and assigned_estimator is set to whoever covers South. The opportunity moves to Territory Matched.
  4. Slots are offered - only South days. BO sends the next three open windows from Estimates - South, which only opens Tuesdays and Fridays: "Tue 14th 1-3pm, Fri 17th 10am-12pm, or Fri 17th 1-3pm." The homeowner said afternoons, so afternoon windows lead. The opportunity moves to Slot Offered and awaiting-slot-choice is applied.
  5. The homeowner picks. They reply "Tuesday afternoon". BO books the 1-3pm window on Estimates - South, writes arrival_window, moves to Visit Booked, and removes awaiting-slot-choice. The 30-minute buffer after the slot is reserved automatically - the next bookable window on that calendar is 3pm, not 3pm-minus-travel.
  6. Confirmation and calendar invite. An SMS confirms the window, names the estimator, and says what will happen on the visit. An email carries the same plus an .ics attachment so it lands in the homeowner's own calendar, which is where forgetting actually happens.
  7. Access details collected. BO sends the Access and Arrival Details form. The homeowner notes a side gate with a code and a dog in the yard, and confirms they will be home. access_notes is populated and decision_maker_present is ticked.
  8. Three days out - the reminder. A text restates the window and asks one useful question rather than just repeating itself: "Still good for Tue 1-3pm? Reply Y to lock it in or R to move it."
  9. 24 hours out - the re-confirmation. A text asks for an active Y. The homeowner replies Y, confirmed_by_customer_at is stamped, confirmed-24h is applied, and the opportunity moves to Confirmed by Customer. Had no Y arrived, the escalation path would have run: a second text, then a call from the office, then - still unconfirmed by 5pm - the slot released back to the calendar and offered to the next South lead waiting.
  10. Morning of - the day sheet. At 7am the estimator gets a single message with their four South appointments in window order, each with address, access_notes, the homeowner's words, and a map link. No calling the office to ask where they are going.
  11. On the way. When the estimator marks the previous job complete, an automatic text goes to the next homeowner: "On our way, roughly 25 minutes out." This is the message that prevents the homeowner from stepping out to the shops at the worst moment.
  12. The visit. The estimator inspects the roof, photographs the damage, and submits the Visit Outcome form from their phone: visit_outcome set to Priced on site, with notes and photos attached. The opportunity moves to Visit Complete.
  13. Same-day follow-through. Because the outcome was Priced on site, the estimate goes out within the hour while the conversation is still fresh, and the record hands cleanly to whatever quoting or job-management system the business uses.
  14. The alternative outcome. Had the estimator submitted Customer not home, the opportunity would move to No-Show, noshow_count would increment, and the no-show recovery workflow would offer one re-book - with the business's own policy on repeat no-shows applied, not improvised on the phone.
04

Automations in detail

Eight workflows. The territory matcher must be built first - everything downstream reads the field it writes.

1. Visit Triage and Territory Match

Trigger: opportunity created in Estimate Visits, or tag estimate-visit applied.

Conditions: requires job_ZIP code. If it is empty, BO asks for it before anything else runs.

  1. Look job_ZIP code up against the territory table and write territory. Apply the matching territory tag.
  2. Branch - no match. Set territory to Edge-of-area, apply territory-edge, and notify the office rather than BO. A human decides whether to travel. Send - "Thanks {{first_name}} - {{job_ZIP code}} sits right on the edge of our patch. Someone from the office will confirm within the hour whether we can get out to you."
  3. Set assigned_estimator from the territory's owner, or round-robin where a territory has two.
  4. Branch on service_type. If it appears on the business's photo-assessable list, set visit_required to Undecided and run workflow 2. Otherwise set visit_required to Yes - complex, write visit_reason, and continue to step 5.
  5. Move the opportunity to Territory Matched and hand to workflow 3.

Exit: territory written and the next workflow started, or escalation raised for an edge ZIP code.

2. Remote Assessment Offer

Trigger: visit_required set to Undecided.

Conditions: exit if the homeowner has already asked explicitly for someone to come out.

  1. Send SMS - "Hi {{first_name}}, for a {{service_type}} like yours I can usually get you a real figure the same day from a few photos, instead of booking a visit next week. Want to try photos first? Reply PHOTOS, or VISIT if you would rather we came out."
  2. Reply PHOTOS: move to Remote Assessment, apply remote-assessment, set visit_required to No - photos sufficient, and send the Remote Assessment Upload link naming each shot required.
  3. Reply VISIT, or anything ambiguous: set visit_required to Yes - customer insists, write visit_reason as "customer preference", and continue to workflow 3. Do not argue, do not re-ask.
  4. Wait 4 hours after the photo link is sent. If photos_received is 0, send - "Still waiting on those photos, {{first_name}}. Here is the link again: {{upload_link}}. Or say VISIT and I will get someone out."
  5. Wait 1 day. If photos_received is still 0, switch the path: set visit_required to Yes - customer insists and hand to workflow 3. Never let a lead rot in the photo path.
  6. When photos_received is 3 or more, book the estimator into the next Remote Assessment Review slot and notify them.

Exit: photos sufficient and review booked, or path switched to a visit, or opt-out.

3. Slot Offer and Booking

Trigger: opportunity reaches Territory Matched with visit_required set to either Yes value.

Conditions: only pull availability from the calendar matching territory. This is the rule the whole build rests on - never query a shared calendar here.

  1. Fetch the next three open arrival windows from the matched territory calendar, preferring windows that match any stated day or time preference.
  2. Send SMS - "Hi {{first_name}}, I can get an estimator to {{job_address}} in one of these windows: {{slot_1}}, {{slot_2}} or {{slot_3}}. Reply 1, 2 or 3, or MORE for other options." Move to Slot Offered, apply awaiting-slot-choice.
  3. Reply MORE: send the booking link scoped to the territory calendar so the homeowner self-serves without ever seeing an out-of-territory day.
  4. Request for a day the territory is not open: do not accept it. Send - "We are usually in your area on {{territory_days}}, which is how we keep arrival windows tight. Closest I have is {{nearest_slot}} - does that work, or shall I have the office call you?" Escalate to a human if refused twice.
  5. On slot selection: create the appointment on the territory calendar, write arrival_window, remove awaiting-slot-choice, move to Visit Booked.
  6. Wait 4 hours after the offer. If still awaiting-slot-choice, resend once with the same three windows and a note that they may have been taken.
  7. Wait 1 day. If still unchosen, notify the office to call. Do not send a third text.

Exit: appointment booked, escalation raised, or opt-out.

4. Booking Confirmation and Access Capture

Trigger: opportunity moves to Visit Booked.

  1. Send SMS immediately - "Booked: {{arrival_window}} at {{job_address}}. {{estimator_first_name}} will be out to you. They will need about 45 minutes and access to {{access_point}}."
  2. Send email with the same detail plus an .ics calendar attachment and a short note on what the visit covers.
  3. Wait 10 minutes. Send the Access and Arrival Details form link - "Two quick things so {{estimator_first_name}} is not stuck at a locked gate: {{access_form_link}}."
  4. Wait 1 day. If access_notes is empty, apply access-notes-missing and send one reminder.
  5. If decision_maker_present is false, apply decision-maker-absent and send - "One thing worth flagging: if whoever signs off on the work is not there, we can still take a look but we cannot get you a decision on the day. Worth moving it?"
  6. Wait 2 days. If access-notes-missing persists, notify the assigned estimator so they can call the homeowner themselves.

Exit: access captured, or appointment canceled or rescheduled.

5. Reminder Ladder and Active Re-Confirmation

Trigger: appointment exists on a territory calendar.

Conditions: all sends respect quiet hours of 8am to 9pm local. Exit on cancellation, reschedule or opt-out.

  1. 3 days before the window: send SMS - "Reminder: {{estimator_first_name}} is booked for {{arrival_window}} at {{job_address}}. Reply Y to confirm or R to move it."
  2. 24 hours before: send SMS - "Tomorrow, {{arrival_window}}. Reply Y and I will lock the slot - if we do not hear back we may release it to someone else on the waiting list." This is a real policy, not a bluff, so only use the line if the business will honor it.
  3. On Y: stamp confirmed_by_customer_at, apply confirmed-24h, move to Confirmed by Customer, and exit the ladder.
  4. On R: hand to workflow 7.
  5. Wait 4 hours after the 24-hour message. If confirmed-24h is absent, apply noshow-risk and send one more - "Still need a quick Y for tomorrow, {{first_name}}."
  6. Wait 2 hours. If still unconfirmed, place an outbound call task to the office with the contact and appointment attached.
  7. At 5pm the day before, if still unconfirmed and noshow_count is 1 or more, release the slot back to the calendar, move the opportunity to Rescheduled, and offer the window to the next awaiting-slot-choice lead in the same territory.
  8. 2 hours before the window opens: send - "{{estimator_first_name}} is on the schedule for your {{arrival_window}} window today. They will text when they are on the way."

Exit: confirmed, released, rescheduled, canceled or opt-out.

6. Day Sheet and On-My-Way

Trigger A: 7am daily, per estimator with appointments today.

  1. Assemble today's appointments in window order and send the estimator one message: each address, arrival_window, service_type, access_notes, decision_maker_present flag, the homeowner's own description, and a map link. Flag any appointment lacking confirmed-24h so they can call first instead of driving blind.
  2. Send the office the same list plus a count of unconfirmed appointments.

Trigger B: estimator marks an appointment complete, or taps an On My Way action.

  1. Identify the next appointment in that estimator's day.
  2. Send that homeowner SMS from the dispatch number - "{{estimator_first_name}} from {{business_name}} is on the way to you now, roughly {{eta_minutes}} minutes out."
  3. If the current time has passed the end of the next homeowner's arrival window, send instead - "Running behind today, {{first_name}} - {{estimator_first_name}} is now about {{eta_minutes}} minutes out. Apologies for the wait. Reply R if that no longer works and we will rebook." Honesty here prevents a review problem later.
  4. Notify the office whenever an estimator's day slips more than 60 minutes behind, so the last appointment of the day can be moved before the homeowner is kept waiting.

Exit: end of day, or no further appointments.

7. Reschedule Handling

Trigger: inbound reply R, or any message matching reschedule, move, change, cannot make, postpone.

  1. Increment reschedule_count. Move the opportunity to Rescheduled and release the original slot immediately so it is bookable again within seconds.
  2. Offer the next three windows from the same territory calendar. A reschedule is the most common way routes get broken, so the territory rule holds here too.
  3. On selection, rebook, write the new arrival_window, move back to Visit Booked, and restart workflow 5 from the top.
  4. If reschedule_count reaches 2, notify the office and send - "No problem at all. Because we have moved this a couple of times, {{office_contact}} will give you a quick call to find a window that definitely works."
  5. If reschedule_count reaches 3, stop BO on this contact entirely. A human books it or decides not to.

Exit: rebooked, escalated to a human, or canceled.

8. No-Show Recovery and Pattern Tracking

Trigger: Visit Outcome form submitted with visit_outcome of Customer not home or No access.

  1. Move the opportunity to No-Show. Increment noshow_count on the contact. Record which it was - not home, or no access - because they have different fixes.
  2. Wait 30 minutes, so the message does not arrive while the estimator is still outside. Send SMS - "Hi {{first_name}}, {{estimator_first_name}} was at {{job_address}} for your {{arrival_window}} window but could not get {{noshow_detail}}. No hard feelings - want to pick another window? {{booking_link}}"
  3. Wait 1 day. On no reply, send email with the same offer and one line on why windows matter: the slot could have gone to another customer.
  4. Wait 3 days. On no reply, move to Canceled by Customer and apply the cold-revive tag.
  5. If noshow_count reaches 2, apply repeat-noshow. Future bookings for this contact require a same-day confirmation call from the office before the estimator is dispatched - set as a task, not a message, so a human owns it.
  6. Weekly, compile no-shows by territory, by day of week, by arrival window and by whether confirmed-24h was present. The confirmed-versus-unconfirmed comparison is the number that justifies the whole reminder ladder.

Exit: rebooked, canceled, or opt-out.

05

What changes

The day stops being a map with pins scattered across it. Because each territory calendar only opens on its own days, every booking taken on a Tuesday is already a South job, and the route is roughly right before anyone thinks about it. The 30-minute buffer after each slot is the travel allowance, so the calendar can no longer sell a window the business cannot physically reach.

Capacity that was going to no-shows comes back. The active re-confirmation turns a passive reminder into a yes or a released slot, and a released slot is offered to someone who is waiting instead of being driven to. Equally important, the no-show is now a stage with a count attached, so the business finds out that - for example - unconfirmed Friday afternoons are where its losses live, rather than carrying a vague sense that people are unreliable.

The remote assessment path changes the shape of the week. Jobs that only ever needed three photos and a data plate stop consuming a two-hour window plus travel, which frees the estimator for the work where being on site actually changes the price. And because access notes and decision-maker presence are captured before the visit, the estimator stops losing appointments to locked gates and to homeowners who cannot authorize anything.

Metrics to watch

  • Estimates completed per estimator per day - the headline productivity number. Watch it against the territory-day rules going live; this is where improvement should show first.
  • Average travel minutes between consecutive appointments, by day. If this does not fall after territory days are enforced, the territory boundaries are drawn wrong.
  • No-show rate split by whether confirmed-24h was present. The gap between those two numbers is the value of the reminder ladder, stated plainly enough to defend.
  • Re-confirmation rate - share of appointments reaching Confirmed by Customer. Below about two-thirds and the 24-hour message copy or timing needs work.
  • Remote assessment take-up - share of photo-assessable inquiries that accept the photo route, and the share of those that end up needing a visit anyway. The second number tells you whether the photo-assessable list is honest.
  • Slot-offer to booking conversion, and time from offer to selection. Slow selection usually means too many options, not too few.
  • Reschedule rate and reschedule_count distribution. A cluster at two or three points at a booking-window problem rather than flaky customers.
  • Released slots refilled - how often a released window gets taken by another lead. This is recovered capacity and worth reporting on its own.
  • Visit outcome mix - Priced on site versus Needs follow-up versus No access. Rising No access means the access form is not being completed or not being read.
  • Visit Complete to won-work conversion, segmented by decision_maker_present. The difference usually justifies insisting on it.
06

Before you start

Prerequisites

  • A real territory map. Write every serviced ZIP code or zip into a table and assign each to exactly one territory. This is the single largest piece of preparation and the build cannot start without it. Allow for an explicit Edge-of-area bucket rather than forcing marginal ZIP codes into a territory.
  • Agreed territory days. Someone has to decide that North is Monday and Thursday. This is a commercial decision with real consequences - a homeowner who wants Wednesday will be told no - and the owner must make it, not the builder.
  • An honest photo-assessable list. Which service types can genuinely be priced from photos, written down. Over-claiming here produces re-visits and erodes trust in the whole system.
  • Realistic appointment and buffer durations measured from actual jobs, not from hope. If estimates really take 75 minutes, configure 75, or every day will run late by design.
  • Estimators on smartphones able to submit the Visit Outcome form on site. Without that, the pipeline goes stale by lunchtime and the on-my-way message never fires.
  • A written policy on repeat no-shows and on whether estimates are chargeable, so the templates state the business's actual position rather than a guess.

Integrations

  • Google Calendar two-way sync on every territory calendar, so an estimator's own commitments block platform availability and the platform's bookings show on their phone.
  • A maps provider for address validation and the map links in the day sheet. Validating the address at capture prevents the most expensive failure in this build: a truck sent to a mistyped street.
  • Google Business Profile messaging routed into the same inbox, so a booking request from the map listing enters the same pipeline.
  • Email sending domain authenticated with SPF, DKIM and DMARC so confirmations and .ics invites are delivered rather than filtered.
  • Optionally, a connector such as Zapier or Make to push Visit Complete opportunities into an existing field-service management or quoting system. Keep scheduling in one place, though - two calendars of record will double-book within a week.

Number provisioning

  • Provision a local business number for all homeowner messaging, plus either a second number or a distinct caller ID for the dispatch and on-my-way traffic.
  • Complete brand and campaign registration for application-to-person messaging - 10DLC in the United States, or the equivalent sender registration elsewhere. Expect approval to take a week or more and treat it as a gating item, not an afterthought. Appointment reminders are high-volume traffic and unregistered sends are silently filtered, which looks exactly like homeowners ignoring you.
  • Register the campaign as appointment reminders and customer care, with sample messages matching the reminder copy above and an opt-in description matching the booking form's actual consent language.
  • If the after-hours voice menu will book visits, verify voice on the main number and configure the fallback so an unanswered or abandoned call still creates a Visit Requested record with the caller's number.

Compliance

  • Consent. The booking form needs explicit, unbundled language that booking an appointment means the business may send appointment-related texts and calls to the number given. Appointment reminders are transactional and generally better tolerated than marketing, but they still need consent and they still need an opt-out path.
  • Opt-out handling. STOP, STOPALL, UNSUBSCRIBE, END, QUIT and CANCEL must apply sms-opted-out and halt every workflow above. Note the awkward edge case: a homeowner who opts out still has an appointment booked. Route those to a phone-call task for the office rather than dropping them silently, and decide in advance whether a no-reminder appointment should be held at all.
  • Quiet hours. 8am to 9pm in the contact's timezone as a floor, narrowed wherever local rules are stricter. Day-before reminders should land in the early evening, not at 8:55pm. Check Sunday and public-holiday restrictions for every region in the service area.
  • Data protection. access_notes will contain gate codes, alarm details and notes about who is home when. That is sensitive information about a physical property. Restrict who can read it, decide how long it is retained after the visit, and avoid copying it into third-party systems that the business cannot purge on request.
  • Recording. If the after-hours voice menu or dispatch calls are recorded, announce it and check one-party versus all-party consent in every jurisdiction served.
  • None of this is legal advice. Messaging, calling and privacy rules differ by jurisdiction and change - have the client's own counsel review consent wording, the access-notes retention policy and any call recording before launch.

Scoping the build

Effort scales with the number of territories, the number of estimators, and whether an existing calendar system has to stay in play. Book a call at bookings.appbo.io to scope it against the real service area.

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