toolkit

Scenario · The bigger jobs

We're opening (or closing) a location

“We're opening a second office.” Or: “We've closed the [town] location.”

A location change touches more of a site than almost anything else its size — a page, the navigation, the footer, hard-coded phone numbers and addresses scattered everywhere — and a closure is the harder direction, because the work is subtraction, and subtraction is what gets missed. This finds every existing mention of a location across the whole site, including the ones buried in menus and machine-readable markup that a normal glance never sees, so a closed location doesn't stay half-listed and generating calls to a number nobody answers anymore.

What to ask for

Local SEO (NAP)Local SEO / NAP audit — reads a page's delivered HTML and checks the local-search signals a business page lives or dies by: LocalBusiness structured data with a complete Name-Address-Phone, a phone and street address on the page, NAP consistency between the schema and the visible page (a mismatched phone fails the page), and Google Business Profile readiness — opening hours, geo coordinates, an embedded map.Sitemap & robotsRead-only sitemap & robots map — fetches a site's robots.txt and every sitemap it declares (or probes the common locations), follows sitemap indexes down to their children, collects every URL, and reports what is declared, what robots.txt blocks, and what is oversized, cross-host or insecure, plus a crawl-over-crawl diff.Structured data (schema)Structured-data audit — checks a page's JSON-LD against a per-type rubric: valid JSON, a schema.org context, and the required and recommended properties that gate rich results for Organization, WebSite, Article, Product, LocalBusiness, BreadcrumbList, FAQPage, Event, Recipe and more.Redirect checkRedirect-chain validator — follows where each URL actually sends a browser, hop by hop, and reports the loops, over-long chains, temporary (302/307) redirects where a permanent one belongs, meta-refresh and JS redirects, https-to-http downgrades, and dead ends.Site-wide content searchSite-wide content scout — searches every page of a site (or one page) for literal phrases or labelled regex rules and reports every occurrence with its surrounding sentence, so a copy change can be scoped before anything is edited.Link & image checkerOn-page link & image checker — extracts every link and image a page declares, fetches each to its status code, and reports the dead ones (4xx/5xx broken links and broken images) plus the link-quality issues search engines and screen readers care about: non-descriptive anchor text, image-only links with no accessible text, malformed links, insecure external links, new-tab links missing rel=noopener, and excessive link counts.

See it work

A real run of Local SEO (NAP):

FAIL — 1 page(s)
      [error] schema phone +1-555-0100 ≠ page phone +15559999 — inconsistent NAP confuses local ranking
      [info] LocalBusiness schema has no openingHours / openingHoursSpecification — add hours for Google Business Profile parity
      [info] LocalBusiness schema has no geo (latitude/longitude) — helps map placement
      [info] no Google Maps embed on the page — an embedded map reinforces the location signal

  report: ./out/local-seo-nap-local-seo-nap.html
  json:   ./out/local-seo-nap.json
  text:   ./out/local-seo-nap-local-seo-nap.txt

The captured report, exactly as a run hands it to a client —open the full report ↗

A location change touches more of a site than anything else of its size: a page, the navigation, the footer, the contact page, the schema, and every place a phone number or address was hard-coded. A closure is the harder direction, because the work is subtraction and subtraction is what gets missed.

  1. Get the full detail set, confirmed. Name as it should appear, street address, phone, hours. For a closure, the date it closed and where its patients are being directed.
  2. Map the site and find every existing mention. The URL list, then a site-wide search for the location’s town, address and phone number with the raw pass on — location details live in footers, schema blocks and tel: links far more than in body copy, and none of those are visible text.
  3. Audit the current consistency. The local SEO check reports where the practice’s name, address and phone disagree across the site. On a multi-location site this is almost always already inconsistent before you add anything.
  4. [manual] For an opening: build the location page and wire it in. Its own page with its own address, phone and hours, added to the navigation and the location list, with LocalBusiness structured data carrying the same details as the visible page.
  5. [manual] For a closure: remove the page, redirect it, and sweep the references. A 301 to the remaining-locations page rather than home, then remove the footer entry, the location-list item, the schema node and the map embed. A closed location still listed in the footer is the version of this ticket that generates a phone call to a disconnected number.
  6. Verify. Re-run the consistency check — one set of details per location, agreeing everywhere. Re-run the reference search for a closure: zero hits on both passes. Check the redirect resolves in one clean hop, and run the link check so a stale footer entry surfaces as a broken link.
  7. Check the structured data. The schema audit on each location page, confirming the machine-readable address and hours match the visible ones.

Closures are the dangerous half

An opening that is half-finished looks unfinished — a page missing from the menu is visible. A closure that is half-finished looks complete while still publishing an address patients will drive to and a number nobody answers. Step 2 and step 6 exist for that direction specifically.

What this does not cover

Everything outside the website. A location exists in the Business Profile, in directories, on the practice's stationery and in whatever booking system takes appointments, and none of that is reachable from here. This procedure covers the site's side: the page, the consistency of the details across it, the structured data, and — for a closure — the references that would otherwise go on advertising a place that has shut.

← All scenarios