Article body
Patrick runs Patty's Pressure Washing. He came to us through cold outreach, said yes faster than most, and 14 days later had a website that actually did something. This is what that looked like from the inside -- including the parts that didn't go as planned.
TL;DR
- Site live in 14 days -- $475 one-time setup, built on GHL
- Missed call SMS active from day one -- 30-second auto-text with a quote link
- Google Ads: $400 spent, 4 leads, 1 job closed -- break-even, honest
- Missed call automation recovered 2 jobs that would have walked away for free
- Database reactivation: 4 replies, 1 booking from a single SMS blast
Where He Started
Patrick had been running his business for years. Solid reputation, mostly referrals and Google searches. He had a website. It loaded fine, listed his services, had his number at the top.
But it didn't capture anything. Someone lands on it at 9pm on their phone, wants to get a quote -- there's no good path. Fill out a contact form, wait a day, maybe get a call back. Most people just go back to Google and click the next result.
Missed calls were the bigger problem. When you're on a job with a pressure washer running, you can't hear anything. A lead would call, get no answer, and move on. No text back, no record they called, no way to follow up. That lead was just gone.
That's not a Patty's problem. That's a contractor problem. Most solo operators and small crews are in the exact same spot: the business is real, the work is good, but the website and the phone situation are quietly costing them jobs every week.
The 14-Day Build
We work fast. Not because we skip things, but because a contractor website doesn't need to be a six-week project. Here's how the two weeks actually broke down:
- Day 1: Intake. Short call with Patrick. Services, target neighborhoods, job photos, what kind of customers he wants more of. Maybe 30 minutes total.
- Days 2-5: Build. Site goes up in GHL using our contractor snapshot. Homepage, services section, before/after gallery, contact form. Written around his business -- not a generic template with his name swapped in.
- Days 6-8: System setup. A2P number verified, missed call text back activated, Google Ads conversion tracking installed, CRM pipeline configured for incoming leads.
- Days 9-11: Review pass. Patrick reviewed the site and requested a few tweaks. Every change turned around the same day.
- Days 12-13: Google Ads build. Search campaign set up targeting his service area, starting at $200/month budget.
- Day 14: Live.
No long approval chains. No waiting on "brand guidelines." Patrick knew what he wanted, we built it, and we both moved fast.
What We Actually Set Up
The site itself is simple on purpose. Clean hero with a strong headline, services section with what he covers, before/after photos from real jobs he sent us, and a contact form that fires leads directly into his GHL pipeline. One page done well beats a six-page brochure nobody reads.
The system behind it is where the work is:
Missed call text back. Someone calls, doesn't reach Patrick, gets an automated text within 30 seconds. Not "your call is important to us." Something that sounds like it came from a person: "Hey, this is Patrick from Patty's -- sorry I missed you. Still need a hand? Here's a quick quote link: [link]." That single text keeps the conversation alive long enough for him to respond when he's off the job.
Quote form. The link in that text goes to a short form: name, phone, address, what they need done. The submission drops into his CRM pipeline as a new lead. He sees it on his phone, replies when he's free. No more losing track of who called.
Database reactivation. Around day 10, we sent one SMS to his existing contact list. Short and direct: "Hey, it's Patrick -- wrapping up a few jobs this week. Let me know if you need the house or driveway done." Four people replied. No pitch. Just a reminder that he exists.
Google Ads: The Real Numbers
Here's where we have to be straight with you.
At around $250-$300 average for a residential pressure wash, that's roughly $300 in revenue against $400 in spend. Break-even. Not a win. Not a disaster either -- but not the return you want from paid ads.
Here's the thing: a $100 cost-per-lead isn't actually out of range. The average CPL for home services on Google paid search ran $90.92 across all trades in 2025, with higher-ticket services like roofing and HVAC bringing up that average. Pressure washing is a lower-ticket service, so the margins on paid search are naturally tighter.
What makes paid search work long-term is volume and runway. Google's algorithm needs roughly 30-50 conversions per campaign per month to optimize properly. Four leads total in 60 days doesn't give it enough data. The first two months are always the worst -- ads improve as conversion history builds. And the economics shift completely if your average ticket is higher. A contractor running whole-property packages at $800-$1,000 per job sees a completely different return on the same $100 CPL.
Patrick's ad campaign was a proof-of-concept at a conservative budget. The system works. The math just needs either more budget or higher-ticket services to get into real ROAS territory.
The Missed Call SMS: The Surprise Win
We didn't have precise tracking on every auto-text interaction. But Patrick told us directly: two jobs came from the missed call text that he would have lost before the system was in place.
One case stood out. A homeowner called twice on a busy day, got no answer both times, and was about to move to the next name on Google. The auto-text caught them. They replied with their address, filled out the quote form, and booked the job.
That job cost $0 in ad spend.
At a $300 average residential ticket, recovering two jobs from missed calls is $600 in revenue. The missed call automation doesn't cost extra on top of the monthly plan. So those two recovered jobs alone cover multiple months of overhead.
Most contractors never do this math. Every missed call has a dollar value attached to it. Most of them are just quietly walking away.
What Didn't Work
Real talk: a few things underperformed.
Google Ads at a small budget broke even. Not surprising in hindsight. Pressure washing CPLs on search are too high for a $200/month budget to generate real return. The right starting budget is $600-$800/month minimum, with an expanded service menu (driveway sealing, commercial accounts, soft washing packages) to raise the average ticket and make the CPL math work.
The database reactivation got mixed results. Four replies sounds decent until you realize the list was old. Reactivation campaigns work best with customers from the last 6-12 months. The older the list, the more messages it takes to find someone ready to book again. Running reactivation every quarter instead of one-and-done would improve the numbers significantly.
Two tools, two systems. Patrick had prepaid a full year of Jobber before coming to us. He runs his scheduling in Jobber and his leads in GHL. It works, but it's an extra step every time a job moves from quote to booked. When his Jobber year is up, consolidating everything into one CRM will cut that friction out entirely.
Bottom Line
Fourteen days from intake to live. A website that captures leads, fires automated follow-up texts, and drops new prospects into a CRM pipeline -- all running without Patrick doing anything after setup.
Google Ads broke even. The missed call system recovered two jobs that would have walked. Database reactivation found a few customers who needed a nudge. None of those things were possible before, because there was no system to make them possible.
The 60-day snapshot is never the full story. The site is still live. The automation is still running. Every job Patrick closes from here adds a review, a reactivation contact, and data that makes the next campaign smarter. That's how this stuff compounds over 12 months -- not one good week, just a machine that keeps working.
The setup shown here is what's included in the Site + Full System plan: website, missed call SMS, CRM pipeline, review engine, and follow-up sequences. The Services page has everything that's in it.