A Northeast US appliance repair business reached out. The site was on Framer. The Google Business Profile was claimed but barely managed. Traffic had been flat for years.
Here’s where they were at on day one:
- 33 internal URLs crawled.
- 16 orphan pages and cannibalization between blog and service pages.
- 3 hard 404s linked from inside the site.
- No Schema markup in place.
- AI written content across the blog and service pages with no editing. Articles hadn’t been touched in a long time, while URLs changed.
The GBP side was worse:
- A single category, only capturing their core service.
- Inconsistent hours between the website and GPB
- A different phone number on at least one major citation source
- Address formatting inconsistent across platforms
- No UTM parameter on the GBP website link, meaning no attribution data for any traffic GBP was already sending
Five weeks later, organic clicks had doubled (78 → 398 monthly), the site was generating button-click leads from organic search at a steady weekly cadence, and the brand was starting to appear in ChatGPT answers for service-area queries.
Here’s exactly what was done.
Google Business Profile Rebuilt as an Active Channel
The biggest single lever in local SEO is also the easiest to fix.
The GBP had a single category. This limited the queries the business was eligible to appear for. Adding relevant categories from Google’s taxonomy to cover all their services expanded the surface area.
However, what made things easier is their true business value. They were keeping clients happy, as their stellar 5.0 reviews showed. When they came to me they were being attacked by fake 1 star reviews and they were panicking! We took care of that as well, and restored their 5.0 stars review profile.
We also took leverage of posting actual proof of their work. They had loads of photos of videos matching the work they were taking, so this was another easy win for us. Due to budget constraints we didn’t have a content writer, we decided to create a GMB post calendar as a type of journal. We posted regularly as new photos and videos were sent our way.
The other GBP fixes were equally mechanical:
- Work hours synchronized across the website, GBP, and Facebook (the Facebook hours were stale).
- Full NAP (name, address, phone) standardized to a single canonical format.
- A ?utm_source=GoogleBusinessProfile parameter added to the website link inside GBP so all GBP-driven traffic became attributable in GA4 from that day forward.
- Full address, phone, and email added to the website footer to corroborate the GBP signals.
- LocalBusiness schema added to the homepage and contact page.
The category change alone is the highest-leverage move here. If your GBP primary category doesn’t match the queries you want to rank for in the Local Pack, no website optimization fixes that. The Local Pack is gated on category fit first.
A Redirect Map for 17 Broken URLs
The audit surfaced 17 URLs returning 404 or 308 that were appearing in the sitemap XML. Reading the URLs themselves told the story:
- Old service-page URLs from before a restructure
- “Copy of [team member]” pages from when team profiles were duplicated and then deleted
- Old /post/ blog URLs from before a move to /blog-articles/
- Generic template pages (/brands, /category/all-products, /whychooseus) that were never built out
On a small website these fixes matter.
These are template artifacts. A CMS migration somewhere in the site’s history had left behind.
All 17 were given proper 301 redirects to the closest semantically relevant live page. Old /post/ URLs were mapped one-to-one with the new /blog-articles/ equivalents to preserve any link equity those posts had accumulated. Defunct service-page URLs were consolidated to /services.
This is unglamorous work that audit tools surface in seconds. Every backlink from a third-party site to a dead URL is link equity walking out the door.
Workstream 3: A Framer Rendering Bug That Was Hiding the FAQs From Google
This was the most technically interesting fix in the project.
The site had FAQ sections on its main service pages. Visible to users when they expanded each question, but invisible to Googlebot on first crawl. The first FAQ accordion was open by default. Google was seeing the FAQ schema in the page source, but not the actual answer text.
The cause was Framer’s default accordion behavior. The component uses a “Visible” property (Yes/No toggle) to control whether each answer renders in the collapsed variant. With “Visible” set to No by default, Framer doesn’t just hide the answer with CSS, it removes the element from the DOM entirely. The answer literally isn’t in the page source until a user clicks to expand.
Here’s how I diagnosed it:
curlthe page and inspect the raw HTML response. The FAQ answer text wasn’t there.- Run a rendered-page audit in Screaming Frog and Google’s URL Inspection tool. Same result — Google’s renderer didn’t see the answers either, because Googlebot doesn’t click accordions.
The fix (per Framer’s own documentation) is to keep the answer in the DOM at all times by using height: 0 and opacity: 0 in the collapsed variant instead of the “Visible: No” toggle. The content stays in the source, gets indexed, and the schema validates against actual visible-on-expand content.
Rendering bugs of this shape are a common cause of “we have the content, why doesn’t Google see it” complaints on modern site builders especially on Framer, Webflow, and Wix.
Fundamentals, Applied to Every Page
Once the GBP and the technical foundation were in place, the on-page work was straightforward:
- 15 titles rewritten to fit within the displayable character range and target a single intent each.
- 29 meta descriptions rewritten with a call to action and a service-area mention.
- 28 images alt-tagged descriptively (technician repairing front-load washing machine, not IMG_0481).
- Missing H1 added to the one page that lacked one.
- Service schema added to each core service page, with serviceType, provider, and areaServed.
- FAQ schema added wherever live FAQ content existed on the page (after the Framer bug was fixed).
None of this is differentiated work. It’s the floor. The baseline. I am a sucker for technical brilliance. Inconsistency is deadly for small sites such as this one.
Off-site Signals
Two workstreams ran in parallel during the optimization phase:
- 30 local and business directory citations. Yelp, BBB, Yellow Pages, niche-specific home services directories, regional chamber and trade listings. Each one manually claimed or updated with the canonical NAP. Existing citations with the wrong phone number were corrected via the directory’s own update flow. This took about six hours of work spread across two weeks.
- 20+ Google Business Profile posts with images, published over the optimization period. GBP posts are an underused signal. They show up directly in the local panel for branded searches, give Google fresh content to crawl on the profile, and create short-term ranking lift around the post topic. The posts covered seasonal service reminders (winterization), specific service offerings, and a few before/after job photos.
Combined, these two workstreams strengthened the off-site signals that Google’s local algorithm uses to corroborate everything happening on the website itself.
What Changed in Five Weeks?
The performance after 30 days:
- Organic clicks: 78 → 398 (+410%)
- Organic impressions: up
- Average position: up
- Calls and bookings from organic: 30 button-click events from 15 unique users, split across the contact button (15), the booking button (12), and the phone button (3)
- ChatGPT visibility: brand starting to appear in ChatGPT answers for service-area appliance repair queries
The conversion data is the part that mattered to the client. Traffic tripling is a vanity stat if it doesn’t translate into calls and bookings. Fifteen unique users converting via on-site buttons in a 28-day window, for a tiny, hyperlocal business, is what the work actually paid for.
What This Proves?
The fundamentals work. They’ve always worked. They will still work next year regardless of what Google does with AI Overviews.
This was five weeks of methodical, unglamorous, mostly off-the-shelf SEO work. The differentiator was rigor: auditing the GBP signals separately from the website signals, catching the Framer rendering issue that an automated audit would have missed, cleaning up the redirect graph instead of leaving it, and treating GBP posts and directory citations as actual work instead of busywork to delegate.
If your local site has been sitting still for years and you’re not sure what’s actually broken, I run fixed-scope local SEO audits. Two weeks. Concrete prioritized roadmap, with the technical and GBP work scoped separately so you can decide what to execute internally and what to hand off. Get in touch →
