Use cases

How Painters Can Follow Up on Estimates That Went Quiet

Short answer: text the estimate on day 1 with the scope and total in the message, follow up on day 3 with something useful, and close the loop on day 7. Every text ends on one easy question, none of them pushes, and after two follow-ups with no reply you stop. Photos of the room or a color sample wait until they've answered. On ZeroSettle you can send these from your own iMessage number by hand, have the hosted AI agent send the day 3 and day 7 texts with two once triggers, or run them from a Zapier or GoHighLevel workflow.

Key takeaways

  • Cadence: day 1 the estimate text, day 3 a useful follow-up, day 7 a close-the-loop text. Then stop.
  • Every text ends on a question that takes five seconds to answer: “Did it come through OK?”, “Anything on the scope you'd change?”, “Should I close it out for now?”
  • The two-unanswered rule: never let more than two follow-ups go unanswered. ZeroSettle enforces a stricter version for people who have never replied (403 awaiting_reply on a third message).
  • Earn the photo: a picture of their stairwell or a color sample goes out only after they reply, which is also when ZeroSettle allows it.
  • Automation that stays human: with Response time set to Don't Reply, the hosted agent sends the follow-ups but never answers a reply; your estimator does.

Why do painting estimates go quiet?

Most quiet estimates aren't a no. They are a decision that stalled: a spouse hasn't seen it yet, they're waiting on another bid, they have a question they never asked (“does that include the ceiling?”), the timing is unclear, or the price surprised them and they're too polite to say so.

A good follow-up gives each of those an easy way back in. A text does that better than a call, because they can answer from the couch at 8 PM, and better than a third email, because it lands where they already talk to people. The rest of this post is how to do it without becoming the contractor who won't stop texting. For the whole job from request to review, see iMessage for painting contractors.

What should be in place before the estimate goes out?

