Guides

How to Grow a Home Service Business With iMessage

Short answer: give your company one dedicated iMessage number and run the whole customer journey through it. Put a “text us” link on your website, yard signs, trucks and invoices so homeowners text you first; let an AI agent answer in seconds while you're on a job; quote from the photos they send; follow up once or twice; send job-day updates; ask for the review in the same thread; and check in with past customers when the season turns. ZeroSettle runs the number on Apple hardware we operate for you in a server facility. Pro is $49 a month for one number, Growth is $199 a month per number with team members, and Enterprise is custom pricing for high volume and compliance needs.

Key takeaways

  • Get texted first. When the homeowner starts the conversation, your links are tappable, photos and polls are allowed, and they never count toward your daily new-contact limit.
  • Speed wins the job. The hosted AI agent answers every request from a business context you write, with no code, and asks for photos and an address while you're on a ladder.
  • One thread per customer. Estimate, walkthrough, job-day updates, review request and next season's check-in all live in the same conversation, so nothing gets lost between the office and the crew.
  • Plans by size: Pro $49/month for one number; Growth $199/month per number with team members; Enterprise is custom for high volume and compliance needs.
  • Consent first. Text only people who gave you their number for it. No bought lists, no door-knock lists, no scraped numbers.

Painting, cleaning, HVAC, plumbing, landscaping, roofing and remodeling companies grow the same way: more estimate requests, more of them turned into jobs, and more repeat work. This guide walks the customer journey from the first “how much to paint a living room?” to next spring's repeat booking, with the text to send at each stage and the ZeroSettle feature that sends it.

Why does iMessage fit a home service business?

iMessage fits because homeowners already text, and a text gets handled between other things. A voicemail waits for a callback; a text with a photo of the water stain gets you most of what you need to quote.

A dedicated business number on iMessage adds three things a crew lead's personal cell doesn't. It shows your company name and photo instead of a bare number (see what customers see). It belongs to the business, so the thread stays when an estimator leaves. And an AI agent, your office or your CRM can answer it.

What does the playbook look like stage by stage?

The playbook has seven stages, each with one job to do on the number. The table maps each stage to the ZeroSettle feature that handles it and the guide that goes deeper.

The home service customer journey on one iMessage number
StageWhat you doZeroSettle featureGo deeper
Get texted first“Text us” links on the site, yard signs, trucks, invoicesDedicated number, name and photo, sms: linksGet customers to text first
Answer fastReply in seconds, day or nightHosted AI agent (Managed by AI Agent)Speed to lead for home services
Quote with photosAsk for photos, book the walkthrough, send the estimateInbound photos, tappable links, pollsText-a-photo quotes
Follow upOne or two low-pressure nudgesAgent triggers (once)Estimate follow-up
Job dayOn-the-way text, progress photos, a group per jobPhotos, group chatsOne group per job
Reviews and referralsAsk in the thread after the final walkthroughLinks in a known conversationReferrals over iMessage
Come back seasonallyCheck in with past customers who agreed to textsBroadcast, agent Start a conversationSeasonal texts

Trade-specific versions: painting contractors, house cleaning, HVAC, plumbing and electrical and lawn care and landscaping.

How do you get homeowners to text you first?

You get texted first by putting a pre-filled “text us” link everywhere a homeowner meets your company. This matters more than anything else in the guide: when they start the conversation, your number is a known sender, so every link you send is tappable, you can send photos and polls, and the conversation never counts toward your daily new-contact limit.

An sms: link with a body opens Messages with your number and a first message already typed. Use a different body for each place, so you know which sign or ad brought the job in:

html
<a href="sms:+15125550142&body=Estimate%20please%20(website)">Text us for an estimate</a>
<!-- Yard sign QR code: sms:+15125550142&body=Estimate%20please%20(yard%20sign) -->
<!-- Truck door QR code: sms:+15125550142&body=Estimate%20please%20(truck) -->
  • Website: a “Text us for an estimate” button at the top of every service page, next to the phone number.
  • Yard signs: a QR code and the number in large type.
  • Trucks and trailers: “Text for a quote” and the number.
  • Invoices, estimates and leave-behind cards: “Questions? Text us at…” turns the people you already serve into known contacts.
  • Lead ads: if you run Facebook or Instagram lead forms, include consent language for texts and reply from your number in seconds. Those leads haven't texted you yet, so each counts as a new contact, and a link stays plain text until they reply; texting lead ad leads covers the setup.

