Pre-Migration Baseline · Locked 2026-05-25

The new site shipped on DealerCenter.
A second vendor swap is 7 days away.

This audit captures the live state of dnxmotorsales.com on 2026-05-25 — before the platform changeover scheduled for June 1, 2026. Every URL, header, schema block, and AI-crawler response is snapshotted so that post-migration regressions (especially missing 301 redirects) can be diffed with certainty.

URLs in Sitemap
11796 inventory · 21 other
Platform
DealerCenterWordPress 6.6.4 + DWS v3
AI Crawlers Allowed
0 / 4All return 403
Historical URLs Dropped
~88%Pre-redesign → May (no 301)

Days to next vendor swap: ~7 (June 1, 2026)

52
Overall Health
At risk — fix before Jun 1
Technical SEO
55
Content / on-page
45
Structured data
78
AI search readiness
18
Security posture
62
Performance / CWV
50
Accessibility
55
01 · Executive summary

What changed since April. What's still broken. What the vendor swap is about to break next.

The site is no longer the old DealerCenter widget — but it's not the standalone SEO build proposed either. They moved sideways onto DealerCenter's WordPress Suite (DWS v3). On June 1, a second platform change is planned. The risk envelope is large and bounded by URL persistence.

!

Homepage has zero H1 elements

The new homepage ships with no <h1> tag at all. Three H2s (Search By Body Type, DNX Motors, Featured Vehicles), one H3. Search and AI engines have no primary topical signal.

!

All four major AI crawlers return 403

GPTBot, ClaudeBot, PerplexityBot, and Google-Extended are all blocked at the Cloudflare edge regardless of robots.txt. ChatGPT, Claude, Perplexity, and Google AI Mode cannot read this site.

Sitemap pollution from WordPress defaults

/hello-world/, /sample-page/, /home-2/, /author/2236203/ are all indexable. These are leftover WP installer artifacts that signal "low-effort site" to search engines.

21 of 24 images on the homepage have no alt text

Including the primary hero/featured-vehicle imagery. Accessibility, image search, and AI vision indexing all suffer.

Three Google Tag Manager containers stacked

GTM-MWVDNXZ9, GTM-NFCSCJJG, GTM-N3BWLTQ — plus separate gtag.js (G-8Z71B13BKV, G-HQFH2QPMWG). Each adds render-blocking weight, and they overlap measurement.

!

The previous redesign already dropped ~88% of historic URLs without redirects

Wayback Machine shows the old dealer platform (pre-Apr) had 1,175+ content URLs — including 295 /vdp/ vehicle pages, 616 /used-cars/ pages, 294 /vehicle/ pages, plus blog, financing tools, and programmatic SEO landing pages. Of 126 sampled, only 5 were 301'd. 111 are now 404. Years of accumulated organic equity vanished.

!

96 inventory URLs follow a DealerCenter-specific pattern

/inventory/{make}/{model}/{stock-id}/ is a DealerCenter URL convention. If the June 1 vendor uses a different pattern, all 96 vehicle pages will 404 without 301 redirects.

02 · Before / after

April 2026 audit vs. May 2026 audit

Where the new build improved on what was there in April, and where it regressed or stood still.

DimensionApril 2026 (old)May 2026 (new)Delta
Platform DealerCenter classic widget DealerCenter WordPress Suite (DWS v3) → Lateral
H1 on homepage Missing Still missing → No change
Schema markup Minimal / generic 5-type graph (WebPage, Organization, BreadcrumbList, WebSite, ImageObject) ↑ Improved
Sitemap structure Single sitemap, partial Yoast index + 5 child maps (117 URLs total) ↑ Improved
Sitemap hygiene Clean (small surface) Polluted with WP defaults (hello-world, sample-page, home-2) ↓ Regressed
AI crawler access Not explicitly blocked All 4 major AI bots return 403 at edge ↓ Regressed
llms.txt Not present Still not present → No change
Image alt coverage (home) ~50% missing 21 of 24 missing (~87%) ↓ Regressed
Third-party scripts (home) Heavy 30+ external scripts (Edmunds ×3, Criteo, TikTok, FB, AudioEye, Hammer chat, DC chat, 3× GTM) ↓ Regressed
HTTPS / cert Cloudflare-managed Google Trust Services via Cloudflare (valid through Jul 27, 2026) → Equivalent
WAF / bot protection Cloudflare basic Cloudflare with managed challenge (blocks curl, AI bots, scrapers) → Mixed
Inventory URL count Unknown (widget-loaded) 96 indexable vehicle detail pages ↑ Improved (now in index)

