Case study 02

One profile kept ranking. The other 299 didn't.

Google quietly changed how it ranks business listings. Every multi-service profile this client owned lost visibility at once. Working out why took a morning. Working out what to do about it took considerably longer.

#1
Three local service queries hit position one
from 18, 17 and 4
+18
Biggest single position gain
page two to position two
300→100
Scope I cut before touching anything
and why it worked
5
Municipalities to full citation coverage
Client national multi-location youth programmesRole local SEO strategy and rolloutEstate ~300 seasonal locations

Part one

The problem

Every listing was slipping. Except one, and it wouldn't stop winning.

Local was meant to be the easy half of this account. The client ran programmes in around 300 locations across the country. Real venues, real footfall, parents actively searching for exactly what they sold. On paper it should have been the simplest work I did.

Then the listings started sliding. Not a crash. A drift. A position here, a local pack drop there, spread across markets that had nothing else in common. I went looking for a pattern and found something more useful: an exception.

The anomaly across four business profiles Three multi-service profiles lost local pack visibility over the same period while one single-service profile held its position. LOCAL PACK VISIBILITY, SAME SIX MONTHS Profile A Profile B Profile C Profile D 3 services listed 4 services listed 3 services listed 1 service only falling falling falling holding The one that held was the one that did a single thing. Not the biggest. Not the oldest. Not the one with the most reviews. Illustrative of the pattern observed across the locations
This is where the whole project came from. One outlier behaving differently from its cohort, and a structural reason you could name.

Google had shifted toward rewarding specialised primary categories. A profile that says it does one thing now beats a profile that says it does five, even when all five are perfectly true. Every listing in this estate was configured the way multi-programme businesses naturally configure themselves: one location, one profile, a general category, every service stacked underneath.

The estate wasn’t broken. It had been built correctly for rules that no longer applied. That distinction matters, because it changes the conversation you have with a client from “someone made a mistake” to “the ground moved.”

But first, the thing nobody had looked at

Before any of the category work, I checked something basic that turned out to be the single biggest problem across the locations. Every business profile has a landing page, the website it sends people to. It’s the most powerful field on the profile and the most commonly ignored.

Every one of these profiles was pointing at the homepage.

Where each business profile sent Google Every location profile linked to the national homepage, which contained nothing specific to that city. After the fix, each profile linked to its own city page. BEFORE AFTER City A profile City B profile City C profile National homepage Google follows the link looking for something about that city and finds nothing City A profile City B profile City C profile City A page City B page City C page Google follows the link and finds a page about that city, that service, that address
The profile promises a local business. The link delivers a national homepage. Google notices the gap.

Think about what that asks Google to do. It reads a profile for a specific address in a specific city, follows the link to verify, and lands on a page written for the whole country. Nothing about that city. Nothing about that pool. No address, no local programme, no reason to believe the listing.

I said in a client meeting that this wasn’t neutral, it was doing harm. Every profile in the locations was making a promise the website refused to confirm. There were no city pages to point them at, because city pages belonged to a different workstream that hadn’t shipped yet. Once those pages existed, repointing the profiles was a ten-minute job per location with a big payoff.

Then the audit turned up the boring stuff

Before designing anything I checked the fundamentals across the priority markets. Name, address, phone. The things that are supposed to be identical everywhere and never are.

NAP consistency audit findings The audit found a wrong postal code and two nearby listings carrying conflicting phone numbers, one of which reached a different programme entirely. NAP AUDIT — WHAT DIDN'T MATCH On the website V6P ·6·7 postal code, correct On the profile V6P ·—·— postal code, wrong Two listings, two blocks apart, two different phone numbers Neither matched the number published on the website. I called both from the workshop to find out which was real. WHAT THE CALL FOUND One number reached a completely different programme. Live for months. Nobody had noticed.
Ten minutes on the phone during a client call. Not sophisticated work. It found something no dashboard would have flagged.

All worth fixing. None of it the ceiling.

The number that reframed everything

The ceiling was reviews, and the client had worked that out before I did.

Months earlier, in one of our first meetings, she told me she’d been taking meetings with a third-party review platform. Not because she preferred it, but because she’d done the maths on Google reviews and didn’t like the answer.

"The gap is that it's going to take us a long time to get the local piece. So how can we build brand trust that isn't at a local level, using something else?"

Client marketing lead, four months before I audited the profiles

