Author: Mehul Dedhia

  • 671 links against 29,812, and the number that actually mattered

    671 links against 29,812, and the number that actually mattered

    The verdict

    In 2023 I audited a classic car marketplace with 671 referring domains against a market leader with 29,812, and told the client to spend more on links. The number that mattered was in my own table and I walked past it: a competitor with 845 referring domains was doing nearly four times the client’s traffic on 8% of the pages. Links were not the gap. Ninety percent of the client’s site was unreachable.

    The client had 671 referring domains. The biggest competitor in the market had 29,812. That comparison is in the audit, and so is my conclusion, which was to shift the budget towards link building.

    I would write the opposite now, and the evidence for it was already on the page.

    The four rows

    Here is what the competitor table actually held, as of that audit.

    The comparison, in full

    • The client. 9,220 pages indexed, 671 referring domains, 7,998 monthly organic visits.
    • Market leader one. 334,000 pages, 29,812 referring domains, 497,000 visits.
    • Market leader two. 131,000 pages, 38,200 referring domains, 1,894,000 visits.
    • The fourth site. 779 pages, 845 referring domains, 30,613 visits.

    Read the fourth row again. 845 referring domains is 26% more than the client had. 779 pages is 8% of what the client had indexed. And it was doing 30,613 monthly visits against the client’s 7,998, which is nearly four times the traffic.

    Bar chart of monthly organic traffic for two classic car marketplaces: the client site at 7,998 visits on 671 referring domains, the nearest competitor at 30,613 visits on 845 referring domains
    The comparison that mattered was the one nearest to the client, not the one at the top of the market.

    So the answer to “how many links do I need to rank” for that site, taken literally, was about 174 more than it already had. And getting them would not have worked, because links were plainly not what separated those two sites.

    What actually separated them

    The same audit found 8,317 orphan pages out of 9,220 indexed. Ninety percent of the site could not be reached by a crawler following links from any other page on the site. The pages existed, Google knew about them, and nothing pointed at them.

    Dot diagram of 9,220 indexed pages, one dot per ten pages, showing 903 pages reachable by internal links and 8,317 orphaned
    The dark block is everything a crawler could reach by following links from the home page.

    That site did not have a link shortage. It had a link distribution failure, entirely inside its own walls, and it was pouring whatever authority it had into a structure that could not carry it anywhere. Meanwhile a competitor with 779 tightly connected pages was moving the same amount of authority around a site small enough for all of it to land.

    I have written elsewhere about why more pages and more links are not the same lever. This audit is the clearest case I have of the two being confused, and I am the one who confused them.

    Why the mistake is easy

    Competitor tables invite you to read down the biggest column. 671 against 29,812 is a forty-fold gap and it looks like an explanation. It fills the space where a diagnosis should be, and it is very easy to write, because the client already believes it. Everybody arrives believing they need more links.

    The useful competitor is almost never the biggest one. It is the one closest to you on the metric you are about to spend money on, that is beating you anyway. If a site with roughly your link profile is out-performing you four to one, links are not your constraint, and buying more of them is buying the wrong thing at full price.

    So what is the number

    There is not one, and the reason is in how Google describes links rather than in any count. Google says it uses links as a signal when determining the relevancy of pages and to find new pages to crawl. Relevancy and discovery. Neither of those is a scoreboard, and neither has a threshold you cross.

    The spam policies point the same way. What Google names as link spam is defined by intent, not volume, right down to creating low-value content primarily for the purposes of manipulating linking and ranking signals. A policy written around counts would say so. This one is written around why the link exists.

    What I would tell that client now

    Fix the internal structure first, because 8,317 unreachable pages is a problem you can solve without asking anyone’s permission. Then look at whether the pages that remain deserve to rank. Then, and only then, ask whether links are the constraint, and answer it by finding the nearest competitor who is beating you rather than the largest.

    Two related pieces. Relevance or authority is the question underneath this one, because 845 relevant links and 845 general ones are not the same asset. And auditing a backlink profile is worth doing after you know links are the problem, not as the opening move.

    The short version

    1. 671 against 29,812 looked like the story. It was not, and I wrote it up as if it were.
    2. The number that mattered was 845. A competitor with 26% more links and 8% of the pages did four times the traffic.
    3. Ninety percent of the client’s site was orphaned. 8,317 pages out of 9,220 indexed.
    4. Compare against the nearest competitor beating you, never the largest one in the market.
    5. Google describes links as relevance and discovery, not a count you cross.
    6. If a site with your link profile beats you four to one, links are not the constraint.

    If a site should be ranking and it isn’t, that’s the work I do. Link building covers the off-site half, including when not to bother, and internal linking is usually the cheaper answer to the same question.

  • Do Google Business Profile posts do anything?

    Do Google Business Profile posts do anything?

    The verdict

    I track six client Business Profiles most weeks and I have never once been able to attribute a change in calls to a profile post. Posts are not on Google’s own list of things that improve local ranking. Attributes are, indirectly, because they are part of the business information Google reads for relevance. So attributes are worth ten minutes and posts are worth doing only if somebody is actually going to read them.

    I have six local Business Profiles open in a dashboard most weeks. In none of them can I draw a line from a post to a call. That is not a claim that posts do nothing. It is a claim about what is measurable, and the two get conflated constantly.

    Start with what Google actually says

    Google publishes a short list of things it says improve local ranking: verify your business, keep your information current and complete, respond to reviews, add photos and videos, add in-store products, and get more reviews and positive ratings. Posts are not on that list. Neither is any mention of posting frequency.

    The honest caveat: Google does not publish a complete ranking factor list and says as much. Absence from the list is not proof of nothing. But when you are deciding what to do on a Tuesday afternoon, “named by Google” and “not named by Google” is a reasonable way to rank the work.

    Attributes are a different thing wearing the same hat

    Attributes get lumped in with posts because they live in the same part of the interface. They do a different job.

    Complete and detailed business information is the relevance input. Google’s own framing is that categories and business details tell it what the business is, and attributes are part of that detail. They are also a filter, which is the part nobody values properly. An attribute that loses you a click from someone who needed wheelchair access you do not have has done its job. You were not going to convert that call and you were going to spend eight minutes on it.

    Ten minutes, once, then check them when something changes. That is the whole commitment.

    Why the dashboard will not settle the argument

    Two traps in reading profile data, both of which I have watched people fall into.

    What the numbers are not telling you

    • The Maps and Search split is about where the profile was viewed, not pack versus organic. The local pack renders inside Google Search. A high Google Search share does not mean the business is losing the map pack. It is not a map pack proxy and treating it as one produces confident nonsense.
    • Click mix varies enormously by vertical. Across the six profiles I track, phone calls ran from 13.1% of profile clicks at one end down to 3.1% at the other. Same tooling, same period, wildly different shapes. A single scorecard applied across clients would have flagged the low one as failing. It was not failing. Different buyers click different things.
    • Direction requests are close to meaningless for some businesses. Nobody drives to a law firm on impulse. Counting it as engagement flatters the wrong number.

    Put those together and you get the real problem with measuring posts. The metric you would need to move is calls or clicks, both of those swing on season and vertical, and a post is a small input into a surface with a lot of noise. You would need a long clean run and no other changes to isolate it. Nobody has that, and any agency showing you a post-attributed lift is showing you a correlation they did not control.

    So what are posts for

    Something real, and it is not ranking.

    A post is the only place on the profile where you choose the words at the moment somebody is deciding between you and two competitors in the same three-pack. The reviews are theirs. The photos are mostly theirs. The post is yours. That makes it a shop window, and shop windows are worth dressing when there is something in them.

    Closed for a week in July. A new service. A price nobody else publishes. Financing that most competitors do not offer. Those earn a post. A weekly update about the importance of oral health does not, and it is the same instinct that fills a blog with content nobody asked for.

    How I rank the work

    Categories and services first, because that is the relevance foundation and it is the one people get wrong. Hours and attributes second, once, properly. Photos third and continuously, because Google names them. Reviews continuously, because Google names them twice. Posts last, and only when there is something a customer would want to know.

    This is one piece of a larger picture. The gaps that cost local businesses rankings are mostly not on the profile at all, and if you are choosing a category right now, the primary category decision is the one on this page worth the most.

    The short version

    1. Posts are not on Google’s list of things that improve local ranking. Attributes are, as part of complete business information.
    2. I cannot attribute a call to a post across six tracked profiles. Neither can anyone showing you a chart that says otherwise.
    3. The Maps and Search split is where the profile was seen, not pack versus organic. Do not read it as a map pack score.
    4. Phone share ran 13.1% to 3.1% across six profiles. A cross-client scorecard misleads.
    5. Attributes are a filter as much as a signal. Losing a wrong-fit click is a win.
    6. Post when there is something to say. Treat it as a shop window, not a ranking lever.

    If a site should be ranking and it isn’t, that’s the work I do. Local SEO covers the profile and the pages behind it, and if you are not sure which of several plausible problems is costing you calls, that’s what an SEO audit is for.

  • The primary category that did not exist

    The primary category that did not exist

    The verdict

    A clinic I looked at in August had no Google category for its biggest service. Not a badly named one. None exists. That is common enough to plan for, and it changes the job: the primary category stops being a description of the business and becomes a decision about which demand you want the profile to compete for. Pick the one with the highest commercial intent that your website actually supports.

    The clinic’s largest service by revenue had no Google Business Profile category at all. I checked two separate category lists in August 2026. There is no hormone therapy category, no HRT category, and no anti-aging category. The list is fixed, you choose from the provided list, and you cannot add to it.

    Most advice on primary categories assumes the right answer is out there and your job is to find it. Often it is not out there.

    What that does to the decision

    Once the biggest service cannot be a category, the category field stops being a summary of the business. It becomes a choice about which slice of demand the profile competes for. That is a different question and it has a different answer.

    The clinic’s existing primary was Wellness center. Broad, accurate, and commercially useless: nobody with money in hand searches for a wellness center. I recommended changing the primary to Weight loss service.

    Two reasons, and the second one is the one that matters. It carried the highest commercial intent of anything available. And roughly half the site’s blog content was already about weight loss and GLP-1 medications, so the profile and the website would finally be saying the same thing. Google describes relevance as how well a Business Profile matches what someone is searching for. A profile that claims one thing while the site is about another is fighting itself.

    The hormone demand still has to go somewhere. It goes in the Services free-text entries, in profile updates, and in on-site content. Not in a field that does not have a slot for it.

    The four categories I refused

    Category lists tempt you to take everything that fits loosely. Each of these was available and each was wrong.

    Excluded, with the reason

    • Endocrinologist. The physician is internal medicine, not endocrinology. Claiming a specialty the practice does not hold is a misrepresentation risk, not an optimisation.
    • Hair transplantation clinic. They do PRP hair restoration. Not surgical transplants. Every lead this brought would arrive wanting something they do not sell.
    • Nutritionist. No credentialed dietitian on staff as far as the site showed. Same problem.
    • Naturopathic practitioner. Off-brand. The practice positions itself as physician-led, and this category says the opposite to anyone reading the profile.

    Google’s own test does most of this work: select categories that complete the statement “this business IS a” rather than “this business HAS a.” Three of those four fail it outright. The fourth fails a different test, which is whether the category describes the business the way the business wants to be understood.

    The question that would overturn my answer

    Revenue split. I recommended Weight loss service on the evidence I could see, which was the website. If hormone optimisation actually leads revenue, the primary should be Medical clinic instead and weight loss drops to a secondary, because you do not aim the primary at your second-biggest business.

    I said that in the recommendation. A category recommendation that does not name the thing that would reverse it is not a recommendation, it is a guess delivered confidently. Nobody outside the practice can know the revenue split, and pretending otherwise is how consultants get things wrong in writing.

    It is also worth saying I disagreed with the site’s previous audit, from a few months earlier, which kept Wellness center as the primary. Two people can look at the same profile and reach different answers here, because the answer depends on a number neither of them has.

    How I pick one now

    List the categories that exist for what you actually do. Cross out every one that fails the IS a test. Of what remains, pick the one where the searcher is closest to buying, then check the website supports that claim on its own pages. If it does not, the content work comes before the category change, not after.

    And keep the secondary list short. Google asks you to use as few categories as possible, and in practice a long list of loosely fitting secondaries mostly generates leads for services you do not provide. That is not a ranking problem, it is a wasted afternoon on the phone.

    The category is one of several places a local business quietly loses ground. The gaps that cost local businesses rankings covers the rest of them, and ranking on the website but not in the map pack is the symptom that most often sends people looking at their category in the first place.

    The short version

    1. Your biggest service may have no category. Check before you plan around one.
    2. The primary is a commercial decision, not a description. Pick the highest intent option you can support.
    3. The website has to agree with it. A profile arguing with its own site is not a relevance win.
    4. Apply the IS a test and refuse anything that claims a credential or a service you do not hold.
    5. Keep secondaries short. Loose fits generate wrong-fit calls, not rankings.
    6. Name what would change your answer. Here it is the revenue split, and only the client has it.

    If a site should be ranking and it isn’t, that’s the work I do. Local SEO covers the profile and the pages behind it, and an SEO audit is where the category decision gets made against the site rather than in isolation.

  • Two questions Search Console will answer wrongly

    Two questions Search Console will answer wrongly

    The verdict

    Search Console is the most honest data you have about your own site, and it is blind in two specific directions. It cannot tell you what you do not rank for, because it only contains queries where you already appeared. And on a large site it cannot tell you which query lost the traffic, because the table stops at 1,000 rows and the rare queries are never tracked. Both limits are structural. Neither is a setting you can change.

    In an audit I wrote for a fitness certification site in 2022, one row read: ‘health coach’, 15,317 impressions, 25 clicks, average position 44. Two people can read that row and reach opposite conclusions. Both of them would be wrong.

    The row that means three different things

    The first reader says: position 44, that is page four, forget it. The second says: fifteen thousand impressions, this is the biggest opportunity on the site. Neither follows from the row.

    Position 44 is not a place. Google defines it as the topmost position occupied by a link to your property in search results, averaged across all queries. It is a mean. Some of those impressions came from page two, most came from much deeper, and the average lands at 44. Nothing in the row tells you the shape of that distribution.

    What the row does prove is that the demand exists and nothing on the site is answering it. That is why I recommended a dedicated page rather than a tweak. The impressions were the finding. The position was noise dressed up as a measurement.

    Question one: what are we nearly ranking for?

    Search Console can only answer this for queries you already appear on. If a page has never surfaced for a phrase, there is no row. There is no zero. The query simply does not exist in the report.

    That is not a flaw, it is what the tool is. But it means Search Console will never tell you what your market is, only what your slice of it currently looks like. Every audit I write pairs it with something that can see outside the property.

    It is also why my sweet spot filter is shaped the way it is: positions roughly 4 to 20, with enough impressions to prove demand. It is built deliberately around what Search Console actually knows. Worth being honest about one thing there: the threshold in my own audits is not consistent. A 2021 audit used positions 5 to 20 with 500 or more impressions. A 2022 one used 4 to 20 with 100 or more. The band is a judgement about how much movement is plausible on that site, not a constant. Anybody quoting you a fixed one is quoting a habit.

    Question two: which keyword lost the traffic?

    This is the question clients ask most often after a drop, and on a large site it frequently has no answer in Search Console at all.

    Two documented limits stack up. Google does not track queries made a very small number of times or containing personal or sensitive information, and the tables show a maximum of 1,000 rows. So the clicks in the query table never sum to the clicks for the site. The gap is not a bug you can chase down.

    On a small local site the gap is small and the query table is close to complete. On a classic car marketplace I audited with 9,220 pages indexed, the query table could show a thousand rows against a catalogue generating a very long tail. Most of the traffic lived in queries that were never listed individually.

    So the sequence matters. Diagnose a drop at page level first, where the URLs are few enough to be complete, and only then look at queries for the pages that actually moved. Doing it the other way round means starting with the least complete data in the tool and trying to reason backwards.

    What it is genuinely excellent at

    Indexing. The Pages report tells you what Google has, what it looked at and declined to keep, and what it has never fetched. No third party can tell you that, and it is the first thing I check when a site should be ranking and is not. Everything in this post is a caveat on one report, not on the tool.

    How I use it in an audit

    • Pages report first, always. Indexing is a yes or no question and this is the only place it gets answered.
    • Query data second, and only for pages that moved. Not as a starting point.
    • Impressions as demand, position as a hint. High impressions with a deep average position is a content gap, not a ranking problem.
    • Never quote the query total as the site total. They are different numbers and they are meant to be.

    Two related habits worth naming. Crawl tools flag things that do not matter, and Search Console has the opposite failure: it under-reports rather than over-reports. And reading a crawl is the other half of the same job, because the crawler sees the pages Search Console has never heard of.

    The short version

    1. Average position is a mean across all queries. Position 44 with 15,000 impressions is a content gap, not a near miss.
    2. Search Console only holds queries you already appear on. It is structurally blind to your market.
    3. The query table caps at 1,000 rows and rare queries are never tracked, so query clicks never sum to site clicks.
    4. On a large site, “which keyword dropped” often has no answer here. Diagnose at page level first.
    5. My sweet spot band is a judgement, not a constant. It has moved between audits and it should.
    6. Indexing is what it is best at. Start there and stay there longer than feels necessary.

    If a site should be ranking and it isn’t, that’s the work I do. An SEO audit is where the Search Console data gets read against a crawl rather than on its own, and technical SEO covers the indexing side of it.

  • Why great content doesn’t earn links on its own

    Why great content doesn’t earn links on its own

    The verdict

    Publish something genuinely excellent and the links will come. It is the most repeated claim in content marketing and for most businesses it is false. Not because the content is not good, but because nobody knows it exists. Being good is not a distribution mechanism.

    Publish something genuinely excellent and the links will come. It is the most repeated claim in content marketing and, for most businesses, it is false.

    Not because the content is not good. Because nobody knows it exists, and being good is not a distribution mechanism.

    The arithmetic

    Ahrefs examined 14 billion pages and found 96.55% get zero traffic from Google, with a further 1.94% getting between one and ten visits a month.

    A page with no traffic gets no links, because links come from people who read things. So the mechanism as usually described, write it, get found, get linked, has a missing first step for almost every page ever published.

    And the pages that already rank keep pulling ahead. Ahrefs studied 200,000 pages across 10,000 keywords and found pages at position one gaining new referring domains at 5–14.5% per month, with the pace falling as position drops. Links accrue to visibility, and visibility partly comes from links. If you are not already in that loop, publishing does not put you in it.

    Who the claim is true for

    It is not a lie. It is advice from people for whom the missing step does not exist.

    A site with an established audience, a mailing list, a following, or existing rankings genuinely does publish and get linked. The distribution is already built and invisible to the person describing their process. They publish, links arrive, and they conclude the content did it.

    For a local business or a small store with no audience, the same content produces nothing, and the reasonable conclusion drawn is that content marketing does not work. It works. The prerequisite was never mentioned.

    What actually earns links

    Three things, and none is “quality” in the abstract.

    Something nobody else has. Original data, a real case with numbers, a position that contradicts the field. A summary of what everyone knows is well-written and unlinkable. There is no reason to cite it over the source.

    Something a specific person needs. Links come from individuals with a reason to point at you. If you cannot name the kind of person who would link to this and why, probably nobody will.

    Distribution. The step that gets left out. Telling the people who would care that it exists. This is unglamorous, it looks like promotion rather than content, and it is the actual mechanism.

    What I would not do

    • Publish more of the same in the hope of volume. Ten unlinked articles is not closer to a link than one.
    • Buy links to fix the gap. Google’s spam policies define link spam as creating links “primarily for the purpose of manipulating search rankings”, and name buying, exchanging goods for links, and product-for-review arrangements specifically.
    • Confuse internal with external. Internal linking is the cheapest link building there is and it is entirely within your control, but it is a different asset and it does not substitute for external references.

    The honest version for a small business

    Most local businesses will never earn many editorial links, and that is survivable. Their competitors have not either. The realistic sources are suppliers, trade bodies, local press, sponsorships and genuine relationships: a dozen good ones over years, not a campaign.

    What I would rather see is the effort going into pages that convert the traffic you can get, and into the internal linking that makes your existing authority land where you want it. Being straight about what does not work is more useful than another content calendar.

    The short version

    1. 96.55% of pages get no traffic. No traffic, no links.
    2. The claim is true for people who already have distribution and cannot see it.
    3. Position one gains referring domains at 5–14.5% a month. The loop excludes you by default.
    4. Original data, real cases, contrary positions, not “quality”.
    5. Name who would link to it and why. If you cannot, nobody will.
    6. Distribution is the missing step, and it looks like promotion.
    7. Most local businesses will never earn many links. So have their competitors.

    If a site should be ranking and it isn’t, that’s the work I do. Link building covers what actually earns links and what does not. If you’re not sure which of several plausible problems is costing you, that’s what an SEO audit is for.

  • The disavow file: when it helps and when it hurts

    The disavow file: when it helps and when it hurts

    The verdict

    I used to recommend disavow files fairly readily. I almost never do now. The tool did not change. Google got better at ignoring junk on its own. There is no feedback and no measurement, so you will never know what it did. Never disavow on a toxicity score.

    I used to recommend disavow files fairly readily. I almost never do now, and the change is worth explaining because the reasoning applies more widely than this one tool.

    What changed

    Not the tool. Google’s ability to ignore junk on its own.

    The disavow file was built for a period when unnatural links could genuinely drag a site down and manual actions for link schemes were common. Both are much rarer now. Google discounts links it can see you did not build, and for most sites that happens without anybody filing anything.

    So the question stopped being “should we clean this up” and became “is there anything here Google is failing to discount”. For most profiles the honest answer is no.

    What the file actually does

    It tells Google to ignore specific links. It is a one-way instruction with no confirmation, no report, and no way to measure the effect. You cannot A/B test it and you will never know what it did.

    That asymmetry is the whole problem. If you disavow a hundred links and nothing changes, you cannot tell whether they were harmless or whether you removed something that was helping. There is no feedback.

    When I would still use one

    Three situations, and they are narrow.

    • An active manual action for unnatural links. Unambiguous. Google has told you, in Search Console, and the file is part of the remedy. This is the case the tool was built for.
    • You know you bought links. Not suspect. Know. A previous agency ran a campaign, you have the invoices or the pattern is unmistakable, and the links are still live. Removal at source is better where possible; disavowal is the fallback.
    • A genuine negative SEO event. Thousands of links appearing in weeks from an obviously coordinated source. Rare, and it does look like what it is.

    Outside those three, I would leave it alone.

    When it does damage

    Disavowing on a toxicity score. The scores are third-party inventions, not Google signals, and a file built by exporting everything above a threshold will contain links that were doing something. This is the commonest harm and it is entirely self-inflicted.

    Disavowing at domain level to be thorough. One bad link on a site that also gave you a good one, disavowed as a domain, removes both.

    Disavowing to feel like progress. The most honest description of most disavow work. It is visible, it produces a deliverable, and it is easier than the thing that would actually help.

    The reframe

    Almost every profile has junk in it. Ahrefs examined 14 billion pages and found 96.55% get zero traffic from Google. The web is overwhelmingly made of pages nobody visits, and some of them link to you. That is not a problem to solve. It is what the web is.

    Google’s spam policies define link spam by intent: “creating links to or from a site primarily for the purpose of manipulating search rankings.” Note the framing. Links you did not create and did not seek do not meet that definition, and treating them as a liability misreads what the policy is about.

    What I would do instead

    Ask whether links are the constraint at all. On most sites I audit they are not. The pages are thin, the architecture is broken, or the site is competing above its weight. Auditing the profile before the site deserves links is effort in the wrong place.

    And if you did buy links, get them removed rather than disavowed. Removal is real. Disavowal is a request.

    Why I am posting this rather than quietly changing the template

    I have written up two other recommendations I have stopped making, and the reason is the same each time: the advice is in documents clients still have. Silently updating a template does nothing for somebody holding an audit from 2022 that tells them to build a disavow file. Saying so publicly does.

    The short version

    1. Google got better at ignoring junk. The tool did not change; the need did.
    2. No feedback, no measurement. You will never know what it did.
    3. Use it for: an active manual action, links you know you bought, a real negative SEO event.
    4. Never disavow on a toxicity score. Third-party inventions, not Google signals.
    5. Domain-level disavowal removes the good link too.
    6. Junk in a profile is normal. 96.55% of pages get no traffic; some of them link to you.
    7. Removal beats disavowal. And links are usually not the constraint.

    If a site should be ranking and it isn’t, that’s the work I do. Link building covers the off-site half, including what not to bother with. If you’re not sure which of several plausible problems is costing you, that’s what an SEO audit is for.

  • Category architecture that matches search, not merchandising

    Category architecture that matches search, not merchandising

    The verdict

    Most category structures were designed by somebody thinking about the warehouse, the supplier list, or how the business is organised internally. Almost none were designed by looking at what people search for. The tell is category pages ranking for nothing while individual products rank for scraps.

    Most category structures were designed by somebody thinking about the warehouse, the supplier list, or how the business is organised internally. Almost none were designed by looking at what people search for.

    Those two things overlap, and where they diverge is where a catalogue quietly loses.

    The mismatch, concretely

    A store organises by brand because that is how it buys. Customers search by use case. A store organises by product type because that is how the warehouse racks it. Customers search by problem.

    Neither structure is wrong internally. The failure is that the category pages, the pages with the best chance of ranking on any catalogue, are named and grouped in a vocabulary nobody types.

    The tell is a category page ranking for nothing while individual products rank for scraps. The hub is not a hub, because it does not correspond to a thing anybody looks for.

    Why it goes unexamined

    Because changing it is a migration and everybody knows it.

    URLs move, internal links break, redirects have to be mapped, and the merchandising team has opinions. So the structure survives every redesign and gets treated as terrain rather than a decision. That is how a store ends up with three categories and two thousand products, or with forty categories nobody browses.

    What I would look at

    Do your category names match real queries? Not exactly, but recognisably. If a category is called “Workwear Solutions” and people search “waterproof work trousers”, the name is doing no work.

    Give the ones that matter enough copy to function. Do not chase a number while you are at it. The 2024 Web Almanac put the median mobile home page at 364 words, so two useful paragraphs already clears the web’s average. The job is answering the buying question and creating somewhere to place a deliberate link, not hitting a length.

    • Is anything a category that should be a filter, or the reverse? This is the substantive question. A brand might deserve to be a category if people search the brand plus the product type. A colour almost never does. The decision is per attribute and it is the same judgement as facets.
    • How many products per category? Three categories and two thousand products means everything is reachable only by pagination, and page eight onwards is functionally invisible. Counterintuitively, more categories usually makes a site shallower.
    • Does anything have one product in it? A category with one item is a duplicate of that item, competing with it.

    The scale question

    This is where large catalogues differ from small ones in kind rather than degree.

    On a two-hundred-product store you can hand-design the taxonomy in an afternoon. On a twenty-thousand-product store the structure is generated, and the decision you are making is about rules rather than categories: which attributes become browsable, at what depth, and where the combinatorial explosion is cut off.

    HTTP Archive’s 2025 Web Almanac found ecommerce software on 19.2% of mobile sites, with WooCommerce at 44.4% of those and Shopify at 25.3%. All of them ship a default taxonomy behaviour that somebody either configured or did not, and on most stores, did not.

    When it is worth the migration

    Rarely, and I would say so before anyone proposes one.

    Worth it when category pages are getting essentially no traffic despite the products selling, when the structure prevents categories existing that clearly should, or when you are already migrating for another reason and can fold it in.

    Not worth it when the current structure is merely imperfect. The cost is real and the gain is uncertain, and the diagnosis rarely changes with scale even when the numbers do.

    The middle path most stores should take: keep the structure, add the categories that are missing, and give the ones that matter enough content to function as hubs. That captures most of the gain without moving a single URL.

    The short version

    1. Most taxonomies were designed around the warehouse, not around search.
    2. The tell: category pages ranking for nothing while products rank for scraps.
    3. Category or filter is the real question, and it is per attribute.
    4. Too few categories creates depth. More categories makes a site shallower.
    5. A category with one product competes with that product.
    6. At scale you are designing rules, not categories.
    7. Usually do not migrate. Add what is missing and make the hubs real.

    If a site should be ranking and it isn’t, that’s the work I do. Ecommerce SEO covers architecture, categories and facets. If you’re not sure which of several plausible problems is costing you, that’s what an SEO audit is for.

  • Multi-location reporting: which branches are actually underperforming

    Multi-location reporting: which branches are actually underperforming

    The verdict

    A business with six locations gets one report and the aggregate hides everything worth knowing. Total calls up nine per cent. Four branches flat, one growing fast, one quietly collapsing. That is not merely uninformative, it is misleading, because the strongest branch masks the weakest for months.

    A business with six locations gets one report, and the aggregate hides everything worth knowing. Total calls are up nine per cent. Four branches are flat, one is growing fast, one is quietly collapsing, and the summary line says none of that.

    Why the aggregate is worse than useless

    Not just uninformative. Actively misleading, because the strongest branch masks the weakest.

    One location doubling can carry a report while another halves. The number goes up, everyone is pleased, and the branch with the actual problem gets nine more months of nobody looking. By the time it surfaces in revenue the cause is a year old and untraceable.

    So the first rule is that a multi-location report is six reports. There is no shortcut, and any summary that leads with a total is hiding the finding.

    The comparison that actually works

    Each location against its own past, never against each other.

    Branches are not comparable. One sits in a dense centre with heavy competition, one covers a rural catchment, one opened eight months ago. Ranking them against each other produces a league table that punishes geography, and the branch manager at the bottom is usually not doing anything wrong.

    I have seen this run as an internal scorecard and it damages more than it fixes.

    The trap in the profile data itself

    Two, and both are easy to walk into.

    The Search versus Maps split is not organic versus map pack. It records where the profile was viewed: the Maps app on one side, google.com on the other. The local pack renders inside Google Search, so a profile getting most of its views through Search is very often getting them from the pack. As a pack-versus-organic proxy the ratio is close to meaningless, and it is the most confidently misread number in the report.

    What the pack actually weighs is published. Google names relevance, distance and prominence and states that there is “no way to request or pay for a better local ranking on Google.” Distance is measured from each branch, which is precisely why a group-level number cannot describe six catchments. Two of your six may be competing against completely different sets of businesses.

    Click mix varies enormously by vertical and location. Across six profiles I track, phone’s share of profile clicks ranged from 13.1% at one business to 3.1% at another. Direction requests are near-meaningless for some and the primary signal for others. A single cross-branch scorecard using the same weightings misleads for at least half of them.

    What I would actually report, per location

    • Calls, direction requests and website clicks in absolute numbers, against that location’s own twelve-month baseline. Not percentages, and not against the group.
    • Grid position, quarterly. The thing the profile data structurally cannot tell you, because distance is measured from each building separately and one report cannot describe six catchments.
    • Review recency per branch. BrightLocal’s 2026 survey of 1,002 US consumers found 74% look for reviews written in the last three months. Review collection is almost always uneven across branches, and the gap is invisible in a group total.
    • Whether anything changed locally. A competitor opening two streets away explains a branch decline completely and appears nowhere in any dashboard.

    The structural question underneath

    Before any of the reporting: is this one business with six locations, or six businesses under one brand? It determines whether you need six profiles and six location pages or one of each, and getting it wrong makes every subsequent number ambiguous.

    The scale of a group changes the reporting burden and not the diagnosis. the failures are the same ones a single-location business has, multiplied by six and averaged into invisibility.

    The short version

    1. A six-location report is six reports. The total hides the finding.
    2. The strong branch masks the weak one for months.
    3. Compare each location to its own past, never to its siblings.
    4. The Search/Maps split is not pack versus organic. The pack lives inside Search.
    5. Click mix varies hugely: 13.1% phone share at one business, 3.1% at another.
    6. Grid position quarterly is the thing the profile data cannot give you.
    7. Track review recency per branch. 74% of people want reviews under three months old.

    If a site should be ranking and it isn’t, that’s the work I do. Local SEO covers profiles, catchments and multi-location groups. If you’re not sure which of several plausible problems is costing you, that’s what an SEO audit is for.

  • Location pages that work, and forty spun pages that don’t

    Location pages that work, and forty spun pages that don’t

    The verdict

    A clinic I audited served four named areas. Four honest pages was an afternoon’s work. A page per suburb across the metro would have been a month and a liability. The difference is not effort. It is whether each page is a document about somewhere or a net with a place name in it.

    A clinic I audited served four named areas. Four honest pages was an afternoon’s work. A page per suburb across the metro would have been a month, and a liability.

    The difference between those two projects is not effort or scale. It is whether each page is a document about somewhere, or a net with a place name in it.

    Google’s actual line

    Worth quoting rather than paraphrasing, because the folklore is vaguer than the policy. Google’s spam policies define doorway abuse to include “having multiple domain names or pages targeted at specific regions or cities that funnel users to one page” and “creating substantially similar pages that are closer to search results than a clearly defined, browseable hierarchy.”

    Notice what is not prohibited: having a page about a place. What is prohibited is a set of near-identical pages whose only job is to catch a place name.

    So the question is never “are location pages allowed”. It is whether this one is a document or a net.

    The test

    Could you write the second page without looking at the first?

    If the honest answer is no, if you would open page one and change the nouns, you are building the thing the policy describes, and you will build forty of them because that is the only way the approach makes sense to whoever proposed it.

    They also fail as a set. Forty thin near-duplicates drag down the two or three that would have been fine standing alone, which is the part people do not expect. The downside is not that thirty-seven pages underperform. It is that all forty do.

    What makes one real

    Things that are true of that place and nowhere else. On a local service business that is more available than people assume:

    • Why you are actually there. Which practitioner covers it, how long you have worked there, what proportion of your work comes from it.
    • Local specifics that affect the service. Housing stock and its typical problems for a trade. Parking and transport for a clinic. Which hospital, which court, which school catchment: whatever the service actually intersects with.
    • Work you have done there. Anonymised if it must be, but specific. This is the part nobody can copy.
    • Honest coverage limits. Saying you serve the north of a town and not the south is more credible than claiming the whole metro, and it costs you nothing you were winning anyway.

    How many

    As many as you can write properly. For most single-location businesses that is somewhere between three and six.

    If the honest answer is “we would travel anywhere”, that is not a content strategy. Write the areas where you genuinely work and let the rest be covered by the main service pages, which have no distance constraint on them.

    The expectation to set before anybody writes

    Location pages do not put you in the map pack. The pack ranks your Business Profile, and Google names relevance, distance and prominence as what decides it, adding that there is “no way to request or pay for a better local ranking on Google.” A page is not one of those three inputs.

    What a location page competes in is the ordinary results, where distance does not apply. That is a real opportunity and it is a different one. Scale changes the numbers, not the diagnosis, and forty pages is a scale decision dressed up as a strategy.

    The short version

    1. Location pages are not prohibited. Near-identical pages funnelling to one destination are.
    2. The test: could you write the second without looking at the first?
    3. They fail as a set. Forty thin pages drag down the three good ones.
    4. Make it true of that place: who covers it, what is different, work you have done.
    5. Honest coverage limits are more credible than claiming the metro.
    6. Three to six, written properly.
    7. They will not get you into the map pack. Different competition entirely.

    If a site should be ranking and it isn’t, that’s the work I do. Local SEO covers the pages, the profile and the pack. If you’re not sure which of several plausible problems is costing you, that’s what an SEO audit is for.

  • Relevance or authority: which actually wins

    Relevance or authority: which actually wins

    The verdict

    A link from a large publication with nothing to do with your industry, or a link from a small site precisely about what you do. The tools say the first. My experience says the second, more often than the metrics suggest, and the question keeps coming up because authority is easy to measure and relevance is not.

    Given the choice between a link from a large publication with nothing to do with your industry, and a link from a small site that is precisely about what you do, which is worth more?

    The tools will tell you the first. My experience says the second, more often than the metrics suggest, and the reason the question keeps coming up is that authority is easy to measure and relevance is not.

    Why the metrics favour authority

    Because it is the measurable half.

    Domain authority scores are calculable from a link graph. Relevance requires understanding what a page is about and whether that has anything to do with you. So every tool leads with a number for the first and offers nothing for the second, and the thing that gets measured becomes the thing that gets pursued.

    That is a reporting artefact, not a finding about how search works.

    What the published work suggests

    Nobody can isolate this cleanly, and anyone claiming to has overstated it. But there is a data point worth having.

    Ahrefs ran a correlation study across 44,589 non-branded keywords and found the sum of organic traffic to the referring pages correlated with rankings better than the count of referring pages. Their own framing is careful and so is mine. It is a rank correlation on a keyword sample, not proof about your site.

    But note what that measures. Traffic to the referring page is a rough proxy for whether the page is genuinely about something people search for. It is closer to relevance than a domain-level score is, and it outperformed the count.

    The case I keep seeing

    Two sites in the same market, from an audit I ran. The client had 3,575 referring domains. The competitor had 1,853, and roughly twice the traffic and more than twice the top-three rankings.

    I cannot prove the composition from that data and I will not pretend otherwise; I did not do a link-by-link teardown of a competitor’s profile. But when a site with half your referring domains beats you that comprehensively, the count is demonstrably not the variable, and something the count cannot see is doing the work.

    The whole comparison is written up here and it is the clearest example I have.

    How I would actually decide

    The question is usually theoretical, because you rarely get to choose. When you do:

    • Take relevance when the topic is close and the site is real. A trade publication, a supplier, an industry body, a genuine practitioner blog. These links tend to come with context, since the surrounding text is about your subject, and they often bring traffic that converts.
    • Take authority when the relevance is at least plausible. National coverage of your business is worth having even if the publication is general, because it is a real editorial mention and those are rare.
    • Take neither if it is a placement. A high-authority link from a page nobody reads, in a section built for links, is the thing both metrics fail to catch. The sales call test sorts these faster than any score.

    Google’s spam policies put the line in the same place, and it has nothing to do with authority or relevance: link spam is “creating links to or from a site primarily for the purpose of manipulating search rankings.” A placement fails on intent regardless of how either metric scores the host.

    The reframe I would rather leave you with

    This is a false choice in most real situations, because you are not selecting from a menu. You are asking who might plausibly mention your business, and the answer is almost always people in your industry. That means the realistic link is the relevant one whether or not it is the theoretically superior one.

    The businesses that agonise over this are usually the ones buying links, because buying is the only context where you genuinely choose. If you are earning them, relevance is not a preference. It is a description of who was ever going to link to you.

    The short version

    1. Authority is favoured because it is measurable, not because it wins.
    2. Traffic to the referring page correlated better than referring page count across 44,589 keywords.
    3. 3,575 referring domains lost to 1,853 in a market I audited. Count was not the variable.
    4. Take relevance when the site is real and the topic is close.
    5. Take authority when relevance is at least plausible.
    6. Take neither if it is a placement, however the metrics score it.
    7. It is a false choice unless you are buying. Earned links are relevant by construction.

    If a site should be ranking and it isn’t, that’s the work I do. Link building covers what is worth pursuing and what is not. If you’re not sure which of several plausible problems is costing you, that’s what an SEO audit is for.