1 Dashboard
2 Calendar
3 Detail
4 Book New
5 Self-Book
6 Dispatch
7 Availability
8 History
Today’s Appointments
9:41
Appointments
5
Today
18
This Week
2
Pending
Today
This Week
Month
8:00 AM – 9:30 AM
1.5 hrs · Estimate
Confirmed
SM
Sarah Mitchell
Water Heater Estimate
412 Oak St, Akron, OH
Navigate
Call
Text
10:00 AM – 12:00 PM
2 hrs · Service
In Progress
JR
James Rodriguez
HVAC Repair — Unit 2
89 Maple Dr, Cuyahoga Falls
Navigate
Call
Text
1:30 PM – 2:30 PM
1 hr · Follow-Up
Pending
LC
Linda Chen
Roof Inspection Follow-Up
1020 Summit Blvd, Akron, OH
Confirm
Call
Reschedule

AppointmentsDashboard with tab-filtered lists and quick-action chips

useQuery(api.appointments.listByDate) · useAppointmentActions()


Month Calendar + Day Drawer
9:41
Calendar
February 2026
Sun Mon Tue Wed Thu Fri Sat
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Estimate
Service
Follow-Up
Consult
Monday, Feb 24 — 3 Appointments
SM
8:00 – 9:30 AM
Water Heater Estimate
Confirmed
DP
11:00 AM – 12:00 PM
Gutter Follow-Up
Done
JR
2:00 – 3:30 PM
HVAC Repair
Active

CalendarView with month grid, color-coded dot indicators, and day detail drawer

useQuery(api.appointments.getMonthSummary) · onDayPress callback


Full Detail View
9:41
Appointment
Confirmed
Customer confirmed via text
Mon, Feb 24 · 8:00 AM
Duration: 1.5 hours · Estimate
Customer
SM
Sarah Mitchell
(330) 555-0142 · sarah@email.com
Call
Text
412 Oak St, Akron, OH 44301
Single Family · 2,400 sq ft · Built 1998
Open in Maps
Job Scope
50-gallon gas water heater is leaking from the bottom. Customer wants estimate for replacement. Unit is in basement, accessible via interior stairs.
Plumbing Water Heater Estimate
Notes
Customer prefers morning appointments. Large dog in backyard — enter through front door only. Previous estimate from competitor was $3,200.
Reschedule
Cancel

AppointmentDetail with customer card, map preview, scope, and actions

useQuery(api.appointments.getById) · useMutation(api.appointments.cancel)


New Booking Flow
9:41
New Appointment
Appointment Type
Estimate Consultation Service Follow-Up
Customer
Sarah Mitchell
Property
412 Oak St
Akron, OH 44301
Date
Wednesday, Feb 26, 2026
Available Slots
8:00 AM
9:30 AM
11:00 AM
12:30 PM
2:00 PM
3:30 PM
Estimated Duration
30 min 1 hr 1.5 hrs 2 hrs 3+ hrs
Notes
Customer requested morning slot. Bring catalogs for water heater options...
Buffer Time
30 min between appointments
Send Confirmation
Text + email to customer
Book Appointment

BookAppointment wizard with customer search, date/time picker, and toggle options

useMutation(api.appointments.create) · useAvailableSlots(date)


Homeowner Booking View
9:41
MP
Mitchell Plumbing & HVAC
Licensed · Insured · 4.9
Step 2 of 3 — Choose Your Time
February 2026
S M T W T F S
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Thursday, Feb 26 — Available Times
8:00 AM
10:00 AM
1:00 PM
3:00 PM
Tell Us About Your Project
What do you need help with?
My water heater is leaking from the bottom and I need a replacement estimate.
Photos (optional)
IMG
Preferred Contact
Text Call Email
Confirm Booking
You’ll receive a text confirmation within 5 minutes. Free estimates — no obligation.

CustomerSelfBooking public page with calendar, intake form, and photo upload

httpAction(api.public.appointments.book) · useContractorAvailability()


Map + Route View
9:41
Dispatch
1
2
3
4
Optimized Route Saves 22 min vs current order
Apply
Today · 4 Stops
Mike T.
1
Sarah Mitchell
412 Oak St, Akron · 8:00 AM
Confirmed
14 min
2
James Rodriguez
89 Maple Dr, Cuyahoga Falls · 10:00 AM
Active
8 min
3
David Park
1020 Summit Blvd, Akron · 12:30 PM
Pending
21 min
4
Linda Chen
750 Market St, Akron · 2:30 PM
Confirmed
43 min
Total Drive
28 mi
Total Distance
6.5 hrs
Work Time

DispatchBoard with map pins, route optimization, and drive-time connectors

useQuery(api.appointments.getTodayRoute) · useRouteOptimizer()


Weekly Schedule + Controls
9:41
Availability
44 hrs
This Week
5 days
Active
30 min
Buffer
Working Hours
Mon
8:00 AM
5:00 PM
9h
Tue
8:00 AM
5:00 PM
9h
Wed
8:00 AM
5:00 PM
9h
Thu
8:00 AM
5:00 PM
9h
Fri
8:00 AM
3:00 PM
7h
Sat
Day Off
Sun
Day Off
Break
Lunch
12:00–1:00 PM
Buffer
30 min
Between appointments
Daily Max
6
Auto-blocks when reached
Booking Link
3bids.io/book/mitchell-plumbing
Copy Link
Blocked Dates
Add
Mar 15–16, 2026
Family vacation
Apr 3, 2026
License renewal appointment
Pro Tip: Contractors with 30-min buffers report 40% fewer late arrivals. Your customers get notified automatically when you’re en route.

