Use cases

iMessage for House Cleaning Businesses: Bookings, Reschedules and Rebooks

Short answer: give your cleaning company one iMessage number and run every client in a single thread: the quote request (bedrooms, baths, pets, photos), the written recurring schedule, the day-before reminder, reschedules, the after-clean photo with a review ask and an optional tip link, and a rebook offer after one-time cleans. With ZeroSettle the number shows your company name and photo, the hosted AI agent can answer quote and reschedule texts from a business context you write (keep entry codes out of it). Pro is $49 a month for one number; Growth is $199 a month per number, for team members and more new contacts; Enterprise is custom pricing through sales.

Key takeaways

  • Let clients text first. A “Text us for a quote” link on your site makes your number a known sender, so booking links are tappable and the daily new-contact limit never applies to that client.
  • Put the schedule in writing. A recurring confirmation (day, arrival window, scope, price) that the client answers with a yes or a thumbs-up settles most disputes before they start.
  • Reminders come from your booking software, through Zapier's Send iMessage action or one API call. ZeroSettle has no built-in reminder scheduler, and the agent's daily trigger is not one.
  • The hosted agent handles reschedules with your policy and a reschedule link. Keep door, lockbox and alarm codes out of its business context.
  • Plans: Pro is $49/month for one number; Growth is $199/month per number with team members and 50 new contacts a day per number (or $599/month for 3 numbers from a Growth link); Enterprise is custom pricing through sales.

Why should a cleaning company text from its own iMessage number?

Because cleaning clients already text, and a company number keeps every client in one thread instead of scattered across the owner's personal phone and three cleaners' phones. Residential cleaning runs on small, frequent messages: “can you come Friday instead,” “the dog will be home,” “please skip the guest room.” Each one belongs on the client's record, and each one goes missing when it lands on whoever happened to give out their cell.

ZeroSettle gives your business its own phone number on iMessage, running on Apple hardware we operate for you in a server facility. Set a name and photo (your company name and logo) and clients see your company instead of a bare number and can save it to your contact card (the number shares it automatically with the first message of each conversation); see what customers see when a business texts them. You answer from the console on a computer or a phone, let the hosted AI agent answer, or connect the number to the software you already use.

What does a cleaning client look like over text?

About eight recurring moments, from the first quote to the rebook, and each has one rule worth knowing. Here is a typical residential client:

A house cleaning client over iMessage (rules from the ZeroSettle API docs, checked November 2, 2026)
MomentWho texts firstWhat to sendRule to know
Quote requestClient (site button, flyer QR code)An instant reply asking bedrooms, baths, pets and type of cleanPeople who text first never count as new contacts
Web form requestYouPlain text that asks for a reply, no link yetCounts as a new contact; at most 2 messages before they reply
Recurring confirmationYouDay, arrival window, scope, price, start dateAsk for a written yes
Day-before reminderYou (from your booking software)Time window, who is coming, entry reminderSent by Zapier or your code, not a built-in scheduler
RescheduleClientYour policy and a reschedule linkThe hosted agent can answer it
Entry instructionsEitherA pointer to where codes are storedNever in the agent's business context or a group chat
After the cleanYouA photo, a review link, an optional tip linkPhotos only to clients who have replied
RebookYouA recurring offer after a one-time cleanOnly to clients who agreed to texts

Every number allows 10,000 messages a day, sent and received, with known contacts (people who texted it first or that it already has a conversation with).

How do you handle quote requests by text?

Reply within a minute and ask only what you need to price the clean: bedrooms, bathrooms, rough square footage, pets, the type of clean (standard, deep, move-in or move-out) and how often. Ask for photos once they have answered, because a request that opens with “send me pictures of every room” feels like homework.

Get the first text to come from them. Put a pre-filled sms: link on your website and booking page, and a QR code holding the same link on door hangers you leave after a clean, fridge magnets and the car:

html
<a href="sms:+15035550172&body=Hi%20Juniper%20Lane%2C%20I%27d%20like%20a%20cleaning%20quote.">
  Text us for a quote
