Skip to content

Resources

Working notes

Practical notes from the work itself. No case data, no client names and no claimed results, just the reasoning applied on every project.

Migrations

Running a site migration without losing rankings

Most ranking loss at launch is not caused by design. It is caused by addresses that changed without a plan, copy that was shortened during the rebuild, and metadata that was never carried across. The fix is boring and it works: inventory first, decide second, redirect third, validate fourth.

The inventory lists every existing address with its impressions, clicks and inbound links. Each row then gets one decision: keep the address, move it to a named new address, or remove it deliberately. Nothing is left undecided, because undecided rows become 404s on launch day.

Every moved address gets exactly one permanent redirect straight to its final destination. Chains, where an old address points at another old address, waste crawl budget and dilute the signal. Redirecting everything to the homepage is worse: search engines usually treat it as a soft 404 and the equity is lost anyway.

Validation happens twice. Before launch, compare titles, headings, body content and structured data old against new. After launch, recrawl the full inventory and check that every row returns the status it was supposed to, then watch index coverage for a few weeks rather than a few days.

Content architecture

One intent, one page: fixing cannibalisation

When several pages target the same phrase, search engines have to choose between them, and the choice is often unstable. Positions swap, none of the pages accumulates authority, and reporting becomes hard to read because the ranking address keeps changing.

Diagnosis is straightforward. In Search Console, filter by query and look at the pages receiving impressions for it. If a single commercial query is spread across three addresses, that is cannibalisation, not coverage.

Consolidation means picking the page that already earns the most qualified impressions, merging the genuinely useful content from the others into it, and permanently redirecting the rest to it. Where two pages serve genuinely different intents, such as a service page and an explanatory note, keep both and make the difference obvious in the title, the heading and the opening paragraph.

The same rule prevents the problem returning. Before a new page is created, name the intent it serves and check no existing page already serves it. If one does, improve that page instead of adding another.

Website design

What crawlers actually see on a JavaScript site

A page that looks complete in a browser can be close to empty in the first response from the server. If the copy, the links and the headings are assembled by scripts after load, indexing depends on a second rendering pass that is neither instant nor guaranteed.

The quickest check is to view the raw response rather than the rendered page and search it for a sentence you can see on screen. If the sentence is missing, that content is not in the first pass. Sliders, tabs, accordions and infinite scrolling are the usual culprits, and navigation built only from scripts hides internal links as well.

The remedy is to render primary content on the server and use scripts to enhance it. Text that matters ships in the HTML. Interactive elements progressively improve what is already there, so nothing important depends on scripts running.

This is also an accessibility and performance decision. Content present in the first response reaches assistive technology sooner, appears faster on a slow phone connection, and stops the layout jumping while scripts fill the page in.

Local SEO

Local visibility beyond the business profile

A complete Google Business Profile is necessary and not sufficient. Local results weigh relevance, distance and prominence together, and only relevance and prominence can be influenced by the work.

Relevance comes from the profile categories and service list matching how customers actually describe the job, and from the site carrying a real page for each of those services. If the profile claims a service the site never mentions, the signal is weak on both sides.

Prominence comes from consistency and activity: the same business name, address and phone number wherever the business appears, duplicates resolved, and a steady flow of genuine reviews rather than a burst followed by silence. A simple request routine sent after the job is finished, with a short follow up, is more effective than any one off campaign.

Service area coverage is where most local programmes go wrong. Dozens of pages with a town name swapped in compete with each other and add nothing a customer would read. State the coverage clearly on the service page and build a separate local page only when there is genuine demand and genuine content to put on it.

The same reasoning runs through the service pages: search engine optimization, website design and SEO analysis. Completed builds are recorded under selected work, and the sequence each project follows is on the process page.

Need an answer sooner than the article?

Specific questions about your own site get a specific answer.