Post-Migration Audit · Verified 2026-06-11

The vendor swap landed. The new site runs on Overfuel — and it is a generational leap.

The DealerCenter/WordPress site flagged in the May baseline is gone. dnxmotorsales.com now serves a server-rendered Next.js build on the Overfuel AI-native dealer platform. Nearly every Critical from the prior audit is resolved. What remains is a short, fixable list: a poor real-user CLS (0.43), three categories of old URLs returning 404 instead of 301, and 26 near-town pages that are 93% identical.

Vehicles in stock
112107 in inventory sitemap
Platform
OverfuelNext.js · SSR
AI Crawlers
Allowedllms.txt + inventory.md + ClaudeBot
Field CLS (CrUX p75)
0.43Poor — needs <0.10

Prior audit (2026-05-25, DealerCenter): 29/100 · Today: 85/100

85
Overall Health
Strong — finish 4 items
Technical SEO
88
Content / on-page
78
Structured data
90
AI search readiness
95
Performance / CWV
70
Accessibility
92
Images
95

Executive summary

The June vendor migration the May audit warned about has happened, and it went the right direction. dnxmotorsales.com is now an Overfuel-built, Next.js server-rendered site with strong technical SEO, rich structured data, and best-in-class AI-search hygiene. Health score moved from 29 → 85.

