Use cases · Property management

Every property answers its own phone

Property-management platforms sit between owners, renters, and vendors, and the traffic is constant: maintenance requests, rent reminders, showing coordination. Handset gives each property or portfolio its own number, so texts thread by property, after-hours calls become transcribed voicemails, and nothing lands on a manager's personal cell.

The shape of the problem

One number, three audiences

A property's number is shared infrastructure: renters report into it, managers work out of it, vendors get dispatched from it. Handset makes it a tenant (with its own threads, hours, and opt-out list) mapped to your data model.

Renters

Text the property's number they already have on the lease. Maintenance requests, rent questions, lockouts, every message threads by property, and staff turnover never orphans the history.

Managers

Work the whole portfolio from your product's inbox, not a personal cell. Business hours per property decide when the phone rings and when voicemail answers.

Vendors

The plumber gets dispatched by text from the same number the renter texted, so one repair has one paper trail, owner-auditable end to end.

118 Vine St · +1 415 555 0339 · one thread of record

A ticket's life

The midnight leak, resolved before the office opens

Every step is one webhook in or one API call out. The manager reads the finished story at 8am.

11:04 PM← message.received

The renter texts the property line

“Unit 4B: water under the kitchen sink.” It lands on your webhook, tagged to the property's conversation, not on anyone's personal phone.

11:04 PMPOST /v1/messages

Your product opens the ticket

Unit, renter, and history are already in your data model; the webhook payload carries the rest. Auto-acknowledge so the renter knows it's filed.

7:15 AMPOST /v1/messages

The vendor gets the dispatch

“New ticket at 118 Vine St: water leak, unit 4B. Reply YES to take it.” Same property number, so the whole repair shares one thread of record.

7:22 AM← message.received

YES closes the loop

The vendor's reply hits your webhook; your product assigns the ticket and tells the renter a plumber is coming, all before the office opens.

maintenance.ts
// 11:04 PM: a renter texts the property line
→ message.received "Unit 4B: water under the kitchen sink"

// Your platform opens the ticket and dispatches
await sendMessage({
  body: {
    from: property.numberId,
    to: vendor.phone,
    body: `New ticket at ${property.address}: ${ticket.summary}. Reply YES to take it.`,
  },
});

Calls that come in after hours follow the same path: per-property routing rolls them to voicemail, and voicemail.created arrives with a transcript your product can ticket the same way.

Rent day, handled

Reminder triggers in your product become texts renters actually read, and the questions that follow (“can I pay Friday?”) thread back to the right property, ready for a manager to answer from your UI.

How messaging works

A paper trail owners can audit

Hundreds of properties, one API. Every conversation, voicemail, and dispatch is queryable per property, when an owner asks what happened with unit 4B, the answer is a timeline, not a memory.

How tenants & numbers work

Give every property its own line.

Property software is where multi-tenant telephony earns its keep. Tell us about your portfolio data model.