On Android, an sms: link opens the SMS app instead, and iMessage reaches Apple devices only. Keep your phone number and a web form beside the link for those customers. More on placement and QR codes in how to get customers to text you first.

How do you answer every request fast?

You answer fast by letting ZeroSettle's hosted AI agent reply the moment a request lands, from a business context you write. In the console's Messaging tab, replace the example business context with your own (the example describes a made-up software business), set Who answers to Managed by AI Agent, and leave Response time on Instant, the default. No server or webhook is involved. The console walkthrough has every step.

The business context is everything the agent knows. For a home service company, cover the service area, what you do and don't do, how pricing works, what you need to quote, how to book, and when a person takes over:

text
You are Ridgeline Painting's assistant. People text this number from our
website, yard signs and trucks to ask for painting estimates.

Service area: Austin, Round Rock and Cedar Park. Interior and exterior
residential painting, cabinets, decks and fences. No commercial work.
Pricing: we quote after a free walkthrough. Never give a price.
To prepare the walkthrough, ask for: the address, which rooms or surfaces,
and one wide photo of each room from the doorway.
Booking: send https://ridgelinepainting.example/walkthrough once they
want a time.
Water damage, mold or lead paint questions: say Sam will call them today.
Hours: walkthroughs Mon-Sat, 8am-6pm.

The booking link can live in the business context, as above, or as the link in the Goal box, which the agent shares when the homeowner is ready. First message is on by default, and it is also sent as the first answer to people who text you first, so write it for both cases, or switch it off and let the agent write its own opener. Long price sheets can go in Connectors: Files.

  1. Thu 7:52 PM
  2. Homeowner: Estimate please (yard sign)
  3. Homeowner: saw your sign on Elm St. need the living room and hallway done
  4. Business: Thanks for texting Ridgeline! We'd be glad to take a look at the living room and hallway.
  5. Business: What's the address? And if you can, send one wide photo of each space from the doorway so we bring the right samples.
  6. Homeowner: 412 Larkspur Dr. sending pics
  7. Homeowner: [Photo: living room]
  8. Homeowner: [Photo: hallway]
  9. Business: Thank you! Pick a walkthrough time here: https://ridgelinepainting.example/walkthrough
Illustrative example with a fictional painting company. Gray bubbles are the homeowner; blue bubbles are the hosted AI agent, sent from the company's number. Because the homeowner texted first, the booking link is tappable.

Each text the agent sends uses one credit (the request above used three). Pro includes 500 free credits and Growth 1,000, once per account; they never refill, and packs of 1,000 for $50 or 5,000 for $200 never expire. Replying yourself on Managed by API uses none. Speed to lead for home service businesses covers response times and handoffs in more detail.

How do you quote with photos?

You quote with photos by asking for them in the first reply and using them to prepare the walkthrough, or to skip it for small jobs. Photos from the homeowner arrive any time and show in the console's inbox; you can also fetch them through the API (Attachments).

  • Ask for specific shots. “One wide photo of each room from the doorway” for interiors; “the unit's label plate and the thermostat” for HVAC; “under the sink, and the shutoff valve” for plumbing; “each side of the house from the street” for roofing and exteriors.
  • Offer walkthrough times as a poll. Once the homeowner has replied, a Messages poll sent through the API lets them tap a day. On iOS 26 or later they vote in the thread; older iPhones show “Sent a poll” and can't vote, so plain times stay the safe default.
  • Send the estimate link in the thread. In a conversation the homeowner started, it is tappable.

The full workflow, including what to ask for by trade, is in text-a-photo quotes for the trades.

How do you follow up without being pushy?

Follow up once or twice, a couple of days apart, with a specific question rather than “just checking in”. A quiet estimate often means the homeowner is comparing quotes or busy, not that they said no.

The hosted agent does this with Triggers. By default it follows up once, the morning after a conversation goes quiet. For estimates, a gentler setting is a Once trigger two days after the last message, in the afternoon, with an instruction such as:

text
If they received an estimate and haven't replied, send one short,
friendly text: ask whether they have any questions about the scope or
the colors, and mention we can hold a start date for a week. If they
already said no, or booked, send nothing.