Top 4 issues remaining

  • Critical — Field CLS 0.43 (poor). Real Chrome users (CrUX p75) experience heavy layout shift. Lab CLS is 0.00, so the shift comes from late-loading content (hero image / web font / inventory cards / cookie or finance widget) that reflows after first paint. LCP (1.72s) and INP (53ms) are both Good.
  • Critical — 301 gaps from the migration. Some legacy URLs redirect correctly (/creditapp → /apply-online 308, /blog → /, /inventory/used-cars → /cars), but three categories return 404: /aboutus, /customer-reviews, /chevy-silverado, and the old DealerCenter /bdp/* blog & vehicle detail pages. These were live URLs with equity in the May baseline.
  • High — 26 near-town pages are 93% duplicate. The programmatic /used-car-dealership-near-{town}-va pages share ~93.4% identical body content; only the town name in title/H1/intro changes. At 26-page scale this is a doorway-page / thin-content risk under Google's policies.
  • Medium — AggregateRating without on-page Review markup. The homepage exposes two AggregateRating blocks (5.0/16 and 4.5/660) but no individual Review items are marked up, and the two ratings conflict. Self-serving aggregate ratings without visible, marked-up reviews may be ignored or flagged by Google.

Top quick wins

  • Add 301s for the four legacy paths above (one rule each) — recovers lingering link/brand equity.
  • Reserve hero image dimensions / preload the LCP image and font to kill the field CLS.
  • Differentiate the near-town pages: per-town intro, distance/drive-time, local landmarks, town-specific inventory or testimonials.
  • Reconcile the two AggregateRating values and add Review item markup on /testimonials.

Before / after — May (DealerCenter) → June (Overfuel)

SignalMay 2026 (DealerCenter/WP)June 2026 (Overfuel/Next.js)
Overall score29 / 10085 / 100
PlatformWordPress 6.6.4 + DealerCenter (version exposed, installer debris indexable)Next.js SSR on Overfuel · clean
Homepage H1MissingPresent
Image alt text21 / 24 missing27 / 27 present
AI crawlers0/4 — all 403, no llms.txtAllowed + llms.txt + inventory.md + ClaudeBot rule
VDP schemaBasicVehicle + Offer (price/VIN/mileage/InStock) + FAQ + Engine
Legacy URL 301s~88% dropped, no redirectsPartial — many 301, some categories still 404
Field CLSn/a0.43 (poor)

Platform architecture

Detected stack: Overfuel dealer platform, x-powered-by: Next.js, server-rendered HTML (253 KB on the homepage — content is in the markup, not JS-injected). Assets served from static.overfuel.com. Edge sets Cache-Control: public, s-maxage=10, stale-while-revalidate=59 and a finance cookie carrying a credit-tier pre-fill. Apex dnxmotorsales.comwww via 308. This is a purpose-built, AI-search-aware automotive platform — the opposite of the prior DealerCenter setup.

Technical SEO — 88

  • robots.txt: Allow: / plus explicit allows for /llms.txt, /inventory.md, /inventory/, /vehicles/; Disallow: /*highlights[]= (faceted-param control); per-agent crawl-delay for ClaudeBot and barkrowler; sitemap declared. Clean and intentional.
  • Sitemap: valid sitemapindex → 3 children: latest-inventory (5), inventory (107), page (47). lastmod timestamps fresh (2026-06-11).
  • Canonical / meta: self-referencing canonical on www, correct OG tags (title, description, type, url, webp image), title and meta description well-formed and unique per template.
  • Security headers: HSTS (max-age 31536000; includeSubDomains), CSP frame-ancestors, X-Frame-Options: sameorigin, X-Content-Type-Options: nosniff. Solid.
  • 404 handling: unknown URLs return a true 404. Good.

301 redirect gaps — the one carryover Critical

The May audit's central risk was loss of legacy URL equity. The new platform handles much of it, but spot-checks against the locked May baseline show gaps:

Legacy URLCurrent responseVerdict
/creditapp308 → /apply-onlineOK
/car-loan-calculator200 (kept)OK
/blog307 → /Works, but use 301 not 307
/inventory/used-cars307 → /carsWorks, but use 301 not 307
/aboutus404Add 301 → /about-us
/customer-reviews404Add 301 → /testimonials
/chevy-silverado404301 → /inventory?make=Chevrolet
/bdp/* (old blog & VDP)404Bulk 301 to nearest equivalent or /

Note: 307 is a temporary redirect. For permanent moves use 301/308 so Google consolidates signals to the target. Full legacy inventory is in baseline-urls-2026-05-25.txt / dropped-urls-need-301-2026-05-25.txt.

Content & on-page — 78

Homepage: real H1 ("Shop used cars in Forest and Altavista, VA"), descriptive copy, search + clear CTAs (Shop inventory, Value your trade, Get approved). VDPs: strong — unique title with year/make/model/VIN, H1, full spec content, and a 39-item FAQ block per vehicle.

High: 26 near-town pages are 93% duplicate

The programmatic /used-car-dealership-near-{town}-va set (Lynchburg, Bedford, Roanoke, Amherst, … 26 towns) measures 93.4% body similarity between samples. Title, H1, and the opening line swap the town name; the remaining ~3,600 words are shared boilerplate. Unique title/H1 keeps them out of "exact-duplicate" territory, but at this scale Google can treat them as doorway/thin pages. Differentiate each: per-town intro, drive-time/distance from that town to each lot, local landmarks, and town-relevant inventory or reviews — or consolidate to one strong "service area" page plus a few high-volume towns.

Structured data — 90

Among the strongest areas. Homepage @graph: AutoDealer, Organization, ContactPoint, two PostalAddress + GeoCoordinates (both lots), six OpeningHoursSpecification, AggregateRating. VDPs add Vehicle with Offer (price, priceCurrency, InStock, UsedCondition, VIN, mileage), Brand, EngineSpecification, ItemPage, and a FAQPage.

  • Medium: Homepage carries two conflicting AggregateRating blocks — 5.0 / 16 and 4.5 / 660 — with no individual Review items marked up. Reconcile to one source of truth and add Review markup on /testimonials (where 2 AggregateRating blocks exist but zero Review items).
  • Note: Per Google's May-2026 update, FAQPage rich results are deprecated for commercial sites. The per-VDP FAQ is still valuable as AI-citable content and on-page UX — keep it, but don't expect FAQ rich snippets.

Performance / Core Web Vitals — 70

Field data (CrUX, p75 real Chrome users):

MetricField (real users)Verdict
LCP1,721 msGood (<2.5s)
INP53 msGood (<200ms)
CLS0.43Poor (need <0.10)

The CLS is the problem. Lab CLS is 0.00 but real users see 0.43 — meaning something reflows after first paint that a fast test machine doesn't catch: the hero image rendering without reserved dimensions, a late web font (FOUT), inventory cards hydrating, or the finance/cookie widget injecting. Fix: set explicit width/height (or aspect-ratio) on the hero and all above-the-fold media, preload the LCP image + primary font with font-display: optional/swap, and reserve space for any injected widget. Mobile Lighthouse Best-Practices also scored 73 (6 failed audits) — worth a pass alongside the CLS work.

Accessibility — 92

Mobile Lighthouse: Accessibility 92, SEO 100, Best Practices 73, Agentic Browsing 67. Accessibility is good; remaining items are typically contrast and tap-target spacing. SEO is a perfect 100.

Local & NAP — consistent

Two locations, consistent in schema:

  • DNX Motors Altavista — 1101 Burnbridge Road, Altavista, VA 24517
  • DNX Motors Forest — 1163 Wards Road, Forest, VA 24551
  • Phone: (434) 616-2229; dedicated /location-altavista + /location-forest + /directions pages; 26 surrounding-town pages target the service radius.

Off-site verification (GBP listings, NAP across Bing/Apple/aggregators, review velocity) was not crawlable in this pass — recommend a GBP audit for both lots and a citation-consistency check as a follow-up.

Recommendations — do in this order

  1. [Critical] Fix field CLS 0.43. Reserve hero/above-fold media dimensions, preload LCP image + font, reserve space for injected widgets. Re-measure in CrUX after 28 days.
  2. [Critical] Close the 301 gaps. Add permanent redirects: /aboutus → /about-us, /customer-reviews → /testimonials, /chevy-silverado → /inventory?make=Chevrolet, and bulk-map old /bdp/* URLs. Convert the /blog and /inventory/used-cars 307s to 301/308.
  3. [High] De-duplicate the 26 near-town pages. Add per-town content (drive time, landmarks, town-specific inventory/reviews) or consolidate to a service-area hub + top towns.
  4. [Medium] Reconcile AggregateRating + add Review markup. One rating source of truth; mark up visible reviews on /testimonials.
  5. [Medium] Best-Practices pass. Clear the 6 failed mobile Lighthouse Best-Practices audits (console errors, third-party cookies, image aspect ratios).
  6. [Low] Follow-up GBP / citation audit. Verify both lots' Google Business Profiles, NAP consistency across directories, and review velocity.