That’s a smart read of a bad situation. It also explains why the locations looked the way they did. They had plenty of happy customers and a healthy review presence. It was just building up on a platform Google doesn’t count for local ranking, because the one Google does count felt out of reach.

So when I pulled the competitor numbers, I wasn’t breaking news. I was putting a figure on something she’d already sensed.

Review gap against leading local competitors Leading local competitors held 170 to 190 Google reviews. The client held fewer than 10 on the profiles that mattered. Local competitor A ~190 Local competitor B ~170 This client <10 Google reviews — the strongest single input to local pack ranking
Fewer than ten, against competitors sitting near two hundred.

This changed what I told them to spend money on. Local had been framed as a content problem. It was a reputation-routing problem wearing a content problem’s clothes.

And it changed my advice on the review platform. Not “don’t”, because brand trust is real and those reviews do work on the website. But it can’t stand in for the local piece, because the local algorithm doesn’t read it. Two jobs, two tools, and the expensive one wasn’t solving the problem costing them rankings.

Part two

How I came up with the solution

The fix was obvious within a morning. Then four constraints showed up.

If specialisation was winning, the answer was to stop asking one profile to represent several services. Split them. One primary service per profile, each pointed at a landing page that says the same thing the listing says.

Profile specialisation, before and after One general profile carrying three services replaced by three service-specific profiles, each pointing at a matching landing page. WHAT THEY HAD WHAT I PROPOSED One location profile primary category: general swim · cycling · soccer Generic city page Generic city page Generic city page one weak signal doing three jobs visibility falls across all of them Swim profile specialised category Cycling profile specialised category Soccer profile specialised category /swim/city /cycling/city /soccer/city profile and page say the same thing same address, no duplicate flag
Several listings at one address is allowed when each is a genuinely different service. The address was never the constraint. The corroboration was.

Simple enough on a whiteboard. Then I started pressure-testing it against reality, and four things came back that changed the shape of the plan entirely.

One. Renaming a profile detonates its citations

Every location carried 30 to 40 citations, the directory entries that back up name, address and phone across the web. Change the profile name and all of them are instantly wrong. Rebuilding takes about two weeks to propagate. Which means every improvement starts by making things worse.

Two. Verification happens in the physical world

Push changes in bulk and Google may re-verify, sometimes by asking for video from the site. This is a seasonal business. The person at a location in August isn’t there in October, and probably isn’t the person who can walk around filming a pool.

Three. The venues belong to somebody else

Programmes run inside third-party pools and facilities. Name a listing after the host venue and Google may read it as a duplicate of a business that already exists at that address. Getting flagged for gaming the system is much worse than ranking third.

Four. Reviews were still the ceiling

None of this closes a 180-review gap. I could do everything right and still sit below competitors who’d been collecting reviews for years.

A detail I nearly missed

While comparing profiles in one market I noticed the competitors ranking above us listed opening hours until 10pm and 10:30pm. This client's listing closed at 3:45.

The local algorithm is extremely sensitive to that. Search in the evening and a closed business is quietly demoted regardless of how well optimised it is. It isn't something an SEO can fix, but the client could, and telling them was worth more than another round of posts. Half of local SEO is spotting operational facts nobody filed under marketing.

So I argued for doing less

Three hundred locations. A fix that costs two weeks of ranking each. Staff who move with the seasons. The tempting move is to go wide and go fast, and it would have been a disaster: flagged listings, broken citations, no gain, and a client watching their rankings fall for a quarter.

I also didn’t rank the shortlist by search volume. I ranked it by market. One affluent suburb on the list has a small population, few competitors and almost nobody searching who doesn’t already live there. Little to win, whatever we did. Two others are growing fast, have real competitors fighting over the same queries, and a population that turns over every year. Those went first. Competitive markets score worse on keyword difficulty and are usually where the upside actually is.

Scoping the rollout down Three hundred locations narrowed to about one hundred long-standing priority sites, then shipped one or two at a time. ~300 active locations everything the client operates in a peak season drop sporadically rented venues ~100 priority sites long-standing, stable addresses, worth maintaining avoid mass re-verification 1–2 at a time the actual shipping unit Recommending the smaller number was the hardest part of the pitch
"We could do all 300" is always the more appealing answer in the room. It was also the answer that would have lost the account its local visibility for a season.

Part three