A once trigger fires each time a conversation goes quiet, never when the homeowner wrote last, at a random moment in its window (afternoon is 1–3 in your timezone). Before someone has ever replied, the number sends them at most 2 messages; that rule exists because repeated texts to people who never answer are the fastest way to get a number flagged. How painters follow up on estimates has sample texts, and lead nurture without getting flagged covers longer sequences.

How do you keep customers updated on job day?

You keep customers updated with three texts: when the crew is on the way, a photo at the end of each day, and a sign-off before anything irreversible.

  • On the way: the crew lead's name and an arrival window. On-the-way texts with a photo and ETA shows the pattern.
  • End of day: one progress photo and what's next tomorrow.
  • Sign-off: before the first coat or the new fixture goes in, send a photo and ask for a written yes.

For bigger jobs, start one iMessage group per job with the homeowner, the project manager and the crew lead (POST /api/imessage/groups), so nobody relays messages. Group chats are on for every number and hold up to 31 people. Each member the number has never exchanged a message with counts as a new contact when you start the group, and every member must have agreed to hear from you. The hosted agent answers in a group only when a message is meant for it, never answers another ZeroSettle number, and its triggers (follow-ups, daily texts) never fire into a group. One iMessage group per job walks through it, and the group chat docs list every call.

How do you get reviews and referrals?

Ask for the review in the same thread, right after the final walkthrough, while the homeowner is still looking at the finished work. Send the final photos first, then the review link; the conversation is already known, so the link is tappable. Ask everyone, not only customers you expect to be happy; filtering is review gating (the review request guide explains).

Referrals work the same way. Make it easy to pass you along (“If a neighbor asks who did the work, our text line is this number”) and let the neighbor text you. Don't ask the customer for a friend's number and text it cold; that friend never agreed to hear from you. Turning happy customers into referrals has the wording.

How do you bring customers back each season?

You bring customers back with a short, personal check-in when their kind of work comes due: a furnace tune-up in fall, an AC check in spring, a deep clean before the holidays, a touch-up a few years after the job. Text only past customers who agreed to receive texts from you.

Two ways to send it:

  • Broadcast (POST /api/imessage/broadcast from your own code, or a bulk action in GoHighLevel once it is connected): the same text to up to 100 people per call, each in their own 1:1 conversation, not a group; each number sends about 10 a minute, and the rest come back deferred to send again. Anyone who texted STOP is skipped.
  • The hosted agent: Start a conversation in the Messaging tab (or POST /api/imessage/agent/start) sends your first message, then the agent answers the replies and shares your booking link when they're ready.

A customer the number already has a conversation with is a known contact, so the check-in doesn't count toward your new-contact limit. Customers you only have in an old spreadsheet are new to the number and do count: 5 a day on Pro, 50 a day per number on Growth. Spread them over days, and end the first text on a question rather than a link. Bringing back past painting customers and seasonal texts for lawn care have trade-specific scripts.

Which plan fits your business size?

Pick by how many people answer the number and how many new conversations you start each day. People who text you first never count toward the new-contact limit, so an inbound-driven business can grow a long way on Pro.

ZeroSettle plans for home service businesses (ZeroSettle docs, checked November 2, 2026)
BusinessPlanWhat you get
Owner-operator or one crewPro, $49/monthOne dedicated number, 5 new contacts a day, 500 free credits once
An office plus several crews or estimatorsGrowth, $199/month per number (upgrade in the console)Team members, 50 new contacts a day per number (and 3 per 15 minutes), 1,000 free credits once
Several numbers working as oneGrowth link, $599/month for 3 numbers, plus $199 per extra numberThe same Growth limits on each number; a contact always hears from the number their conversation is on
Multi-location, franchise or high volumeEnterprise, custom pricingThrough sales, for high volume and compliance needs; book a demo

Every number allows 10,000 messages a day, sent and received, with known contacts. The 30-day money-back guarantee covers the subscription, not credit packs.

Which CRM can you connect?