</a>

When the client texts first, your number is a known sender: links you send are tappable, photos are allowed, and the conversation never counts toward your daily new-contact limit. On Android the link opens the SMS app instead, and iMessage reaches Apple devices only, so keep another way to reach you (a phone number or email) on the page too. How to get customers to text you first covers link formats and QR codes.

A good first reply, in plain words:

Hi! Thanks for texting Juniper Lane Cleaning. To quote you: how many bedrooms and bathrooms, any pets, and is this a regular clean, a deep clean or a move-out?

Then, once they answer, ask for two or three photos (the kitchen, the main bathroom and the busiest room). Clients can send photos at any time; they show in the console and through the attachments API. Photos are how you tell a standard clean from a deep clean before you arrive and find six months of oven grease. Text-a-photo quotes for the trades walks through the photo workflow in more detail.

If the request came from a web form, your number texts first, and three things change: it counts as a new contact (5 a day on Pro), you can send at most 2 messages before they reply, and a link in that first text shows as plain, untappable text. Open with a question, and send the booking link after they answer. Only text form leads whose form says you'll text them; speed to lead for home service businesses covers fast first replies, and why first-message links aren't tappable covers the link rule.

How do you confirm a recurring schedule?

Send one text that states the whole arrangement and ask for a yes. Recurring clients are the heart of a cleaning business, and most disputes (“I thought you did the baseboards every time”) come from a schedule that was only agreed out loud.

You're all set, Priya: every other Tuesday, arrival between 9 and 10 AM, standard clean of 3 bedrooms and 2 baths, $165 per visit, starting November 11. Baseboards and inside the fridge are add-ons. Reply YES to confirm, or tell me what to change.

A thumbs-up tapback works as a yes too, and it counts as a reply. On a number managed by API, it arrives at your webhook as a reaction.received event, or starts a Zap through Zapier's New Reaction Received trigger. Send the same kind of text whenever something changes: a new price, a new day, a new team. A written change you can scroll back to is worth more than any policy page.

How do you send the day-before reminder?

Send it from the software that already holds your schedule. ZeroSettle sends the text, but it does not know your calendar and has no built-in reminder scheduler, so the trigger has to come from your booking or field service software.

  • No code: in Zapier, use your booking software's trigger (or a scheduled Zap that reads tomorrow's jobs) and ZeroSettle's Send iMessage action. Connect it under Settings → CRM → Zapier in the console.
  • With code: a nightly job that calls POST /api/imessage/send with to and text for each of tomorrow's clients. See Send a message.
  • By hand: for a small book of clients, the owner sends them from the console each afternoon.

Keep it short and give one action:

Reminder: Ana and Luis will be at your place tomorrow between 9 and 10 AM. We'll use the side gate as usual. Need to move it? Just reply here.

Send reminders in the afternoon, never late at night. If the hosted AI agent runs the number, your reminder sends still work: the agent reads your texts in the thread as its own and answers whatever the client replies, which is exactly what you want when the reply is “actually, can we do Thursday?” Don't use the agent's daily trigger for reminders: it fires in every conversation the agent has, every day, whether or not that client has a clean tomorrow. iMessage appointment reminders that clients confirm with a tapback and iMessage automations with Zapier go further.

Can an AI agent handle reschedules?

Yes, if you give it your policy and a reschedule link. ZeroSettle's hosted AI agent answers every text from a business context you write, and it never invents facts the context doesn't give. It can't see your calendar on its own, so the reliable setup is: state the policy, send the link, and hand anything unusual to a person.

  1. Sat 6:15 PM
  2. Client: hi, can we move tuesday's clean? my in-laws are staying through wednesday
  3. Business: Of course! Moves with at least 48 hours' notice are free. Pick any open time here: https://junipercleaning.example/reschedule
  4. Client: ok thanks. also do you still have the garage code?
  5. Business: For your security I don't handle entry codes by text. Your team sees the entry notes saved in your client account.
  6. Business: If the code changed, you can update it under Entry notes: https://junipercleaning.example/account
  7. Client: moved to thursday 9am👍
