A Northeast US appliance repair business reached out with a Framer site, a Google Business Profile that was claimed but barely managed, and traffic that had been flat for years. Five weeks after the work started, monthly organic clicks had gone from 78 to 398, and the site was generating leads from organic search every week.
- Organic clicks: 78 to 398 a month (+410%)
- Leads from organic: 30 button-click conversions from 15 unique users in 28 days
- AI visibility: the brand started appearing in ChatGPT answers for service-area queries
Where the site started
On the website:
- 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.
- Unedited AI-written content across the blog and service pages. Articles hadn’t been updated in a long time, while their URLs had changed.
On the Google Business Profile:
- A single category, covering only the core service.
- Opening hours that differed between the website and the GBP.
- A different phone number on at least one major citation source.
- Inconsistent address formatting across platforms.
- No UTM parameter on the GBP website link, so there was no attribution for the traffic GBP was already sending.
What I did
Rebuilt the Google Business Profile as an active channel
The profile had a single category, which limited the queries the business could appear for. Adding relevant categories from Google’s taxonomy to cover all of their services widened that range. If the primary category doesn’t match the queries you want to rank for in the Local Pack, no website optimization fixes that, because the Local Pack is gated on category fit first.
The business itself made the rest easier. Customers were happy, and the 5.0 review score showed it. When they came to me, the profile was being hit with fake 1-star reviews, and we dealt with those and restored the 5.0 rating.
They also had plenty of photos and videos of their jobs. With no budget for a content writer, we set up a GBP post calendar that worked like a journal, publishing new posts as photos and videos came in.
The remaining profile fixes:
- Opening hours synchronized across the website, GBP and Facebook, where the hours were out of date.
- Name, address and phone standardized to one format everywhere.
- A
?utm_source=GoogleBusinessProfileparameter added to the website link in GBP, so GBP traffic became attributable in GA4 from that day on. - Full address, phone and email added to the website footer to back up the GBP details.
LocalBusinessschema added to the homepage and contact page.
Redirected 17 broken URLs
The audit found 17 URLs returning 404 or 308 that were still listed in the XML sitemap. The URLs themselves explained where they came from:
- Old service page URLs from before a restructure.
- “Copy of [team member]” pages left over from duplicated and deleted team profiles.
- Old
/post/blog URLs from before a move to/blog-articles/. - Template pages that were never built out (
/brands,/category/all-products,/whychooseus).
All 17 got 301 redirects to the closest relevant live page. Old /post/ URLs were mapped one to one to their /blog-articles/ equivalents to keep any link equity they had built up, and defunct service pages were consolidated into /services. On a site this small, every backlink pointing at a dead URL is equity the site loses.
Fixed a Framer rendering bug that hid the FAQs from Google
The main service pages had FAQ sections that users could expand, but Google couldn’t read the answers. Only the first accordion was open by default, so Google saw the FAQ schema in the source without the answer text behind it.
The cause was Framer’s default accordion behavior. Its “Visible” property controls whether an answer renders in the collapsed state, and with it set to No, Framer removes the answer from the DOM instead of hiding it with CSS. The answer isn’t in the page at all until someone clicks.
How I confirmed it:
- Fetched the page with
curland checked the raw HTML. The FAQ answers weren’t there. - Ran a rendered crawl in Screaming Frog and checked Google’s URL Inspection tool. The rendered HTML was missing the answers too, because Googlebot doesn’t click accordions.
The fix, which Framer’s own documentation describes, is to keep the answer in the DOM 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 FAQ schema matches content that is actually on the page. The same kind of bug is a common reason Google misses content on Framer, Webflow and Wix sites.
Applied the fundamentals to every page
- 15 titles rewritten to fit the displayed length and target one intent each.
- 29 meta descriptions rewritten with a call to action and a service-area mention.
- 28 images given descriptive alt text (“technician repairing front-load washing machine”, not “IMG_0481”).
- A missing H1 added to the one page without one.
Serviceschema added to each core service page, withserviceType,providerandareaServed.- FAQ schema added wherever the page had live FAQ content, after the Framer fix.
Strengthened off-site signals
- 30 local and business directory citations. Yelp, BBB, Yellow Pages, home services directories, and regional chamber and trade listings, each claimed or updated with the same name, address and phone. Citations with the wrong phone number were corrected through each directory’s own update process. This took about six hours spread over two weeks.
- 20+ Google Business Profile posts with images. They cover seasonal service reminders such as winterization, specific services, and before-and-after job photos. Posts appear in the local panel for branded searches and give Google fresh content on the profile.
Results
After 30 days:
- Organic clicks: 78 to 398 (+410%).
- Organic impressions and average position both improved.
- Calls and bookings from organic: 30 button-click events from 15 unique users, split between the contact button (15), the booking button (12) and the phone button (3).
- The brand started appearing in ChatGPT answers for service-area appliance repair queries.
The conversion data is what mattered to the client. For a small, hyperlocal business, 15 people converting through the site in 28 days is what the work was paid for.
What made the difference
This was five weeks of methodical, mostly standard SEO work. What made it work was rigor: auditing the GBP separately from the website, catching a rendering bug an automated audit would have missed, cleaning up the redirects instead of leaving them, and treating GBP posts and citations as real work.
If your local site has been flat for years and you’re not sure what’s broken, I run fixed-scope local SEO audits: two weeks, with a prioritized roadmap that scopes the technical and GBP work separately, so you can decide what to do in-house and what to hand off. Get in touch.