Three things: consent to text, a conversation the homeowner has already started or answered, and the scope written down. Get them at the estimate request and the walk-through, and every follow-up after that is easy.

  1. Permission to text about the estimate. The homeowner gave you their number for this job: they filled in your estimate form (with language saying you'll text them about it), texted you to ask for a quote, or told you at the walk-through that text is best. Don't text numbers from a purchased list, a neighborhood door-knock sheet or anything you scraped. Our guide to iMessage marketing and TCPA consent covers the details; it is not legal advice.
  2. A thread they have already used. Ideally they texted your number to book the walk-through; an sms: link on your estimate page helps them text you first. Then your links are tappable, photos are allowed, and they aren't a new contact against your daily limit.
  3. The scope in plain words: rooms, surfaces, coats, colors, prep and the total. Every follow-up refers back to it.

If the request came from a web form and you've never texted them, say who you are, end on a question and skip the link: “An iPhone won't open links from an unknown sender,” as ZeroSettle's docs put it. More in why links in a first iMessage aren't tappable and speed to lead for home service businesses.

When should you follow up on a painting estimate?

Day 1, day 3 and day 7, counting the day the estimate goes out as day 1. Day 1 delivers it, day 3 is the first follow-up and day 7 is the last. Any reply resets the clock: you answer it, and the sequence only resumes if they go quiet again.

Estimate follow-up cadence for painting contractors (illustrative)
WhenJob of the textEnds onSkip it if
Day 1, same day as the estimateDeliver it: scope, total, where the full estimate is“Did it come through OK?”Never; this is the estimate itself
Day 3, morningAdd something useful: timeline, next open start week, what's included“Anything on the scope you'd change?”They replied since day 1
Day 7, afternoonClose the loop politely and leave the door open“Should I close it out for now, or hold that week?”They replied, or they have never replied to your number at all
After day 7Nothing, unless they reply––

Weekday mornings and early afternoons are a sensible default. Never text before 8 AM or after 9 PM in their time zone.

Sooner feels like pressure on a decision that involves two people and real money. Later, and they have either hired someone or stopped thinking about it.

What should the follow-up texts say?

Each text should be about their job, carry one piece of new information or one useful offer, and end on a single question they can answer in a few words. Here are examples for each step, written for a fictional company, Brightline Painting.

Day 1: the estimate text

Hi Megan, it's Luis from Brightline Painting. Your estimate for the living room, hallway and stairwell is in your email: $3,850, two coats on walls and ceilings, trim included. Did it come through OK?

Scope and total are in the text, so nobody has to open the PDF to remember what you quoted. You can't attach a PDF to an iMessage (photos, voice messages and videos are the attachment types), so email it and keep the essentials in the text.

Day 3: be useful, not “just checking in”

Pick the one that fits the job:

  • Timeline: “Morning Megan, Luis from Brightline. Your job is about three days on site, and our next open start is the week of the 17th. Anything on the scope you'd change?”
  • The question people forget to ask: “Hi Megan, one thing I didn't mention at the walk-through: the stairwell price includes the high ceiling and patching the two nail pops. Any questions on what's included?”
  • Color: “Hi Megan, if you're still deciding between the two whites, I'm happy to bring sample boards by when we're in your area Thursday. Want me to?”

Day 7: close the loop

Hi Megan, Luis again. I don't want to fill up your texts, so I'll close out your estimate on my end unless you'd like me to keep the week of the 17th open. Should I close it out for now?

It's honest (you really will stop) and asks a question that's easy to answer either way. Both answers help: a booked job or a clean list. For openers, see how to write a first iMessage that customers actually reply to.

What is the two-unanswered-messages rule?

Never let more than two follow-ups in a row go unanswered. After the day 3 and day 7 texts get no reply, you're done until the homeowner writes back.

ZeroSettle enforces a stricter version of this for anyone who has never sent your number anything: at most 2 messages before their first reply. A third is refused with 403 awaiting_reply, and nothing is sent. Two details matter for painters:

  • Someone who booked the walk-through by text has already replied, so only your own two-follow-up rule applies.
  • Someone from a web form who never answered gets two messages in total. If day 1 was your first text, day 3 is the last, so write it to stand alone. A text confirming the walk-through that they never answered already used one of the two. Messages sent within 5 minutes of the first count as one, so the estimate text and a quick “here's the link” right after it are one.

The rule protects more than manners. ZeroSettle's docs: “Repeated messages to people who never answer are the fastest way to get a number flagged by Apple: when that happens every send fails, to everyone.” Lead nurture on iMessage without getting your number flagged goes deeper.

What do you do when they finally reply?

Answer what they asked, in the thread, the same day, then offer the next step. A reply is also when the richer iMessage features open up.

  • Reply inline. When they send two or three questions at once, thread each answer under its question so nobody guesses which “yes” goes where. In the API that's reply_to on POST /api/imessage/send (Send a message).
  • Now send the photo. Their stairwell from the walk-through, or the color sample on their wall, persuades once they're talking to you. Before that it's pushy, and ZeroSettle refuses it anyway: photos, videos, voice messages and polls go only to contacts who have replied (403 attachment_before_reply). A photo can carry a caption (Attachments).
  • Put changes in writing. A new scope or color gets a revised estimate by email and the new total confirmed in the thread.
  1. Tue 4:12 PM
  2. Business: Hi Megan, it's Luis from Brightline Painting. Your estimate for the living room, hallway and stairwell is in your email: $3,850, two coats on walls and ceilings, trim included. Did it come through OK?
  3. Thu 9:47 AM
  4. Business: Morning Megan, Luis from Brightline. Your job is about three days on site, and our next open start is the week of the 17th. Anything on the scope you'd change?
  5. Thu 8:31 PM
  6. Customer: sorry, crazy week!
  7. Customer: does the price include the stairwell ceiling? it's really high
  8. Customer: also could we do a warmer white than the one we talked about
  9. Fri 8:05 AM
  10. Business: Yes, the stairwell ceiling is included. We bring the tall ladder and drop cloths for it.
  11. Inline reply to “does the price include the stairwell ceiling?”
  12. Business: Photo: two white samples on the hallway wall
    Warmer white works, same price. Here's sample B (warmer) next to the one we talked about, from the walk-through.
  13. Inline reply to “also could we do a warmer white”
  14. Business: Want me to hold the week of the 17th for you?
  15. Customer: B is perfect. yes let's do the 17th❤️
Illustrative example with a fictional painting company, Brightline Painting (brightlinepainting.example). Blue bubbles are the business's iMessage number; gray bubbles are the homeowner's. The day 3 follow-up gets the reply; the photo goes out only after she has answered, and each answer is threaded under the question it answers.

How do you automate estimate follow-ups?

Three ways: the hosted AI agent's triggers, a Zapier Zap, or a GoHighLevel workflow. In all three, the estimator still answers the replies.

Option 1: the hosted agent's follow-up triggers

A once trigger fires after_days (0 to 30) after a conversation's last message, at morning (9 to 11 AM), afternoon (1 to 3 PM) or evening (6 to 8 PM) in your timezone, following a plain-words instruction. Its own texts don't restart the clock, so triggers at 2 and 6 days both count from your day 1 estimate text and land on day 3 and day 7. It never fires when the homeowner wrote last, so a reply stops the sequence by itself. When it fires, the agent sends up to three texts, or nothing when the instruction doesn't apply; credits are used only for texts it sends.

Set Response time to Don't Reply (dont_reply) and the agent never answers a reply: “its triggers still fire, and you reply yourself from the console or the API,” in the docs' words. Pricing conversations stay with your estimator. Send the day 1 text through the API or Zapier from the same number; the agent reads your texts in the thread as its own, so it knows what you quoted.

bash
curl -X PUT https://portal.zerosettle.io/api/imessage/agent \
  -H "Authorization: Bearer $ZEROSETTLE_TOKEN" -H "Content-Type: application/json" \
  -d '{"managed_by": "zerosettle", "response_time": "dont_reply",
       "timezone": "America/Chicago",
       "triggers": [
        {"repeat": "once", "after_days": 2, "at": "morning",
         "instruction": "Only if our last message delivered a painting estimate and they have not replied since: send one short text from Luis with one useful detail from the estimate (the timeline or what is included), ending on one easy question. No discounts. Otherwise send nothing."},
        {"repeat": "once", "after_days": 6, "at": "afternoon",
         "instruction": "Only if our estimate and one follow-up are unanswered: send one polite text saying Luis will close the estimate out for now unless they want their start week held, and ask which they prefer. Otherwise send nothing."}]}'