Illustrative example with a fictional company, Juniper Lane Cleaning. Blue bubbles are the hosted AI agent, sent from the company's number; gray bubbles are the client's. The links are tappable because the client already has a conversation with the number, and the agent points to the client account instead of repeating any code.

Write the business context like a brief for a new office manager. An illustrative example:

text
You are Juniper Lane Cleaning's assistant. You text new people asking
for quotes and our existing clients about their cleans.

Services: standard, deep, move-in/move-out. Weekly, every other week,
monthly or one-time. Service area: Portland east of the river.
Quotes: ask bedrooms, bathrooms, pets, type of clean and how often.
Starting prices you may share: standard 2 bed / 1 bath from $130,
deep clean from $260. Say the final price is confirmed after the
first visit. Book new clients at the link.
Reschedules: free with 48 hours' notice; inside 48 hours there is a
$40 fee. Send https://junipercleaning.example/reschedule.
Add-ons: inside fridge $35, inside oven $35, baseboards $30.
Entry: never ask for, repeat or confirm any door, lockbox, garage or
alarm code. Point clients to Entry notes in their account:
https://junipercleaning.example/account
Hand off to Dana at (503) 555-0172: complaints, damage, anything
missed on a clean, refunds, a change of team, same-day requests.
Never: promise a specific cleaner, guess a price not listed here.

Then, in the console's Messaging tab (step by step):

  • Goal and link: Demos booked, with your booking page, is the closest of the three goals to booking a first clean; or turn the goal off and describe booking in the context.
  • First message: it is sent exactly as written, also as the first answer to someone who texts first, including a client whose first text to the new number is a reschedule. Write one that fits any text, or turn it off and let the agent write its own.
  • Personality and response time: Friend or Professional, and Instant.
  • Files: your service checklist, add-on prices and cancellation policy. A file is read before every answer, so the same rule applies: no codes, no client addresses.
  • Triggers: every agent starts with one, a follow-up the next morning when someone hasn't answered the last text. On a client book that means a reminder nobody replied to gets a nudge on cleaning day. Rewrite its instruction (for example, “follow up only on an unanswered quote”) or delete it.
  • Connectors: to let the agent check open slots, connect an MCP server from your booking system. Tools that only read start on; a tool that changes a booking starts off, because anyone who texts your number can ask the agent to use it. Turn it on only if that's fine.

Two limits to plan around. While the agent manages the number, the console's composer is off, so staff reply by switching the number back to Managed by API or by sending from the API. And texts the agent sends use credits (more under plans below). How the hosted AI agent answers iMessages covers every setting, and an AI booking agent for HVAC, plumbing and electrical companies shows the same pattern for other trades.

How should you handle keys and entry codes?

Keep entry codes in your booking or field service software, where the assigned team sees them on the job, and keep them out of everything the AI agent reads. Text is convenient for “we left the key under the blue pot,” and that convenience is the problem.

Never put codes in the business context or files

The agent reads its business context and every connected file before every answer, in every conversation, with anyone who texts your number. A lockbox code written there is one clever question away from a stranger. Write the rule (“never ask for, repeat or confirm a code”) instead.

  • Ask clients to store codes in their account (most booking software has client or property notes), and say so in your welcome text.
  • If a client texts a code anyway, copy it into the client record. Messages are kept, so treat the thread as something your staff can read, and suggest a code change when a team member leaves your company.
  • Never send codes into a group chat. If you run a group for a large job (a move-out with the landlord and the tenant, say), everyone in it sees every message; group chats for home service jobs covers how those groups work.
  • Reminders say where, not what: “we'll use the side gate as usual,” never the code itself.

What should you send after the clean?

Send one short text with a photo of the finished space, then ask for a review, and offer a tip link if you accept tips. A photo of a gleaming kitchen does what “all done!” can't: the client sees the work before they walk in.

