GoHighLevel estimate follow-up workflow: day 0, 1, 3, 7, built right
Most contractors send the quote and wait. The ones who follow up four times close 8 to 20 points higher. This is the workflow we build so the follow-up happens on every quote without anyone remembering.

How do you automate estimate follow-up in GoHighLevel?
Create an Opportunities pipeline with a “Quote sent” stage, trigger a workflow on Opportunity Status Changed into that stage, and send four SMS steps separated by waits (10 minutes, 1 day, 2 days, 4 days) from the estimator’s name, each with the quote link and one job-specific fact. Turn on Stop on response, move the opportunity to Won or Lost when the customer replies, and add a Texas 9am–9pm window. Feed the pipeline from your field software by Zapier or native integration so the quote-sent event starts it automatically.
What you need before you start
- A pipeline under Opportunities with stages: New lead → Estimate booked → Quote sent → Won → Lost (with a Lost reason custom field).
- Your field software connected: ServiceTitan or Jobber via Zapier or Make (“Estimate sent” → create/update opportunity), Housecall Pro via Zapier, or HighLevel forms if you quote inside HighLevel.
- Custom fields on the contact: quote_link, quote_amount, job_type, estimator_name.
- A2P 10DLC approved and a local number.
- Trade templates written by job type: see our plumbing, electrical, landscaping and cleaning follow-up pages for the wording.
Step-by-step build
Build the pipeline
Opportunities → Pipelines → New. Stages: New lead, Estimate booked, Quote sent, Won, Lost. Add custom field “Lost reason” (Price, Timing, Chose competitor, No response).
Connect the quote event
Zapier: trigger “Estimate sent” (Jobber: Quote sent; ServiceTitan: Estimate created; Housecall Pro: Estimate sent) → action HighLevel “Create/Update Opportunity” in stage Quote sent, mapping quote link, amount, job type and tech name to custom fields.
Create the workflow
Automation → Workflows → trigger Opportunity Status Changed, filter: pipeline = Estimates, stage = Quote sent.
Day 0 text
Wait 10 minutes → Send SMS from {{contact.estimator_name}}: “Hi {{contact.first_name}}, [Tech] here. Your quote for the {{contact.job_type}} is here: {{contact.quote_link}}. We can hold [day] for you until tomorrow. Want it?”
Day 1, 3 and 7 texts
Wait 1 day → SMS (equipment in stock / permit filed) → Wait 2 days → SMS (one real reason with a date) → Wait 4 days → SMS (honest close: “if you went another way, no hard feelings, just tell me”). Use the job-type wording from the trade pages.
Pause and stop
Workflow Settings: Stop on response ON. Add trigger Opportunity Status Changed to Won or Lost → remove from workflow. Add trigger Customer Replied → notify estimator by SMS and create a task.
Log the outcome
Add an If/Else at the end: no reply after day 7 → move opportunity to Lost, set Lost reason “No response”, add tag “reactivate-next-season”.
Texas window and signature
Workflow Settings → Time Window 9am–9pm Mon–Sat, noon–9pm Sun. Put the licence number in the day-0 and day-7 texts.
The exact settings we use for home services
| Setting | What we set | Why |
|---|---|---|
| Trigger | Opportunity Status Changed → stage Quote sent | Fires once per quote, not per contact |
| Waits | 10 min, 1 day, 2 days, 4 days | Lands on day 0, 1, 3, 7 |
| Sender | Estimator’s name from a custom field | People reply to people |
| Stop on response | ON | Never text after they answered |
| Won/Lost trigger | Removes from workflow | Booked customers do not get day-3 nudges |
| Lost reason field | Required on Lost | After 50 quotes you know what to fix |
| Emergency variant | Waits 10 min, 2 hours, next morning | Plumbing and HVAC emergencies decide in a day |
| Reactivation tag | reactivate-next-season on No response | Feeds the seasonal campaign |
Where this goes wrong
- Triggering on contact tag instead of opportunity stage. A customer with two quotes gets two overlapping sequences. Trigger on the opportunity.
- Generic copy in every step. “Just checking in” four times is spam. Each text carries one fact: stock, permit, rebate, phased option.
- No Won/Lost removal. The customer books on day 1 and gets the day-3 and day-7 texts anyway.
- Wrong timing for the trade. Plumbing decides in a day; electrical in a month; landscaping in two. Use the trade sequences, not one default.
- Forgetting the quote link. People lose the email. The text is where they find the quote again.
Texas notes
A quote follow-up goes to someone who asked for the quote, so it is consent-based contact; keep the record of the request (the call recording or form submission) in the contact. Add the RMP, TECL, TACLA or LI number to the signature where the trade requires it in advertising. Under Texas SB 140 (effective 1 September 2025) texts to prospects are telephone solicitation, so send windows stay 9am to 9pm Monday to Saturday and noon to 9pm Sunday; follow-up to people who contacted you first is exempt from registration under the November 2025 settlement, and Texas is one-party consent for recording.
What this costs in HighLevel
HighLevel plans are $97 (Starter) or $297 (Unlimited) a month per agency; most contractors pay an agency a flat fee that includes the sub-account. Usage below is at LC Phone rates with HighLevel’s 5% markup.
| Line item | Monthly |
|---|---|
| Workflow and pipeline | $0 (included) |
| Texts: 60 quotes × 4 segments at about 0.8¢ | About $2 |
| Zapier for the quote-sent trigger | $0–$30 depending on task volume |
| Total | Under $35 a month, usually under $5 without Zapier |
Questions owners ask
What trigger should start an estimate follow-up in GoHighLevel?
Opportunity Status Changed into your “Quote sent” stage. It fires once per quote and is easy to stop when the opportunity moves to Won or Lost.
How do I get the quote-sent event from Jobber or ServiceTitan?
Through Zapier or Make: Jobber “Quote sent” or ServiceTitan “Estimate created” → HighLevel “Create/Update Opportunity”. Housecall Pro works the same through Zapier.
How many texts and when?
Four: 10 minutes, next day, day 3 and day 7 for standard work. Emergencies use 10 minutes, 2 hours and next morning. Electrical and landscaping stretch to 14 and 45 days.
How do I stop the sequence when the customer replies?
Turn on Stop on response in workflow settings and add a Won/Lost trigger that removes the contact.
Should texts come from the company or the tech?
The tech who gave the quote, pulled from a custom field. Reply rates roughly double.
Can I include the quote PDF?
Include the quote link in every text. MMS attachments cost more and often fail; a link works.
What happens to quotes that never reply?
Move to Lost with reason No response and tag for next season’s reactivation campaign.
Is this legal in Texas?
Yes. The homeowner requested the quote, so follow-up is consent-based and exempt from SB 140 registration under the November 2025 settlement. Keep sends 9am–9pm.
Do I need the Unlimited plan?
No. Workflows and pipelines are in Starter. You need Unlimited only for multiple sub-accounts.
What does it cost?
Under $5 a month in texts for 60 quotes, plus Zapier if you use it for the trigger.
Next pages
Sources
- Apexure, GoHighLevel Pricing (4 Sep 2026): Starter $97, Unlimited $297, AI Employee $50/$97, Voice AI $0.045/min engine plus voice, LC Phone $0.00747 per SMS segment, $0.01165 per inbound minute, $1.15 per local number, A2P $24.50.
- HighLevel Help Center, Workflows, Voice AI Agents and LC Phone documentation (accessed 20 Oct 2026).
- SchedulingKit, Electrician Industry Statistics 2026: 48% → 56% close with a 14-day nurture (Jobber podcast).
- WebFX, Home Services Marketing Benchmarks (updated 29 Jun 2026): sales cycles by trade.
- Texas SB 140 (1 Sep 2025); Texas AG settlement Nov 2025.
Want the pipeline, the Zap and the four texts built in your voice?
We connect your field software, build the sequence by job type, set Texas hours and show you the first month’s recovered quotes.