How the strategy got executed

Order of operations, an expected dip, and the results that followed.

The sequencing mattered more than any individual tactic, so I fixed it and refused to vary it. Website changes ship first. Profile renames second. Citations rebuild third.

The reason is simple. If Google runs a verification check, the site should already say what the listing says. Do it the other way round and you’re asking Google to verify a business whose own website contradicts it.

Rollout sequence and the propagation trough Site changes ship first, then the profile rename, then the citation rebuild, which takes roughly two weeks to propagate before rankings recover and climb. Site changes Profile rename Citation rebuild Propagation Ranking landing pages live category + name 30–40 per location ~2 weeks recovers, then climbs the dip I briefed them on in advance RANK
Telling a client about the trough before it happens is half the job. One who hasn't been briefed reads a two-week dip as a failed strategy and pulls the plug right before the recovery.

Every profile got a real local phone number forwarding to the central contact centre. Better local signal, and it means somebody actually answers when Google calls to verify.

Fewer citations, not more

Citation building is usually sold by volume, and volume is the wrong metric. Plenty of directories are low authority, irrelevant to the sector, or already flagged by Google as spam. A listing on one of those isn’t neutral. It’s a liability attached to your name.

So we built to a shortlist per market rather than a target number, and skipped anything that failed a quality check even though it would have made the dashboard look busier. Five cities reached full coverage on that basis.

Fewer posts, better assets

The profiles were being posted to three or four times a week on automation. Nobody could show me what it was achieving, because it wasn’t achieving much. Post frequency is a weak ranking input and always has been.

I cut it to weekly and moved the effort into monthly profile products, each linked to a specific service page. Those feed the same internal architecture the organic programme runs on, so the work compounds instead of disappearing. Post content got templated by programme mix, so a profile never advertises something that location doesn’t actually run. Obvious, until you’re generating content for a hundred sites with different offerings.

On AI search, since everyone asks

I extended reporting to AI results, because local behaves oddly there. Answers are highly location-sensitive, they change between sessions, and a brand's position in an AI answer isn't necessarily its position in the local pack.

I treated that as monitoring, not strategy. What improves AI visibility for a local business is the same work as everything else: consistent data across every profile, genuine specialisation, and reviews. The one properly AI-shaped recommendation I made was publishing starting prices by region, because pricing is one of the most common things people ask an answer engine and this client had no answer anywhere.

What happened

The clearest evidence is at market level. These are position changes on local service queries across two priority cities, over the same six months.

Local keyword position gains in two markets Seven local service queries moved from positions between 20 and 4 into the top three or top ten. POSITION 20 1 TOP 3 [service] classes near me [service] school near me infant [service] classes near me private [service] classes near me kids [service] lessons camp pool private instructor near me 2018 1715 94 18 21 14 21 10
Source: SEMrush position tracking, June to December 2025. Two cities from the priority set. Biggest single move was eighteen positions.
#1
Three local queries reached position one
from 18, 17 and 4
#2
Local pack position in a competitive suburban market
#3 organic on the same query
5
Municipalities to full citation coverage
YoY ↑
Calls and direction requests up at flagship locations

Seasonal camp queries that had never appeared in a local pack started appearing in one.

What I didn’t fix

The review gap is still open. It was never going to close inside a rollout window, and I’d rather say that plainly than dress a structural fix up as a reputation win.

What the work did was clear everything that sits below reviews in the ranking hierarchy. When the client resources a review programme, it’ll land on profiles that are correctly categorised, consistently cited, and pointed at pages that back them up. That’s a much better starting line than the one they had.

Organic search is a system you can reason about. Local is a system you negotiate with.

Reviews, verification, citation propagation, and a platform that changes its mind

What I took from it

Recommending a smaller programme than the client could afford was the most valuable call I made here, and the one I found hardest to make. Nobody gets excited about a proposal that starts with "let's do a third of this."

Most local SEO advice is a list of individually true things. What actually decides whether it works at scale is the order you do them in, and how honestly you brief the client on what happens in between.

Sources. Figures come from the six-month client review deck and from recorded optimisation workshops. SEMrush position tracking, the client's Google Business Profile dashboard and Search Console, read live in session. Nothing modelled, nothing estimated.

Client name, locations, personnel and vendor relationships withheld. Happy to talk through the reasoning in more detail.

← Back to harisjilani.com