Bottom line

We found actionable patterns, not Google’s causal answer.

The evidence supports better next steps, but it still does not reveal why Google assigned an individual URL to a specific index state.

What to do next

A four-phase client plan

Sequence the work so AirGarage gets immediate hygiene wins, makes explicit inventory decisions, and learns from any experiment.

01

Now

Confirm and clean up 20 redirect sources

Owner-confirm each observed target. Verify the preferred target remains HTTP 200, self-canonical, and currently sitemap-listed; then remove the redirect source from the sitemap and internal links while keeping the redirect.

02

Next

Map and strengthen crawlable hubs

Identify replacement rendered discovery paths. Remove links to retired hub/query URLs and provide clean, direct links to a deliberately selected high-value subset. This is not a claim that retired hubs caused exclusions.

03

Decide

Set a separate inventory strategy by family

For Gates & Equipment, Solutions, and Parking Payments, decide what to retain, consolidate, or retire based on distinct user and commercial intent.

04

Test

Run a pre-specified controlled pilot

Where feasible, stratify and randomize, retain held-out controls, define the primary transition outcome and fixed schedule, plan the minimum detectable effect, and protect controls from spillover. Otherwise label it operational and non-causal.

Evidence register

Nine ranked findings

The badge describes the type of conclusion. Evidence strength describes how firmly we can state that limited conclusion—not how urgent an investigation is.

#1Direct observation

The 20 hash-suffixed /locations URLs are current redirect sources to semantic counterparts and should be treated as source variants, not submitted content URLs.

Evidence strength: high

What supports it

All 20 source variants are members of the frozen sitemap. Wave 2 directly observed initial HTTP 301 for 20/20 variants and HTTP 200 with self-canonical for 22/22 counterpart candidates. Historically, 20/20 variants were excluded versus 111/980 unsuffixed rows; 17 had an indexed counterpart.

Important limit

The cohort/test was found post hoc. Non-following GETs do not establish a redirect chain or final destination, owner preference is unconfirmed, and current sitemap membership of targets was not measured.

Next action: For each source, owner-confirm the observed target is preferred and verify the target remains HTTP 200, self-canonical, and currently sitemap-listed. Then remove redirect sources from the sitemap/internal links while keeping the redirects; do not promise an indexation outcome.

What would change this assessment?

A later current check no longer redirects, or the owner identifies a target as unintended and restores a distinct content purpose.

#2Association

Family membership is associated with different indexed shares across the three large programmatic cohorts.

Evidence strength: medium

What supports it

Across the same 922 city slugs, indexed shares differ consistently: Gates & Equipment 45.8%, Solutions 61.5%, and Parking Payments 70.9%.

Important limit

Underlying template, intent, launch history, links, and business value remain unisolated; observational matching on slug does not assign a cause.

Next action: Set a separate inventory and user-intent decision for each family; do not apply one generic city-page fix.

What would change this assessment?

Owner publish dates, inlink graph, or controlled changes explain the family gap without a family-membership component.

#3Hypothesis to test

High similarity in sampled full-page server-returned transport text raises an unverified inventory-level differentiation question.

Evidence strength: low

What supports it

Wave-1 full-page server-returned transport text, including shared navigation/footer/boilerplate, has ~0.99 median within-family token-sequence similarity for solutions, parking-payments, and locations (~0.93 gates).

Important limit

Indexed controls are equally similar, /locations has high coverage, and the metric is not rendered, boilerplate-stripped main-content or user-purpose evidence. It does not distinguish individual outcomes.

Next action: Do not rewrite pages or prescribe local-content work from this metric. First analyze rendered, boilerplate-stripped main content and user purpose; only then consider a controlled differentiation treatment for commercially important pages or owner-led consolidation/retirement.

What would change this assessment?

Rendered, boilerplate-stripped main-content and user-purpose analysis shows substantial location-specific utility not captured in full-page transport text.

#4Hypothesis to test

Historical programmatic discovery hubs have been removed, and current replacement internal-link support may be incomplete.

Evidence strength: medium

What supports it

Four hub paths account for 3,193 frozen GSC referrer occurrences amid 600 unique query strings. Wave 2 directly observed 8/8 tested root/query URLs returning HTTP 404 with canonical /404; the 113-page wave-1 current-200 sample had zero non-self programmatic outgoing links.

Important limit

GSC referrers are partial and historical; a new hub or links elsewhere may replace these paths. The bounded sample is not a complete rendered inbound-link graph and does not establish an indexing reason.

Next action: Identify replacement discovery paths, remove links to retired hub/query URLs, and provide clean crawlable hubs with direct canonical links to a deliberately selected high-value subset.

What would change this assessment?

A complete current rendered link graph shows clean replacement hubs and direct crawlable links reaching the retained programmatic inventory.

#5Association

Crawled-not-indexed pages have older recorded crawl timestamps than indexed pages in this snapshot.

Evidence strength: medium

What supports it

The older recorded-crawl pattern repeats across major families when age is anchored to each inspection timestamp.

Important limit

Reverse causation is strong: exclusion can lead to less recrawling. Discovered/unknown timestamps are structurally absent and were excluded.

Next action: Use fixed-interval panel monitoring and Googlebot logs; treat recorded crawl transitions as outcomes, not as proof of the original reason.