Methodology: Apr 2026 baseline read from dnxmotorsales-audit/index.html. May 2026 baseline captured from https://www.dnxmotorsales.com via Chrome DevTools snapshot, sitemap fetch, and Cloudflare edge probes on 2026-05-25.

03 · Platform architecture

The site is DealerCenter. Again.

The April proposal recommended Option B: a standalone SEO-optimized site on the main domain, with DealerCenter moved to an inventory. subdomain. The shipped solution is Option A in a new wrapper.

High-impact finding

Tech stack detected

CMSWordPress 6.6.4 Outdated · current: 6.7+
Theme/pluginsdws-v3-c9, dws-v3-plugins, dws-forms, dws-asc-tracking
Asset CDNcdn.dealercenterwsstatic.net
Image CDNdcdws.blob.core.windows.net (Azure)
Chat widgetchat-cf.dealercenter.net + webchat.hammer-corp.com
SEO pluginYoast (sitemap structure + JSON-LD signature)
EdgeCloudflare (managed challenge active)
Strategic implication

Why this matters for June 1

The new platform on June 1 will replace this layer entirely. Two scenarios:

A. New platform also serves the public site → URL patterns will likely change. The 96 inventory URLs + 21 page URLs must be 301-mapped or organic traffic resets to zero.

B. New platform is inventory-only (subdomain) → Site becomes standalone. SEO-positive, but only if the team rebuilds dnxmotorsales.com as a real site rather than a thin wrapper.

Ask the vendor today: "Will www.dnxmotorsales.com continue to serve from your platform, or do you want us to take over the root domain and point inventory to your subdomain?"
04 · Technical SEO

Crawlable, but littered with WordPress installer debris.

Indexability is open and the sitemap structure is correct. The problem is what's in the sitemap.

T-01Critical

Default WordPress install artifacts are indexable

