Use cases · Field service & home services

The van is on the way, and your product said so

Software for plumbers, HVAC, electricians, and cleaners lives or dies on communication: arrival windows, reschedules, photos of the finished job. Handset lets your platform send and receive those messages on a real local number per business, without you becoming a phone company.

Ridge Plumbing+1 415 555 0184

Marcus is 15 minutes out. Reply here with gate codes or questions.

Gate code is 4417, dog is friendly

Got it, see you soon 🔧

sent by your product · replies via webhook

One job, hour by hour

A day on the schedule

Every entry below is either one API call your product makes or one webhook it receives. The customer just sees a business that communicates.

7:52 AMPOST /v1/messages

Dispatcher assigns the job

A status change in your product fires the send. The text comes from Ridge Plumbing's own local number, the one on their trucks and invoices.

7:58 AM← message.received

The customer texts back

Gate codes, parking notes, “actually, can you come after 10?” The reply lands on your webhook and threads into the job timeline, not a tech's personal cell.

12:14 PMPOST /v1/messages

Reschedule handled in-thread

Your product proposes the new window in the same conversation. One thread per job, both directions, queryable by conversation_id.

6:41 PM← ring → voicemail

A call comes in after close

Business-hours routing (configured per business, in the business's own timezone) answers, takes a voicemail, and hangs up politely.

6:43 PM← voicemail.created

The voicemail arrives transcribed

“Hi, calling about a leaky faucet in the kitchen…” Your product reads the transcript, matches the caller, and drafts tomorrow's job.

7:05 AMyour product

Next morning: the ticket is already open

The dispatcher walks in to a booked job, not a blinking voicemail light. That's the feature your customers renew for.

The platform layer

What you never have to build

A real local number per business

Searchable by area code, live for SMS and voice on purchase, isolated per tenant with its own threads and opt-out list.

Compliance nobody sees

STOP/HELP keywords, send-time opt-out enforcement, and 10DLC registration run at the platform layer. Your customers never learn what a campaign is.

Hours and routing per business

Ring the tech during hours, roll to voicemail after, each business on its own schedule and timezone, set by API.

Test mode from day one

Magic numbers simulate delivery, replies, and voicemail so you can build the whole flow before a real phone rings.

The integration

Your dispatch workflow already knows when to text

Job assigned, tech en route, job complete: the triggers exist in your product today. Each one becomes a send from the business's tenant; every reply comes back as a webhook you thread into the job.

on-my-way.ts
// Your job-dispatch workflow, texting like a local
await sendMessage({
  body: {
    from: job.tenant.numberId,
    to: job.customer.phone,
    body: `${tech.name} is 15 minutes out. Reply here with gate codes or questions.`,
  },
});

// customer replies → webhook → your job timeline
→ message.received "Gate code is 4417, dog is friendly"

Home services are Handset's home turf.

The founding design-partner slots are built around this exact use case: free early access, white-glove 10DLC, and a founder on the call.