Never bookmark something to “read later” or “come back to later.”
Stop lying to yourself.
If something genuinely interests you, read it here and now.
Because the moment you bookmark it, there’s a good chance you’ll never read it at all.
We hit the same wall. What fixed it for us: stop reading the customer message for the job type. In 916 cleaning leads, 891 had a "Cleaning type" answer in the request details (deep, standard or move-out). When we priced from the message instead, we got the type wrong in 41% of threads.
Every Google Local Services lead gets billed, and that includes the bad ones.
Wrong numbers, spam, job seekers and people asking for a service the business doesn't offer all cost the same as a real customer. Google lets you dispute these leads, but only within a limited window. Once that window closes, the charge stays.
At most service companies, someone reviews leads by ear when they find the time. In practice that means a few calls get checked, a few get disputed, and most just age out of the dispute window. Nobody decided to pay for those junk calls. The money simply goes because nobody got to them in time.
For a home service company I work with, I replaced that manual check with an automated audit. Every charged call is transcribed and sorted into real customers or leads that qualify for a dispute. Disputes go out while the window is still open, and each one is backed by what was actually said on the call.
The first full pass covered 2,740 charged calls. 358 of them, or 13.1%, were invalid leads the company had been paying for.
The animation shows the difference. With manual review, the invalid share ends up as "billed, never disputed". With the audit, the same calls go into "sent for credit".
If you run Local Services Ads, it is worth pulling your call recordings for one month and counting how many of them were never real customers.
#LocalServicesAds #GoogleAds #PPC #MarketingAutomation #HomeServices
A CRM I built for a client now saves them $945 a month, which is $11,340 a year.
It started as a temporary fix. The plan was to run on it for a few weeks until the business moved to a "real" CRM. Instead, it became the system the whole business runs on.
Today it holds the technicians' schedule, jobs, invoices and card payments, and every incoming call shows up in it. All the history from the old platform came over too: every past job, invoice and payment, checked against the old system to the cent.
What I took from it: a tool built around the exact problems of one business can beat a subscription built for everyone.
Which tool in your business costs the most for what you actually use?
#CRM #HomeServices #SmallBusiness #Automation #FieldService
Search Console showed a client 82 clicks in one hour. A normal hour gets 10 to 15.
It looked like growth? NOPE, It was a bot
Here is how I checked it in a few minutes with the hourly data in the Search Console API:
Device.
All 82 clicks came from desktop. In normal hours more than half of the impressions are on mobile.
Click rate.
Every query had exactly 1 impression and 1 click. Real people do not click 100% of the time.
Position.
The clicks landed on results ranked 20 to 30. Almost nobody scrolls that far, and here every single one was clicked.
Time.
Midnight to 1 AM Pacific, which is 3 to 4 AM on the East Coast where the customers live.
The same pattern hit on Monday: 125 clicks in one hour, 123 of them from desktop, mostly to the same page.
You cannot block this.
Google counts the click before anyone reaches your site.
So I take those hours out of the report, and I would not show a client the raw total.
If your clicks jumped this week, look at the hourly view before you celebrate.
#SEO #GoogleSearchConsole #TechnicalSEO #LocalSEO
Fair point. The catch is GSC has no saved filters and nothing hourly in the UI, and every bot query is unique with 1 impression and 1 click, so a query filter catches nothing. Excluding desktop would drop real customers too. So (I guess) I can pull hourly data from the API and drop any hour over 20 clicks. It's 1 script, no manual trimming. Test time is coming! :)
@AlDev0 Sure!
but that's the part that bugs me. This client never had it before, and now it's 2 hours in one week. If it keeps showing up, cutting hours out by hand every report isn't a fix, it's a new chore. Are you seeing the same bursts on your sites, or is it just this one?
@AlDev0 Yes. A normal hour for this client runs 10 to 15 clicks, and it has hit 15. Drop the two burst hours and the day lands at 96, in line with 95 and 107 on the days around it.
@AlDev0 Pages, yes. One article took 18 to 40 clicks in every burst. Queries, no. Every query was different, 1 impression and 1 click each. So it looks like the bot runs a long list of searches and clicks whatever of ours shows up.
A client site I work on now scores 100 on Performance, Accessibility, Best Practices and SEO in PageSpeed on desktop. It took a while to get there, and almost none of it was about images.
When we started, the homepage sat at 77 for performance. The biggest single cost was the tag stack: Google Tag Manager alone held the main thread for about 1.4 seconds, and total blocking time was over 1.6 seconds. The marketing tags now wait for the visitor's first scroll or tap. Lead source tracking runs server side, so attribution didn't suffer.
The rest was a pile of smaller things. The web font was loading through a chain of three requests to Google, so we host it on the site now. An icon library was adding 147 KB of render blocking CSS to every page, even though only 9 pages actually use icons. Accessibility went from 88 to 100 after we darkened the brand blue enough to pass contrast and gave the carousel controls proper labels and tap targets.
None of this is glamorous. It's mostly finding the one script that's quietly costing you a second and a half.
#PageSpeed #CoreWebVitals #TechnicalSEO #WebPerformance
Ask ChatGPT "best coffee shop in Austin" and look at the sources. You'll mostly see Yelp, Google profiles, Reddit and local listicles, not the shops' own websites.
You get 10 questions customers likely ask AI, the sources AI usually cites for each, 5 actions from quick win to bigger project, and a page outline that says "add your own data" instead of inventing numbers.
This is what one AI receptionist call looks like from the inside.
Six layers run at the same time: the caller, speech to text, the agent, its tools, the voice and the check on what it actually did. On the left is the agent I was handed, and on the right is the same call after the audit.
Watch the Tools row and the Voice row. That is where a call can be logged as a success while the job lands on a technician who is off.
This is part one of a series I am calling Anatomy, where each post takes one piece of a home service business's marketing and shows how it works inside. Next up is how a Local Services Ads lead gets sorted, and where the money leaks.
Which one should I take apart after that?
#AIReceptionist #VoiceAI #HomeServices #Marketing #SmallBusiness
Organic search for a home services company I work with, Google Search Console, Jul 28 to Oct 26, 2026 compared with the same period last year:
Total clicks went from 1,217 to 5,080
Average position for non-brand queries went from 25.7 to 11.9 Impressions went from 18K to 996K
None of this is brand demand. Branded clicks actually went down over the same period, so the growth comes from people who had never heard of the company.
Most of the new visibility came from informational articles that answer the questions people search before they call a technician: how long an appliance should last, what a repair really costs, which symptom points to which part.
They now carry about three quarters of all impressions. Alongside them I took the site from 64 to more than 1,400 pages, and every one of them is unique: each city and service page is built on the company's own job data, with real local repair prices and the problems technicians actually see in that area, which no template or competitor can copy. When pages started competing with each other for the same searches, I rewrote 424 titles and wrote a check that stops any new page from targeting a search another page already owns.
Click-through rate went down while clicks went up, which is expected: informational searches are often answered right on the results page by an AI Overview. That is also why I kept one set of prices and facts across every page, so Google and AI assistants quote the same numbers wherever they find them.
Clicks only matter if they turn into work, so I matched every website form request and every call to the website's own phone number against the company's job records.
#SEO #LocalSEO #GoogleSearchConsole #AIOverviews #ContentStrategy