The page sitemap lists /hello-world/ (WordPress's default "Hello world!" post), /sample-page/ (default placeholder page), and /home-2/ (orphan duplicate of homepage). All return 200 and are in the index pipeline.

# From page-sitemap.xml — junk URLs
https://www.dnxmotorsales.com/hello-world/
https://www.dnxmotorsales.com/sample-page/
https://www.dnxmotorsales.com/home-2/
https://www.dnxmotorsales.com/author/2236203/
https://www.dnxmotorsales.com/category/uncategorized/
Fix: In WP admin: trash the hello-world post and sample-page. Set author + uncategorized category archives to noindex via Yoast. Investigate and 301 /home-2/ to /.
T-02Critical

robots.txt is unreachable to non-browser crawlers

Direct curl to https://www.dnxmotorsales.com/robots.txt returns a Cloudflare managed-challenge HTML page (interstitial). Search engines and AI crawlers that fail the JS/cookie challenge will see the wrong content — or no content at all.

The actual robots.txt (when reached via browser) disallows internal tracking paths and filter combos, which is reasonable. The problem is the edge protection sits in front of it.

Fix: In Cloudflare → Security → WAF → add a Skip rule for path /robots.txt, /sitemap*.xml, and known good crawlers (Googlebot, Bingbot verified by reverse DNS). Same rule should let AI bots through if desired.
T-03Warning

Inventory URL pattern is locked to DealerCenter convention

All 96 vehicle URLs follow /inventory/{make}/{model}/{stock-id}/. Examples: /inventory/cadillac/escalade-esv/4927/, /inventory/chevrolet/corvette/4685/, /inventory/ford/mustang/4716/.

When the platform changes June 1, these URLs almost certainly change to the new vendor's convention. Without 301s, every backlink, GBP listing, classified-feed signal pointing to these stock-specific URLs breaks.

Fix: Before the swap, export the full 96-URL list (already captured in baseline-urls-2026-05-25.txt). After the swap, run the same fetch against the new sitemap and diff. Build a 301 map by matching on the stock ID embedded in each URL.
T-04Warning

WordPress version exposed and outdated

meta generator announces WordPress 6.6.4. Current stable is 6.7+. Known security advisories exist for 6.6.x. The version reveal isn't catastrophic but helps targeted exploits.

Fix: Update core, or push DealerCenter support ticket. Strip the generator meta either way.
T-05Pass

Canonical, viewport, meta robots, OG tags are all present and correct

Canonical: https://www.dnxmotorsales.com/. Meta robots: index, follow, max-image-preview:large, max-snippet:-1. Twitter card and OG image both populated. Viewport is responsive-standard.

T-06Pass

Sitemap discovery and structure are correct

Yoast index at /sitemap_index.xml references 5 child maps: post (2), page (19), category (1), author (1), inventory_usedcars (96). Total 119 entries, 117 unique. Lastmod populated.

05 · Content & on-page

The homepage tells search engines almost nothing.

Title and description are good. Below the head tag, the topical signal collapses.

C-01Critical

Homepage has no H1 element

Document outline begins with three H2 elements: "Search By Body Type", "DNX Motors", "Featured Vehicles". A single H3 ("Explore With Us"). No H1 means no primary topical anchor for Google's content-quality systems.

Fix: Insert an H1 in the hero — something like "Quality Used Cars in Forest, Virginia" or "Used Car Dealer Serving Lynchburg & Forest, VA". The current hero appears to be a slider with text inside an image; that needs accessible-text alongside it.
C-02Warning

Thin body content on the homepage

The visible page is largely body-type tiles and a featured-vehicle carousel — visual furniture. There's no descriptive paragraph content about who DNX is, what makes Forest VA a relevant trade area, what financing they specialize in, or what differentiates them from competitors. Both classical SEO and AI-citation engines need text to cite.

Fix: Add 300–500 words of distinct, locally relevant body copy below the hero. Cover: years in business, financing partners breadth (1,200+ lenders via DealerCenter), service radius, languages spoken (Spanish-speaking staff?), trade-in process.
C-03Warning

Images: 21 of 24 missing alt text

Including hero/featured-vehicle imagery served from Azure blob storage. Lazy-loading is used (good), no eager-loading on what's likely the LCP image (problem — see Performance).

Fix: Per-vehicle alt text generated from {year} {make} {model} data is mechanical and cheap. For static UI imagery, write alt manually. Hero image needs fetchpriority="high", not loading="lazy".
C-04Pass

Title tag and meta description are well-formed

Title: "DNX Motor Sales | Affordable, Quality Used Cars in Forest, Virginia" (67 chars). Description: 150 chars, includes financing keyword and geo. Both within best-practice ranges and include geographic + transactional terms.

06 · Structured data

Schema is the strongest area of the new build.

Yoast emits a properly linked JSON-LD graph. The pieces are correct. What's missing is dealership-specific markup.

Present (5 types in single @graph)

TypeStatusNotes
WebPageOKIncludes datePublished (2016-04-26), dateModified (2026-05-13).
WebSiteOKPublisher correctly linked to Organization node.
OrganizationPartialHas PostalAddress (1101 Burnbridge Rd, Forest VA 24551) + phone. Missing: @type should be AutoDealer not generic Organization. No openingHours, no geo coords, no priceRange, no sameAs links to social profiles.
BreadcrumbListOKSingle-item (Home) on the homepage — expected.
ImageObjectOKHero image referenced as primaryimage.

Missing schema (high-value for a used-car dealer)

On the homepage:

  • AutoDealer (subclass of LocalBusiness) — replaces generic Organization
  • openingHoursSpecification
  • aggregateRating (review signal pull-through)
  • sameAs array (Facebook, Instagram, TikTok, Yelp, Google Maps)
  • areaServed (Forest, Lynchburg, Bedford, Roanoke, Amherst)
  • priceRange

On vehicle detail pages:

  • Vehicle + Product + Offer
  • vehicleIdentificationNumber (VIN)
  • mileageFromOdometer
  • vehicleTransmission, fuelType, driveWheelConfiguration
  • price, priceCurrency, availability
  • itemCondition (UsedCondition)

Vehicle-level schema is the single highest-ROI structured-data investment for an automotive dealer. It unlocks Google's vehicle listing rich results and improves AI-engine extraction. Whether the new June 1 vendor supports it is the question to ask in the platform demo.

08 · Security

Cloudflare carries the load. The origin is partially exposed.

Authorized read-only checks against publicly accessible endpoints. No intrusive testing.

CheckResultNotes
HTTPS / certValidGoogle Trust Services WE1, expires 2026-07-27 (Cloudflare-managed, will auto-renew).
HSTSPartialmax-age=31536000 (1 year). No includeSubDomains, no preload.
X-Frame-OptionsSAMEORIGINClickjacking protection enabled.
X-Content-Type-OptionsnosniffMIME-sniffing disabled.
Referrer-Policysame-originConservative — good.
Permissions-PolicyRestrictiveAll sensitive APIs (camera, mic, geo, payment, USB, etc.) denied.
Content-Security-PolicyEdge-onlyCSP appears only on the Cloudflare challenge page, not on the 200 OK content. No CSP on actual site responses.
WordPress xmlrpc.php403Blocked by Cloudflare WAF.
WordPress readme.html404Removed or 404'd.
/wp-json/200 OpenREST API reachable. Leaks site name, namespaces, application-passwords endpoint URL. Standard WP exposure — restrict if not used.
/wp-login.php502Origin replies but Cloudflare returns 502 with dealercenterwebsite.net in title — origin platform leaks via error page.
WP version disclosureYesMeta generator advertises 6.6.4. Helps targeted exploits.
RSS feed (/feed/)200Standard WP feed, exposes hello-world post content.
i

Origin leak: dealercenterwebsite.net

When Cloudflare's WAF or origin error pages fire, the upstream hostname is exposed in error titles ("502 Bad Gateway · dealercenterwebsite.net"). For an attacker, that confirms the platform vendor and the real origin to target. Low severity; ask DealerCenter / new vendor to strip the host header from error pages.

09 · Performance / Core Web Vitals

Thirty-plus third-party scripts. The platform's choice, not the user's.

CrUX field data not yet available for the new build. Lab-side, the render path is dominated by external script load.

Third-party load on the homepage

ProviderScriptsPurposeNecessary?
Google Tag Manager3 containersAnalytics / pixel firingAudit needed
Google Analytics 42 propertiesMeasurementPick one
Edmunds (×3 scripts)edw_partner, eas.js, content-container, widgetstoreInventory syndication / valuation widgetsProbably yes
Criteold.jsRetargetingSpend audit
TikTok Pixelidentify + eventsAds measurementIf running TikTok ads
Facebook Pixelfbevents.jsAds measurementIf running Meta ads
AudioEyeae.jsAccessibility overlayAnti-pattern
DealerCenter chatchat-cf widgetLive chatPick one chat
Hammer Corp chatwebchat loader + iframeLive chat (duplicate)Two chat widgets
DealerCenter assetsslick.js, jQuery UI, DWS plugin JS (8+ files)Carousel, forms, trackingPlatform-bundled
!

AudioEye accessibility overlay shipped

Accessibility overlays are widely recognized as harmful (they don't fix the underlying markup, can break native screen readers, and are the subject of an open letter signed by 600+ accessibility professionals). They also add ~200KB of blocking JS. Real accessibility comes from fixing alt text, headings, and form labels — see C-03 above.

Two chat widgets concurrently

Hammer Corp webchat and DealerCenter chat are both loaded. Visitors will see one or both depending on render timing. Pick one — kill the other.

10 · Accessibility

The overlay is doing the talking. The markup is not.

Heading order is broken and images don't announce. The AudioEye widget masks this rather than fixing it.

  • Heading order jumps from page (no H1) straight to H2 ×3, then H3. Screen-reader navigation by headings will skip "the main thing this page is about" — because there isn't one declared.
  • 21 of 24 images have empty or missing alt attributes. For decorative images, alt="" is fine. For vehicle imagery and logos, it is not.
  • Three forms on the homepage (search, inventory filter, Google Translate widget). None have visible field labels in the rendered markup snapshot — placeholders only, which fails WCAG 3.3.2.
  • Color contrast on the dark hero overlay is acceptable but the carousel button hit areas appear small (estimated <44×44px) — below the WCAG 2.5.5 target size.
11 · Historical URL audit (pre-redesign → May)

The April redesign already destroyed ~88% of historic URL equity.

Wayback Machine snapshots of the old DNX site (Aug 2015 → Feb 2026) reveal the previous platform exposed 1,175+ content URLs. A 126-URL sample tested against today's live site returned a near-total collapse: 5 of every 6 historic URLs are 404 with no redirect.

!

This is the warning shot for June 1

The same vendor change that produced the new site one month ago dropped most prior URLs. The June 1 swap can repeat the failure. The redirect plan in §13 is the only thing standing between the new vendor and another 88% loss.

Method

Pulled 2,000 CDX records from web.archive.org for dnxmotorsales.com/* (Aug 2015 → Feb 2026). Filtered to 1,175 content URLs (excluded asset binaries and infinite-filter inventory module calls). Tested a 126-URL stratified sample (all non-vehicle pages + 25 each from /vdp/, /used-cars/, /vehicle/) via in-browser fetch.

5
Properly 301'd
4% of sample
111
404 — no redirect
88% of sample
~1,030
Est. total dropped
Extrapolated to full 1,175

The five redirects that survived

Old URLNew URLNote
/about-us301/about-us/Clean
/compare301/compare-vehicle/Clean
/inventory301/inventory/Clean
/testimonials301/testimonials/Clean
/car301/car-finder/Semantically lossy — was content page, now a tool

Categories of lost equity

CategoryOld URL pattern(s)~VolumeStatusEquity impact
Vehicle detail pages (legacy 1)/vdp/{id}/Used-{desc}-for-sale-in-Forest-VA-24551295All 404Listing equity, backlinks from classifieds, GBP attribution
Vehicle detail pages (legacy 2)/used-cars/{year-make-model-vin}616All 404VIN-keyed URLs — direct organic for shoppers searching specific cars
Vehicle detail pages (legacy 3)/vehicle/{year-make-model-trim-vin}294All 404Long-tail SEO landing pages
Programmatic SEO landing/chevy-silverado, /trucks-under-25000, /truck, /suv, /free-honda-accord5+All 404High-intent vertical pages targeting specific shopper queries
Financing & trade tools/creditapp, /loancalculator, /car-loan-calculator, /car-loan, /appraisal, /trade, /trade-in, /sell-my-car, /details-pre-approved9All 404Transactional intent — high-converting traffic
Blog & content/blog, /bdp/{id}/{topic}/{slug}3+All 404Topical authority signals, evergreen ranking pages
Legal & compliance/privacy-policy, /privacy, /terms-and-conditions3All 404Compliance gap — site has no legal pages now
People & trust/aboutus, /our-people, /meetourstaff, /reviews, /customer-reviews, /directions6All 404E-E-A-T signal loss, customer trust pages
Ad ecosystem files/ads.txt, /app-ads.txt2All 404IAB Authorized Sellers verification breaks — display ad attribution affected
Other utility/store, /protection-plans, /free-credit-score, /sendcomments, /locatorservice, /default, /error, /newandusedcars(.aspx)8All 404Internal nav targets, possibly external backlinks

Examples of dropped vehicle pages

i

Recovery is still possible — but only for URLs with surviving backlinks or sitemap-cached entries

For each historic URL with any backlink (check Ahrefs / Moz / Google Search Console legacy data) or that still appears in Google's index, set a 301 to the closest current equivalent. VIN-keyed /used-cars/ URLs map best to current /inventory/ if the vehicle is still in stock; otherwise to /inventory/ root. Blog URLs to /. Financing tool URLs to /apply-online/.

12 · Vendor migration · June 1, 2026

This is the single biggest risk in the next 30 days.

Days to vendor swap

Locking baseline today preserves the ability to diff post-migration. If the new vendor changes URL patterns and skips 301s, organic traffic to vehicle pages collapses overnight.

≈ 7
High-impact

What we need from the new vendor in writing — before June 1

  1. Will the public domain (www.dnxmotorsales.com) be served from the new platform, or do they expect a subdomain (e.g., inventory.)?
  2. What is the new URL pattern for vehicle detail pages?
  3. Will the new platform import the existing stock IDs (4685, 4716, 4927, etc.) so we can mechanically map old→new?
  4. Does the new platform emit Vehicle + Offer schema natively?
  5. Will they accept a 301 redirect map from us and apply it at their edge?
  6. Will they preserve the existing sitemap structure (or push a new sitemap before we lose the old one)?
Our side — pre-cutover checklist

Captured today (2026-05-25)

  • baseline-urls-2026-05-25.txt — 117 unique URLs, plain text, diff-ready
  • baseline-urls-with-lastmod-2026-05-25.tsv — same URLs with sitemap lastmod timestamps
  • baseline-sitemap-urls-2026-05-25.json — full structured snapshot (per-sitemap breakdown)
  • live-fold.png + live-full.png — visual baseline screenshots
  • Snapshot of HTML head: title, meta, schema graph, scripts
  • AI crawler probe results (all 4 = 403)
  • Security headers fingerprint

All stored in ~/Documents/Projects/dnxmotorsales-audit/.

13 · Baseline URL inventory

117 URLs. After June 1, every one of these is a potential 404.

Full list below. Junk URLs (WordPress installer leftovers) marked in red. Vehicle detail pages (96 total) follow the DealerCenter pattern and are most at risk.

96
Vehicle pages
/inventory/{make}/{model}/{stock-id}/
15
Content pages
About, contact, financing, service, team, etc.
6
Junk URLs
WP installer debris — delete pre-migration

Junk URLs (delete before migration)

Content pages (verify 301s after migration)

Vehicle detail URLs (sample — full 96 in baseline file)

14 · Post-migration 301 redirect plan

The diff script. Run on June 2.

Mechanical workflow for catching dropped URLs the moment the new vendor goes live.

Step-by-step

  1. Fetch new sitemap. Pull https://www.dnxmotorsales.com/sitemap_index.xml after the cutover and flatten to a fresh live-urls-{date}.txt.
  2. Diff against baseline. diff baseline-urls-2026-05-25.txt live-urls-{date}.txt — every line prefixed with < is a URL that disappeared.
  3. Test each dropped URL for status. Anything returning 200, 301, or 302 is fine. 404 or 410 is the bug.
  4. For each 404, find the new equivalent. For vehicle pages, match by stock ID (4685, 4927, etc.) on the new sitemap. For content pages, match by slug.
  5. Build the redirect map. CSV with old_url, new_url, type. Type is 301 for permanent, 410 only if the URL truly no longer maps to anything (sold inventory should still 301 to /inventory/, not 410).
  6. Apply. Either via the new vendor (preferred) or at Cloudflare (Bulk Redirects). Cloudflare can hold up to 100,000 redirects per Bulk Redirect List on the free plan.

Reference one-liner

# From dnxmotorsales-audit/ directory
# After Jun 1, re-run sitemap pull and diff:

curl -s https://www.dnxmotorsales.com/sitemap_index.xml \
  | grep -oP '(?<=<loc>)[^<]+' \
  | xargs -I{} curl -s {} \
  | grep -oP '(?<=<loc>)[^<]+' \
  | sort -u > live-urls-2026-06-02.txt

diff baseline-urls-2026-05-25.txt live-urls-2026-06-02.txt \
  | grep '^<' | sed 's/^< //' \
  | while read url; do
      code=$(curl -o /dev/null -s -w "%{http_code}" "$url")
      echo "$code  $url"
    done | sort | tee post-migration-status.txt
15 · Recommendations

Priority order. Do these in this sequence.

Every item that can be done today should be done today. June 1 is a hard deadline for anything migration-blocking.

P0Do today

Lock the migration plan with the new vendor

Get the six platform questions in §11 answered in writing. Confirm they will accept a 301 redirect map. If they will not, the dealership must build redirects at Cloudflare themselves.

P0Do today

Delete WordPress installer artifacts

Trash /hello-world/, /sample-page/, /home-2/. Noindex /category/uncategorized/ and /author/2236203/ via Yoast. These should not survive into the new sitemap baseline.

P1This week

Unblock AI crawlers at the Cloudflare edge

Add a Skip rule for verified GPTBot, ClaudeBot, PerplexityBot, Google-Extended user agents. Also add a Skip for /robots.txt, /sitemap*.xml, /llms.txt.

P1This week

Add an H1 + body copy block to the homepage

Even if it's a 300-word block beneath the hero, it gives Google and AI engines real text to read. Geo + service-line + financing positioning.

P1This week

Publish /llms.txt

If platform doesn't support custom files, host it via a Cloudflare worker. Template is in the agency runbook.

P2Pre-migration

Upgrade Organization schema → AutoDealer

Add openingHours, sameAs (Facebook, Instagram, TikTok, Yelp, two Maps URLs), areaServed (Forest, Lynchburg, Bedford, Roanoke), priceRange. Confirm the new platform will preserve this or rebuild equivalent.

P2Pre-migration

Consolidate analytics

Three GTM containers + two GA4 properties is measurement chaos. Decide canonical container, deprecate the rest. Lose AudioEye. Pick one chat widget.

P3After June 1

Run the diff and apply 301s

Procedure in §13. Aim to complete within 72 hours of cutover so Googlebot finds the redirects before re-crawling the dropped URLs as 404s.

P3After June 1

Add Vehicle schema to detail pages

If the new platform doesn't emit it natively, push for a custom field or template change. This is the single highest-value structured-data upgrade for an automotive dealer.

P4Ongoing

Fix alt text + heading order on all pages

Mechanical generation for vehicle imagery ({year} {make} {model}). Manual for UI. Remove AudioEye; do the actual accessibility work.