Notes before you switch it on:

  • triggers is the whole list, so this replaces the default follow-up (once, 1 day after the last message). Write your business_context first; the example describes a made-up software business.
  • A once trigger runs in every conversation on the number that goes quiet, not only estimates. Hence “Only if” in each instruction, and “one short text”, since a trigger may otherwise send up to three.
  • first_message still goes to anyone who texts the number for the first time, even with Don't Reply, so make it a greeting that fits any homeowner.
  • Trigger texts follow STOP, the two-messages-before-a-reply limit and the new-contact limits, and never fire into a group chat. For a homeowner who has never replied, that means the day 7 text doesn't go out: day 3 is their last.

The same settings live in the console's Messaging tab (AI agent in the console), and every field is in the AI agent docs.

Option 2: Zapier

If your estimating app or CRM connects to Zapier, build the sequence there with ZeroSettle's Send iMessage action and New iMessage Received trigger. Sends follow the same rules as the API.

  1. Zap 1, estimate sent: trigger on “estimate sent” in your tool → Send iMessage with the day 1 text (scope, total, question).
  2. Zap 1, continued: Zapier's own delay step until day 3 → a filter that continues only if the lead isn't marked as replied → Send iMessage with the day 3 text. Repeat for day 7.
  3. Zap 2, they replied: New iMessage Received → mark the lead as replied in your tool, so the filter in Zap 1 stops the sequence, and notify the estimator.

Keep the number Managed by API so the replies reach your estimator. Recipes for this pattern are in iMessage automations with Zapier, n8n or Make.

Option 3: GoHighLevel

Install the iMessage (ZeroSettle) app on the sub-account and choose it as the SMS provider (Settings → Phone Numbers → Advanced Settings → SMS Provider). Workflow Send SMS actions then go out from your iMessage number, and replies land in the contact's conversation. Put waits between the day 1, 3 and 7 texts and end the workflow when the contact replies. A send the rules refuse is marked failed with the reason. Keep the number Managed by API, since GoHighLevel can't send on a number the AI agent manages except through the agent. Setup details are in GoHighLevel + iMessage and the CRM integrations docs.

Automation doesn't change who you may text

A workflow sends to whoever enters it. Only put homeowners in it who asked you for this estimate. ZeroSettle's docs: “If you are unsure whether you have consent, you don't.”

When should you stop following up?

Stop after two unanswered follow-ups, the moment they say no, and immediately on STOP. Everything after that is their move.

  • Day 7 went unanswered. Mark the estimate closed. Don't add a day 14 “one last thing”.
  • They went with someone else. Thank them in one line, and ask once whether they're OK hearing from you about future projects. Bringing back past painting customers covers who you may text later and how.
  • “Not this year.” Ask when to check back and put that date in your CRM. It isn't permission for a monthly drip.
  • STOP, “remove me” or “wrong number”. ZeroSettle records the opt-out and blocks every number on your account from texting them (403 recipient_opted_out) until they text START. Keep your own list too, for calls and email.

What should painters not do in a follow-up?