You can connect GoHighLevel, HubSpot, Close or Zapier from Settings → CRM in the console, with nothing to build. See the CRM integration docs for each.

  • GoHighLevel and LeadConnector: the iMessage (ZeroSettle) app makes your number the sub-account's SMS provider, so the inbox, the mobile app, workflow Send SMS actions and bulk actions send from it, and replies land in the contact's conversation. If your marketing agency runs your GoHighLevel account, the GoHighLevel setup guide walks through it.
  • HubSpot: every message is logged on the contact, and your team sends from the iMessage card, a workflow (on a HubSpot plan with workflows) or the HubSpot inbox (Sales or Service Hub Professional and up).
  • Close: every text is an iMessage activity on the lead, and you send by logging one.
  • Zapier: a trigger on each message and a Send iMessage action, for scheduling or field service tools you already connect through Zapier.

Plan around two details: group messages are not logged in Close or HubSpot, and while the hosted agent manages a number, the number sends only through the agent: sends from Close or HubSpot are refused (403 managed_by_zerosettle) and sends from GoHighLevel are marked failed. If the office needs to send from the CRM, switch the number back to Managed by API; on an account with more than one line group, each group has its own setting, so the agent can answer on one while the office sends from another.

The rule is simple: text only people who gave you their number for this purpose. That means someone who texted you first, filled in your estimate form, submitted a lead ad form with texting consent, or is a past customer who agreed to texts. Never text a purchased list, numbers scraped from the web, door-knock sign-ups that didn't agree to texts, or the neighbors of a job you're working on. As ZeroSettle's docs put it, “If you are unsure whether you have consent, you don't.” Our TCPA consent guide covers the US rules in more depth; this is not legal advice.

The limits that keep your number healthy

At most 2 messages to a contact before their first reply (403 awaiting_reply). Photos, voice messages, videos and polls only to contacts who have replied. A link sent to someone who has never texted the number shows as plain text they can't tap. New conversations you start: 5 a day on Pro, 50 a day per number on Growth; people who text first never count. A STOP is enforced on every number on your account, and a STOP from any group member blocks sends into every group they're in.

Two more habits from the compliance docs: say who you are in your first message, and send nothing promotional before 8 am or after 9 pm in the customer's time zone. A flagged number fails every send (what that looks like), so these limits protect your whole pipeline.

For leads from ads and forms, read iMessage for lead generation. To start, get your number, put the link on your website and next yard sign, and switch on the agent.

Frequently asked questions

Do I have to give up my current business phone number?

No. ZeroSettle gives you a new, dedicated number on iMessage. You can keep your existing number for calls and publish the iMessage number as the "text us" line on the website, yard signs, trucks and invoices.

Will customers with Android phones get my texts?

iMessage reaches Apple devices. SMS fallback is a limited pilot that ZeroSettle has to enable for an account, so don't count on it. Keep your phone number and a web form next to every "text us" link for customers who aren't on an iPhone.

Can the AI agent book jobs on my calendar?

It can share your booking link, set as its goal link, when a customer is ready. It can only check or book times itself through an MCP server you connect that has a booking tool, and tools that change something start switched off until you turn them on.

How many customers can I text in a day?

Each number allows 10,000 messages a day, sent and received, with known contacts. Starting new conversations is limited: 5 new contacts a day on Pro and 50 a day per number on Growth. People who text you first never count toward that limit.

Can my office staff and crew leads use the same number?

Yes. Team members are part of Growth, so the office can share the console. Crew leads can also join one iMessage group per job with the homeowner. Once GoHighLevel, HubSpot or Close is connected, the team can reply from the CRM while the number is Managed by API; while the AI agent manages it, CRM sends are refused.

Is it legal to text my past customers about seasonal work?

Only text past customers who agreed to hear from you by text, and honor STOP. Promotional texts usually need more consent than job updates, and the rules depend on where you and the customer are. This is not legal advice; see our TCPA consent guide and ask a lawyer about your own forms.

Sources

  1. ZeroSettle iMessage API docs: “Your iMessage number” (pricing, more than one number), “Send a message” (broadcast, links in a first message, SMS fallback, polls, name and photo), “Customer support” (let them start the conversation), “AI agent” (Managed by AI Agent, triggers, connectors, credits), “AI agent in the console”, “Errors, limits, and compliance”, “CRM integrations” and “Group chats”. Checked November 2, 2026.
  2. ZeroSettle iMessage API Terms of Service.

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. Ridgeline Painting is a fictional business, its links use .example domains, and this page is not legal advice.

Give your home service business its own iMessage number

Put a “text us” link on your website and yard signs, let the AI agent answer every estimate request in seconds, and keep every job in one thread.

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.