Photos go only to clients who have replied to your number at least once (a new contact's first messages are text only), which every booked client has. Send them from the console's camera button or through the API with image_b64 and a caption in the same bubble:

All done! Ana and Luis finished at 12:40. Here's the kitchen. If you'd like to thank them, tips go straight to the team: https://junipercleaning.example/tip

For the review, ask once per client after their first or second clean, not after every visit, and ask everyone rather than only the clients you think are happy. Filtering who gets asked is review gating; how to ask for Google reviews over iMessage explains why to avoid it.

Thanks for having us, Priya. If you have a minute, a Google review helps a small company like ours a lot: https://junipercleaning.example/review

For tips, a payment link from your payment provider is enough. Keep it optional, mention it once in the after-clean text, and don't follow up on it. Avoid stacking three asks (review, tip and referral) in one text; one ask per message reads like a person.

How do you turn one-time cleans into recurring clients?

Offer recurring service a few days after a deep or one-time clean, while the house still looks good, and only to clients who agreed to hear from you. The offer should make the next step obvious:

Hi Marcus, hope the place still feels fresh. Clients who book every other week after a deep clean pay $145 per visit instead of our one-time rate. Want me to hold a Thursday morning for you?

With the hosted agent, a once trigger sends this for you. Set after_days to 3, pick morning or afternoon in your timezone, and write an instruction such as “If this client had a one-time or deep clean and hasn't booked recurring service, offer every-other-week service once. Otherwise send nothing.” Triggers apply to every conversation on the number, so the “otherwise send nothing” part matters, and the agent sends nothing when the instruction doesn't apply. Two catches: the agent knows only the conversation and your files, so it can tell a one-time clean only when the booking shows up in the thread; and a once trigger never fires when the client wrote last, so a client whose last text was “thank you!” won't get it. Send those offers yourself.

For a seasonal opening (spring cleaning, holiday deep cleans) to past clients who agreed to texts, POST /api/imessage/broadcast sends each person their own 1:1 message, up to 100 handles per call (each number sends about 10 a minute, and the rest come back deferred to send again); it never creates a group and recipients never see each other. Clients your number already has a conversation with are known contacts, so they don't count toward the new-contact limit. Winning back lapsed customers and turning happy customers into referrals cover the next two plays, and filling last-minute cancellations from a waitlist turns a reschedule into someone else's open slot.

Which plan fits a cleaning company?

An owner-operator whose clients mostly text first fits Pro; a company with an office manager, several teams or a steady flow of web form leads fits Growth. The deciding number is how many conversations you start each day.

ZeroSettle plans for cleaning companies (ZeroSettle API docs, checked November 2, 2026)
Plan detailProGrowthEnterprise
Price$49/month for one number$199/month per number (upgrade in the console), or $599/month for 3 numbers from a Growth link plus $199 per extra numberCustom, through sales
New contacts you start, per number5 a day50 a day (and 3 per 15 minutes)Talk to sales
Clients who text you firstNever count as new contacts; 10,000 messages a day per number, sent and received, with known contacts
Team membersNoYesTalk to sales
Free AI agent credits (once)5001,000Talk to sales
FitsOwner-operator, site button and referralsOffice manager, several teams, web form leadsHigh volume and compliance needs

Credits pay only for texts the hosted AI agent sends (1 each) and for videos. Free credits come once and don't refill; packs are 1,000 for $50 or 5,000 for $200 and never expire. The subscription has a 30-day money-back guarantee.

A reschedule like the one above, answered in three agent texts, uses 3 credits; your own reminders and after-clean photos sent from the API or the console use none. More in ZeroSettle pricing and the your iMessage number docs; for higher volume or compliance requirements, book a demo.

What should cleaning companies avoid over iMessage?

Avoid anything that makes your number look like spam, and anything that puts a client's home at risk. A flagged number fails every send, to everyone:

  • No cold texting. Text only people who gave you their number for this: a quote request, a web form whose wording says you'll text, a past client who agreed to texts, or someone who texted first. Never purchased lists, scraped numbers or neighborhood lists. iMessage marketing and TCPA consent has the practical detail; it is not legal advice.
  • No third text before a reply. The number refuses a third message to someone who has never replied (403 awaiting_reply).
  • No promotions at odd hours. The compliance guidance says nothing promotional before 8 am or after 9 pm in the recipient's time zone.
  • Honor STOP. ZeroSettle enforces it on every number of your account; a client who texts START opts back in.
  • No codes in the agent's context, files or group chats. See the section above.
  • Don't promise texts to Android users. iMessage reaches Apple devices; SMS fallback is a limited pilot ZeroSettle must enable per account.

How to grow a home service business with iMessage has the wider playbook. To start, get your number, set your company name and photo, and put the “Text us for a quote” link on your booking page today.

Frequently asked questions

Can the AI agent see our schedule and move a clean by itself?

Not on its own. The hosted agent knows your business context, the files you connect and the conversation, so the simple setup is a reschedule link it sends with your policy. To let it check openings, connect an MCP server from your booking system: tools that only read start on, and a tool that changes a booking starts off, because anyone who texts your number can ask the agent to use it.

Is it safe for clients to text us their door or alarm code?

Treat the thread as a record your staff can read, because messages are kept. Ask clients to put entry codes in your booking software's client notes instead, never put codes in the agent's business context or files, and never send them into a group chat. If a client texts one anyway, copy it into the client record and suggest they change it when a team member leaves.

How do day-before reminders go out if ZeroSettle has no scheduler?

From the software that already knows your schedule. A Zap that runs off your booking software can use the Send iMessage action, or a short script can call POST /api/imessage/send. The hosted agent's daily trigger is not a reminder tool: it fires in every conversation the agent has, every day.

Do recurring clients count toward the daily new-contact limit?

No. Once your number has a conversation with a client, or the client texted it first, they are a known contact. The new-contact limit (5 a day on Pro, 50 a day per number on Growth) counts only conversations your number starts, and every number allows 10,000 messages a day, sent and received, with known contacts.

What about clients who don't have an iPhone?

iMessage reaches Apple devices. Keep your phone number and email on your booking page for everyone else. SMS fallback is a limited pilot ZeroSettle has to enable per account, so don't plan your reminders around it.

Should a cleaning company start on Pro or Growth?

An owner-operator whose clients mostly text first fits Pro at $49 a month for one number. A company with an office manager, several teams or a steady flow of web form leads to text first usually needs Growth at $199 a month per number, for team members and 50 new contacts a day per number. Enterprise has custom pricing for high volume and compliance needs.

Sources

  1. ZeroSettle iMessage API docs: “Your iMessage number” (Pricing), “Send a message” (Links in a first message, Broadcast to many recipients, SMS fallback, Name and photo), “Attachments” (Send a photo), “Customer support” (Let them start the conversation), “AI agent” (Managed by AI Agent, Triggers, Connectors, Credits), “AI agent in the console”, “Webhooks, step by step”, “Errors, limits, and compliance” and “CRM integrations” (Zapier). Checked November 2, 2026.

Written by the ZeroSettle team. ZeroSettle is an iMessage API: a real phone number on real iMessage, running on Apple hardware we operate for you, that your code texts customers from and hears back on through a bearer token and signed webhooks.

Product facts on this page come from the ZeroSettle iMessage API docs as of November 2, 2026. Juniper Lane Cleaning, its prices, people and links are fictional, and this page is not legal advice.

Give your cleaning company its own iMessage number

Answer quote requests in seconds, keep every client's schedule in one thread, and show clients your company name and photo. ZeroSettle runs the number on Apple hardware we operate for you in a server facility.

Pro is $49 a month for one number with a 30-day money-back guarantee. Growth is $199 a month per number, or $599 a month for 3 from a Growth link. Enterprise pricing is custom, for high volume and compliance needs.