Home Service Business Marketing: SEO That Books Jobs

Every guide to home service business marketing hands you the same list. Build a website, claim your Google Business Profile, ask for reviews, post on Facebook, run some ads, buy leads. Eight to seventeen tactics, no order, no arithmetic, and no way to tell which one paid for itself.
We read the four pages Google currently surfaces for this query, roughly twelve thousand words between them. Not one contained a line of code, a schema snippet, a Search Console instruction, or the cost per booked job for any channel. Two of the four end by selling you their own agency.
This article does the part they skip. It separates the channels you rent from the ones you own, gives you the arithmetic to compare them, and shows the search side in enough detail that you can paste it. Organic traffic and a Business Profile are the cheapest lead sources a one-truck operation has, and they are also the only two nobody can invoice you for per lead.
Read your own market's search results before you buy anything
The query you are reading this from is not one audience. It is two, and they sit on nearly identical words. Here is the family, measured in Ahrefs for the United States on 2026-09-27:
| Keyword | Volume/mo | Difficulty | What the results page carries |
|---|---|---|---|
| home service marketing | 885 | 3 | AI Overview, map pack, videos |
| home service business marketing | 873 | 0 | AI Overview, forum threads, videos |
| home service marketing agency | 812 | 7 | Map pack, paid ads, sitelinks |
| home service digital marketing | 671 | 0 | AI Overview, forum threads |
| home service marketing company | 268 | 3 | AI Overview, paid ads |
| seo marketing for home service companies | 178 | 14 | Questions, sitelinks |
Two of those six are people shopping for a vendor. You can tell without opening them: agency and company carry paid ads at the bottom and a map pack, because Google has learned that searchers typing those words are ready to hire somebody local.
The other four are owner-operators trying to do the work themselves. Same six words, rearranged, and a completely different reader on the other side.
This is the check worth running on your own services before you write a page. If your painting business builds a page for "house painter quotes" and the results are full of marketplaces that sell quotes, you are not competing with painters, you are competing with a lead broker who bids on that word for a living.
What a weak results page looks like
The top ten organic slots for home service business marketing are worth describing, because a results page this thin is an opportunity and most people never look:
- A page about home care marketing at domain rating 70, a different industry entirely, holding position 2 with four backlinks.
- A LinkedIn post at position 3.
- A page about referral partners on an HVAC training site: domain rating 27, zero backlinks.
- A Reddit thread, and a thread on a vaping forum. Yes, a vaping forum, ranking for home service marketing.
- Four YouTube clips, one podcast episode, a post from 2019 about marketing an HVAC business, and an opinion piece about losing contractor leads.
Backlink counts on the ranking pages: 4, 0, 1, 1, 1. The entry price is at the floor.
When Google ranks two forum threads and a podcast for a commercial query, it is telling you something specific. It could not find an article that answers the question, so it fell back on people arguing about it. That is the clearest buy signal a results page gives.
There is a catch on this one, and it is worth naming. An AI Overview sits above all ten slots, with nine links cited inside it. Those nine pages are the real competition here, and five of them are software vendors' blogs. A query with an AI Overview loses clicks to the summary, so treat the ranking as partial credit.
Rented leads and owned leads are not the same purchase
Every channel available to a home service business falls on one side of a line. Either you pay per lead, forever, or you pay to build something once and keep it.
Google's own Local Services Ads are explicit about which side they are on: "Pay only for leads related to your business and the services you offer." That is a per-lead purchase, not a per-click one.
Thumbtack's help pages describe the same shape from the other direction. Pros are charged at the point of connection, when a customer first reaches out, not when work is completed. Prices vary "based on things like the type and size of the job, how many pros are available, and your market." Refund requests run on a 45-day window.
None of that is a criticism. Pay-per-lead is the fastest channel to switch on and the only one that works on day one. It is simply a rental. Next month's leads cost the same as this month's, and the month you stop paying is the month the phone stops.
| Channel | What you pay per unit | The month you stop paying | Measurable? | Compounds? |
|---|---|---|---|---|
| Local Services Ads | Per lead | Volume goes to zero | Yes, in the ads console | No |
| Lead marketplaces | Per connection or quote | Volume goes to zero | Partly, inside their app | No |
| Search ads | Per click | Volume goes to zero | Yes | No |
| Business Profile | Nothing | Nothing changes | Yes, profile performance | Slowly |
| Pages that rank | Build cost, once | Decays over months | Yes, Search Console | Yes |
| Social posting | Time | Reach ends with the post | Barely | No |
The two rows at the bottom of the compounding column are why this article is about search. A Business Profile and a page that ranks are the only lines nobody can bill you per lead for.
The arithmetic, in numbers you already have
You need three figures per channel: what you spent, how many jobs it booked, and your gross profit per job. Everything else is decoration. Here is a calculator you can paste into a file and run with node compare.js:
// compare.js: cost per booked job, and the break-even on an owned page.
const channels = [
{ name: 'Local Services Ads', spendPerMonth: 1200, bookedJobs: 6 },
{ name: 'Lead marketplace', spendPerMonth: 800, bookedJobs: 3 },
{ name: 'Search ads', spendPerMonth: 900, bookedJobs: 4 },
]
const grossProfitPerJob = 420 // revenue minus materials, labour, fuel
const pageBuildCost = 600 // what one real service page costs you to make
const pageJobsPerMonth = 2 // what it books once it ranks, if it ranks
for (const c of channels) {
const cpj = c.spendPerMonth / c.bookedJobs
const margin = grossProfitPerJob - cpj
console.log(
`${c.name}: $${cpj.toFixed(0)} per job, ` +
`$${margin.toFixed(0)} left per job, ` +
`$${(margin * c.bookedJobs).toFixed(0)} profit per month`
)
}
const pageProfitPerMonth = grossProfitPerJob * pageJobsPerMonth
console.log(
`Owned page: pays back in ` +
`${(pageBuildCost / pageProfitPerMonth).toFixed(1)} months, then keeps running`
)
Run it with your own figures and the comparison stops being a matter of opinion. In the sample numbers above, the marketplace row is burning $267 per job against $420 of gross profit, which is a business that works but barely, and the page pays for itself inside a month of ranking.
The word doing all the work in that last sentence is if. Google's own page on hiring an SEO puts it plainly: "No one can guarantee a #1 ranking on Google. Beware of SEOs that claim to guarantee rankings, allege a 'special relationship' with Google, or advertise a 'priority submit' to Google." The map side carries the same warning: "There's no way to request or pay for a better local ranking on Google."
So the honest version of the arithmetic is a bet with a known cost and an unknown payout, against a rental with a known cost and a known payout. Run both. Fund the rental while the owned side is built, and read the numbers monthly instead of arguing about channels. We laid out the same comparison against paid search in SEO vs Google Ads, and the decision frame for whether search is worth the build at all in is SEO worth it.
If what you actually want is the price of hiring this out, we priced the line items in how much does SEO cost.
One customer, three surfaces, three different levers
A homeowner with a leaking water heater performs one search and sees three kinds of answer. They are ranked by different machinery, and a tactic that moves one does nothing for the others.
| Surface | What ranks there | Your lever | Where you read the number |
|---|---|---|---|
| Map pack | Business Profiles | Categories, services, reviews, prominence | Profile performance |
| Organic results | Pages | Content, internal links, links earned | Search Console |
| AI Overviews, assistants | Indexed pages, cited | Being indexed and snippet-eligible | Search Console, Web search type |
For the map pack, Google names three factors and defines them itself: relevance is "how well a Business Profile matches what someone is searching for", distance "refers to how far each business is from the customer who's searching", and prominence "means how well-known a business is."
Read that list for what it does not include. Distance is not something you can edit. Relevance is a twenty-minute job of categories and service lists. Prominence is the only factor with room in it, and it is fed by links and reviews your listing cannot generate on its own. We went through the profile fields one by one in Google Business Profile optimization.
The AI surface is where the most money is currently wasted on the wrong thing. Google's documentation on AI features states it directly: "You don't need to create new machine readable files, AI text files, or markup to appear in these features." Eligibility is simpler than the industry implies: "To be eligible to be shown as a supporting link in AI Overviews or AI Mode, a page must be indexed and eligible to be shown in Google Search with a snippet."
That is the whole requirement. Indexed, snippet-eligible, and it says something worth citing. If your pages are not indexed, no file you invent fixes it, and why a website is not showing up on Google walks the four branches that cause it. For the part that genuinely differs when an assistant answers instead of a results page, see LLM SEO.
Your service area is data, not a sentence on the About page
Most home service businesses have no storefront, and Google has specific rules for that case. They are worth quoting because breaking them is the most common cause of a suspended profile.
If you work from home or from a truck: "If you're a service-area business, you should hide your business address from customers." A rented mailbox does not fix it either. "If your business rents a physical mailing address but doesn't operate out of that location, also known as a virtual office, that location isn't eligible for a Business Profile."
There is also a size limit most owners never hear about. "The boundaries of your profile's overall service area shouldn't extend farther than about 2 hours of driving time from where your business is based."
On your own site, the same fact belongs in structured data, where a crawler can read it without parsing your prose:
{
"@context": "https://schema.org",
"@type": "HomeAndConstructionBusiness",
"name": "Rivera Plumbing",
"url": "https://example.com",
"telephone": "+1-512-555-0142",
"priceRange": "$$",
"areaServed": [
{ "@type": "City", "name": "Round Rock" },
{ "@type": "City", "name": "Pflugerville" },
{ "@type": "City", "name": "Cedar Park" }
],
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "07:30",
"closes": "18:00"
}]
}
Before you ship a type you found in a blog post, check that it exists. Verified against schema.org on 2026-09-27, these return 200: LocalBusiness, HomeAndConstructionBusiness, Plumber, HVACBusiness, RoofingContractor, HousePainter, Electrician, ProfessionalService.
These two return 404: LandscapingBusiness and CleaningService. Both read as though they should exist, both are recommended in guides, and neither is a real type. A landscaper or a cleaning company should use HomeAndConstructionBusiness or plain LocalBusiness instead.
One command settles it before the markup ships:
curl -s -o /dev/null -w "%{http_code}\n" https://schema.org/HomeAndConstructionBusiness
We are not above this mistake. An older article on our own blog still recommends a photography type that returns 404, and it is queued for a fix. A type that does not resolve is not a penalty, it is just markup a crawler ignores, which makes it the most quietly wasted hour in local SEO.
City pages, and the line where they become doorways
The standard advice is a page per city you serve. It works, and it is also the fastest way to trip a spam policy, so the line matters.
Google's spam policies, updated 2026-08-28, define the failure: "Doorway abuse is when sites or pages are created to rank for specific, similar search queries." The example named in the policy is exactly the tactic done badly: "Having multiple domain names or pages targeted at specific regions or cities that funnel users to one page."
The test is not how many pages you have. It is whether each page carries something that is only true in that city. Permit rules and the local inspection office. What the housing stock is made of, and the failure that comes with it. Response time from your actual base. Named jobs you have done there, with photos.
If you cannot write three paragraphs that are false in the next town over, you do not have a city page, you have the same page with a word swapped. Build four real ones instead of thirty thin ones. SEO for contractors covers the trade-specific version of this in more depth, and DIY SEO for small business covers the checks worth running yourself.
Reviews are the prominence lever, and three common asks break the policy
Reviews are the one prominence input an owner controls, and Google says so on its local ranking page: "More reviews and positive ratings can help your business's local ranking."
Which is exactly why the shortcuts are tempting and why they are explicitly banned. The Maps content policy prohibits "Reviews or ratings that have been paid for, directly or in kind" and any "Content that has been posted due to an incentive offered by a business - such as payment, discounts, free goods and/or services". Merchants specifically may not "Offer incentives - such as payment, discounts, free goods and/or services - in exchange for posting any review or revision or removal of a negative review."
Three asks that violate that, all of them common in this industry: $25 off the next service for a review, a raffle entry for reviewers, and asking happy customers for a public review while routing unhappy ones to a private form. The full treatment, including the arithmetic of how many reviews it takes to move a rating, is in how to get more Google reviews.
Knowing which channel actually booked the job
Here is the uncomfortable part. A phone call is the least attributable event in marketing, and home services runs on phone calls.
What you can measure precisely is the search side. Search Console gives you, per query and per page, impressions, clicks, and average position, kept for 16 months. That is enough to answer the only question that matters at this stage: is this page being shown, and does anyone click it?
Those two numbers split into four states, and each state calls for a different action. We mapped them in how to get traffic to your website. The state that catches everyone is impressions without clicks, because it feels like failure and is usually a title problem, not a ranking problem.
We will use our own numbers rather than a hypothetical. Over 2026-08-30 to 2026-09-27, our article on DIY SEO for small business earned 190 impressions and zero clicks. Over the same window our brand query drew 50 impressions and 19 clicks, a 38% click rate at average position 1.9.
The same property, the same month. One page is being shown to people who do not want it or cannot tell from the title that they do, and the difference is not a ranking problem, because the page is being shown. Publishing that is cheaper than pretending we only have wins.
For the parts you cannot attribute, say so out loud instead of buying a tool that invents an answer. A customer who read your water heater page in March and called the number off your truck in May is an organic booking that no analytics product will ever label. The workable version is a call tracking number on the website only, distinct from the number on the profile and the truck, which at least separates web-driven calls from everything else.
On timing, be suspicious of any number offered to you. We measured what Search Console actually lets you observe about lead time in how long does SEO take to work, and the honest summary is that crawl, index, first impression and first click are four separate dated events, and only the first two are under your influence.
A first ninety days, for one person with a truck
Order matters more than effort here. The sequence below front-loads everything that is free, fast, and cannot be taken away from you.
| Weeks | Do this | Hours | Why it is first |
|---|---|---|---|
| 1 | Claim the profile, hide the address, set categories and services, set the service area inside the 2-hour limit | 3 | Free, and it is the surface most of your market sees |
| 1 | Verify Search Console, confirm the site is indexed | 1 | Without it you are guessing for the next 89 days |
| 2 | Write one real service page for your highest-margin job | 4 | Margin first, volume later |
| 3 | Add the JSON-LD, check every type returns 200 | 1 | Cheap, and wrong types are silently ignored |
| 4 to 5 | A review routine that follows policy, asked in person at handover | 2 | Prominence is the only map factor with room in it |
| 6 to 8 | Two city pages, each with something false in the next town | 6 | Two real ones beat thirty thin ones |
| 9 to 12 | Read Search Console per page. Rewrite titles on anything with impressions and no clicks | 2 | The state that looks like failure and is usually a title |
| Throughout | Keep the paid channel running | Ongoing | The owned side is a bet, not a bridge loan |
Nothing in that table promises a position or a date, because nobody can honestly give you either. It orders the work by how cheap it is to do and how much of the result you keep.
FAQ
Is home service business marketing just local SEO?
No, but local search is the part with the best arithmetic. The full picture includes referrals, repeat customers, trucks and yard signs, and paid channels. What separates the search side is that a Business Profile and a page you own are the only two lines that no platform can bill you per lead for, and the only two that keep working in a month you spend nothing.
How much should a home service business spend on marketing?
There is no credible universal percentage, and anyone quoting one has not seen your margins. The figure that decides it is gross profit per job against cost per booked job, channel by channel. Run the calculator above with your own numbers. Any channel whose cost per job approaches your gross profit per job is a channel you are working for free.
Do I still need a website if most jobs come from Angi or Thumbtack?
Those platforms work, and they charge at the point of connection rather than at the point of payment, which means the same lead is billable again next month. A site and a profile are how you stop renting that lead. The practical answer is to keep the marketplace running while you build the owned side, then compare cost per booked job after ninety days.
Should I build a page for every city I serve?
Only for cities where you can write something that is false in the next town over. Google's spam policy names "pages targeted at specific regions or cities that funnel users to one page" as doorway abuse. Permit rules, housing stock, response time from your base and named local jobs are real differences. A swapped city name is not.
How long before organic search brings in jobs?
Nobody can tell you, and Google's own guidance on hiring an SEO states that "No one can guarantee a #1 ranking on Google." What you can do is measure the four dated events between publishing and earning a click, which is what Search Console is for. Treat organic as the compounding channel you build while a paid channel pays this month's bills.
Is a Google Business Profile enough on its own, without a website?
It can bring calls, and for a brand new business it is the fastest thing to set up. It caps out, though, because prominence is fed largely by links and pages a listing cannot produce, and because the profile only competes in the map pack. The organic results and the AI summaries above them are won by pages, and pages are something you own.
Get cited by ChatGPT. Rank on Google.
You found this article through search. That is the whole product.
- One researched article a day
- Published on your own domain
- Keywords checked against live results
Get cited by ChatGPT. Rank on Google.
You found this article through search. That is the whole product.
- One researched article a day
- Published on your own domain
- Keywords checked against live results