What would change this assessment?

Longitudinal logs/panel data show comparable recorded crawl cadence after controlling for status and publication date.

#6Not supported as primary explanation

City demand alone is the main explanation for the three-family outcomes.

Evidence strength: low

What supports it

Same-city pages share geography and possible demand context.

Important limit

Exact-city cross-family phi is only about 0.02–0.05 while family rates differ substantially.

Next action: Do not prioritize solely by city name; combine business value, intent, links, and family-specific evidence.

What would change this assessment?

Independent demand data strongly predicts outcomes within each family in a prospective analysis.

#7Direct observation

The frozen sitemap order is exactly alphabetic within all three primary families.

Evidence strength: high

What supports it

Observed Spearman correlation between sitemap position and alphabetic rank is 1.0 in each primary family.

Important limit

This describes the frozen ordering only and says nothing about publication chronology or an indexation cause.

Next action: Treat this only as an ordering observation.

What would change this assessment?

A reproduced parse of the same frozen sitemap does not yield exact alphabetic ordering.

#8Not supported as primary explanation

Available sitemap position is usable as a publication-age proxy.

Evidence strength: low

What supports it

None; the available order is exactly alphabetic.

Important limit

Alphabetic ordering makes position unusable as an age proxy in this snapshot, but it does not prove page age is unrelated to indexation.

Next action: Request actual CMS created/published/modified dates; do not infer page age from sitemap position.

What would change this assessment?

Independent CMS timestamps establish and validate a publication chronology encoded by another measured field.

#9Not supported as primary explanation

URL depth, slug length, or token cleanup is a meaningful primary discriminator.

Evidence strength: low

What supports it

No material pattern in the frozen primary-family aggregates.

Important limit

All primary pages have the same path depth; indexed/excluded median slug length and token counts are nearly identical.

Next action: Do not spend the first remediation cycle shortening otherwise valid slugs.

What would change this assessment?

A preregistered multivariable analysis with independent data shows a repeatable material effect.

Same cities, different families

922 matched city slugs show a family-level association

Comparing the same city names reduces—but does not remove—confounding. Family membership is useful for prioritization; it does not isolate a template or content cause.

Gates & Equipment45.8%
Solutions61.5%
Parking Payments70.9%

Family membership is associated with different indexed shares; intent, history, links, and business value remain unisolated.

Inventory hygiene

Twenty redirect sources to owner-confirm and clean up

This is a separate workstream from the original 16 signed-off page priorities. Three URLs overlap; do not describe the report as having 36 unique priorities.

Verify before removing a source from the sitemap. All 20 sources were in the frozen August 13 sitemap and returned an initial 301 on August 18. Their observed targets returned 200 and were self-canonical in Wave 2. The targets’ current sitemap membership was not tested, and redirects were not followed to prove a final destination.
Twenty redirect-source cleanup records with observed targets and owner-check state
Redirect sourceObserved targetCurrent checkOwner check
/locations/apple-valley-11b8c/locations/apple-valley-mn200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/chicopee-662d7/locations/chicopee-ma200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/colton-0e5d7/locations/colton-ca200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/dearborn-heights-65908Also in the original 16/locations/dearborn-heights-mi200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/diamond-bar-a10e1/locations/diamond-bar-ca200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/georgetown-d39e3/locations/georgetown-tx200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/gilroy-e067e/locations/gilroy-ca200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/grand-forks-2d05c/locations/grand-forks-nd200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/hempstead-95c5bAlso in the original 16/locations/hempstead-ny200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/hendersonville-bd854/locations/hendersonville-tn200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/hoboken-c6486/locations/hoboken-nj200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/kettering-2221b/locations/kettering-oh200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/margate-7e728/locations/margate-fl200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/peabody-c0f6e/locations/peabody-ma200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/port-arthur-2c850/locations/port-arthur-tx200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/porterville-4dcbb/locations/porterville-ca200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/smyrna-aa260Also in the original 16/locations/smyrna-ga200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/valdosta-1e4a6/locations/valdosta-ga200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/weymouth-town-a01bf/locations/weymouth-town-ma200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation
/locations/woodland-786ad/locations/woodland-ca200 · self-canonical; sitemap not tested301 → 2002026-08-18Pending confirmation

Discovery architecture

Eight historical hub URLs now return 404

Four former roots and one query variant per root were checked.

/cities/enforcement/equipment/payments

The eight tested historical discovery URLs are retired now. The current replacement rendered link graph was not identified by this bounded check.

Ask engineering for the current rendered inbound-link graph before concluding pages are orphaned.

Crawl timing

Older recorded crawls are a symptom, not a diagnosis

24.9days · indexed median
147.6days · crawled-not-indexed median

An association in this snapshot, not a cause. Reverse causation remains possible.

What not to overinterpret

Four primary explanations were weakened

  • City demand alone
  • Sitemap position as publication age
  • URL depth, slug length, or token cleanup
  • Historical activity as a cause
Full-page text similarity needs another test. The sampled server transport text includes navigation, footer, and boilerplate. Indexed controls were equally similar. This does not establish thin or duplicate content and is not a basis for mass rewrites.

Keep the workstreams separate

Preserve the original 16 priorities; manage the 20-source cleanup as inventory hygiene.

The counts overlap and answer different client questions.

Review original priorities