Don't pressure, don't discount unprompted, and don't send what the homeowner didn't invite:

  • “Just checking in!” It adds nothing and makes them restart the conversation.
  • Fake urgency. “Price good until Friday” reads as a sales trick. If your schedule is filling, say which week is open.
  • An unprompted discount. Talk scope instead: fewer rooms, one coat on the ceilings, or they move the furniture.
  • Links or photos in a cold first text. A link to someone who never texted your number shows as plain, untappable text, and a photo is refused until they reply.
  • Texting at 7 AM or 10 PM. Stay between 8 AM and 9 PM in their time zone.
  • A crew group chat before they've booked. One iMessage group per job is great once the job is on the calendar, not before.
  • Letting software negotiate. If the hosted agent also answers, tell it in the business context never to change a price or promise a date.

What does this cost?

The subscription covers the number; credits are used only if the hosted AI agent sends the texts. ZeroSettle has three plans:

  • Pro: $49/month for one dedicated iMessage number, 5 new contacts a day, and 500 free credits once.
  • Growth: $199/month per number (upgrade in the console), 50 new contacts a day per number (and 3 per 15 minutes), team members for your estimators, and 1,000 free credits once. From a Growth link, $599/month covers 3 numbers, plus $199 for each extra number.
  • Enterprise: custom pricing through sales for high volume and compliance needs; book a demo.

Each text the agent sends uses one credit, so with Don't Reply and instructions that ask for one text per trigger, a quiet estimate costs at most two credits. Free credits come once and don't refill; packs are 1,000 for $50 or 5,000 for $200 and never expire. Texts you send yourself use none. Each number allows 10,000 messages a day, sent and received, with known contacts. The subscription has a 30-day money-back guarantee. More in ZeroSettle pricing and how to grow a home service business with iMessage.

Frequently asked questions

How many times should I follow up on a painting estimate?

Twice after the text that delivers the estimate: once around day 3 and once around day 7, then stop unless they reply. If the homeowner has never replied to your number at all, ZeroSettle allows only two messages before their first reply, so when the estimate was your first text, the day 3 text is your last one.

Should I offer a discount to revive a quiet estimate?

Not in a follow-up. A discount nobody asked for tells the homeowner your first number was padded, and it trains them to wait. If they say the price is the issue, ask what they would change in the scope, and send a revised written estimate instead of a price in a text.

Can the AI agent send the follow-ups while my estimator answers the replies?

Yes. Set the hosted agent's response time to Don't Reply: it never answers, but its triggers still fire, so it sends the day 3 and day 7 follow-ups while you reply yourself. Each text it sends uses one credit.

Do estimate follow-ups count against the new-contact limit?

Not when the homeowner already texted your number or you already have a conversation with them. A homeowner you text first, for example from a web form, counts once as a new contact on the day of that first text: 5 a day per number on Pro, 50 a day per number on Growth (and 3 per 15 minutes).

Can I text the estimate PDF?

No. Photos, voice messages and videos are the attachment types; documents can't be sent. Email the PDF or use your estimating app's link, and put the scope and total in the text itself. A link only becomes tappable once the homeowner has texted your number or saved it as a contact.

Will homeowners with Android phones get these texts?

ZeroSettle sends iMessage, which reaches Apple devices. SMS fallback is a limited pilot that ZeroSettle must enable per account, so plan another channel, such as a call or email, for homeowners who aren't on iMessage.

Sources

  1. ZeroSettle iMessage API docs: “Your iMessage number” (Pricing), “Send a message” (Links in a first message, Polls, Replies, SMS fallback), “Attachments” (Send a photo, Not (yet) attachments), “AI agent” (Managed by AI Agent, Triggers, Credits), “AI agent in the console”, “Errors, limits, and compliance” and “CRM integrations” (GoHighLevel and LeadConnector, Zapier). Checked November 2, 2026.
  2. ZeroSettle iMessage API Terms of Service.

Written by the ZeroSettle team. ZeroSettle is an iMessage API: a dedicated phone number on iMessage, running on Apple hardware we operate for you in a server facility, that your team or your code texts customers from and hears back on.

Product facts on this page come from the ZeroSettle iMessage API docs as of November 2, 2026. Brightline Painting, Luis and Megan are fictional, the cadence and texts are illustrative, and this page is not legal advice.

Follow up on every estimate from your own iMessage number

ZeroSettle gives your painting business a dedicated number on iMessage, running on Apple hardware we operate for you in a server facility. Text from the console, Zapier or GoHighLevel, or let the hosted agent send the follow-ups.

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.