AvailabilitySettings with weekly grid, buffer slider, and blocked dates manager

useMutation(api.appointments.updateAvailability) · useContractorSchedule()


Past Appointments + Stats
9:41
History
72%
Conversion
156
Total
4%
No-Show
All Completed Cancelled No-Show
Last 30 days
Change
SM
Sarah Mitchell
Feb 20 · Water Heater Estimate · 1.5 hrs
Converted to $3,400 job
Done
MJ
Marcus Johnson
Feb 18 · HVAC Service · 3 hrs
Converted to $1,800 job
Done
AN
Amy Nguyen
Feb 15 · Roof Consultation · 1 hr
Cancelled
RK
Robert Kim
Feb 12 · Electrical Estimate · 1 hr
Done
PG
Patricia Garcia
Feb 10 · Plumbing Estimate · 1 hr
No-Show
TB
Tom Bradley
Feb 8 · Deck Follow-Up · 45 min
Converted to $8,200 job
Done

AppointmentHistory with conversion stats, outcome badges, and date filtering

useQuery(api.appointments.getHistory) · useConversionStats()


Data Architecture

Schema Tables

appointments // Core appointment records
appointmentSlots // Available time slots
appointmentAvailability // Weekly schedule config
appointmentBlockedDates // Vacation, off days
appointmentReminders // SMS/email notifications
appointmentHistory // Outcome + conversion log

Queries

listByDate // Today/week/month filter
getById // Full detail with customer
getMonthSummary // Dot counts per day
getTodayRoute // Ordered stops + drive time
getAvailability // Weekly hours + breaks
getAvailableSlots // For date + duration
getHistory // Past with outcomes
getConversionStats // Rate, total, no-show %

Mutations

create
  args: customerId, propertyId, date, time,
    type, duration, notes, sendConfirmation
reschedule
  args: appointmentId, newDate, newTime
cancel
  args: appointmentId, reason
updateStatus
  args: appointmentId, status
updateAvailability
  args: schedule, breaks, buffer, maxPerDay
addBlockedDate
  args: startDate, endDate, reason

Components

AppointmentCard // Dashboard list item
CalendarView // Month grid + dot indicators
DayDrawer // Bottom sheet for day detail
TimeSlotPicker // Grid of available times
DispatchMap // Map + route pins
RouteCard // Stop card w/ drive time
AvailabilityGrid // Weekly schedule editor
BufferSlider // 15-60 min range input

Appointment Statuses

pending // Awaiting confirmation
confirmed // Customer confirmed
in_progress // Contractor on-site
completed // Finished successfully
cancelled // Cancelled by either party
no_show // Customer didn't show
rescheduled // Moved to new time

Appointment Types & Integrations

// Types
estimate → Free, 30-90 min
consultation → Paid, 60 min
service → Scheduled work, variable
follow_up → Post-job check, 30-60 min

// Integrations
SendGrid → Email confirmations
Twilio → SMS reminders (24h, 1h)
Google Maps → Route optimization
Calendar & Dispatch
9:41
Calendar & Dispatch
Today's Schedule
8
Today
34
This Week
92%
Show Rate
2.4h
Avg Duration
Today's Schedule
Roof Inspection — Smith
9:00 AM — 10:30 AM
Confirmed
Gutter Install — Davis
11:00 AM — 2:00 PM
En Route
Estimate — Wilson
3:00 PM — 4:00 PM
Pending
Booking & Availability
9:41
Booking & Availability
Details
Title
Gutter Inspection & Estimate
Description
On-site gutter assessment with photos and repair quote.
Configuration
Allow Same-Day Booking
Send Reminders
Preview
Booking Confirmation
Appointment card with date, time, service type, and homeowner address.
Performance
91%
On-Time
+18%
Bookings
4.8
Rating
History & Settings
9:41
History & Settings
Details
Title
Default Slot Duration: 60 min
Description
Buffer time between appointments set to 15 minutes.
Configuration
Auto-Confirm Bookings
Weekend Availability
Preview
Past Appointment Log
Completed visits with dates, services performed, and customer notes.
Performance
96%
Show Rate
+5%
MoM
47
This Month
Appointments Dashboard
https://app.3bids.io/contractor/appointments
3Bids
Calendar ⌘1
Book New ⌘2
Dispatch ⌘3
Availability ⌘4
History ⌘5
MK
Mike Kowalski
Contractor
Settings ⌘,

Appointments Dashboard

847
Total Appts
94%
Show Rate
2.1h
Avg Duration
$42K
Revenue Booked
Recent Activity
Roof Inspection — Smith
9:00 AM — 10:30 AM
Gutter Install — Davis
11:00 AM — 2:00 PM
Estimate — Wilson
3:00 PM — 4:00 PM
Performance