Digital Presence Audit

Riverside Dental — SEO · AEO · CRO Audit

Michael D. Spencer, DDS · Implant & full-arch practice · 1061 Riverside Ave, Jacksonville, FL 32204
riverside-dental.com Platform: WordPress + Yoast (Progressive Dental template) Audited Sept 9, 2026
Overall
65/100
Solid base, executional gaps
SEO
74/100
Good
AEO
58/100
Needs work
CRO
63/100
Needs work

Executive summary

Riverside Dental has a genuinely strong foundation for a local implant practice — a deep, well-siloed WordPress build (~75 URLs), transparent full-arch pricing, six credentialed doctors incl. an in-house CRNA anesthesia provider, a board-certified oral surgeon, and an ambitious 13-neighborhood geo-page network most competitors can't match. The problem is not the bones — it's that high-value implant traffic is leaking through executional and configuration gaps the practice can fix in weeks, not quarters.

⚠ The highest-impact issue — the practice is invisible to AI answer engines

In live testing, Riverside did not surface for "best dental implant dentist in Jacksonville" while competitors won on hard, citable claims. The site has the raw materials — a textbook 12-question implant FAQ, real doctor credentials, transparent full-arch pricing — but they aren't wired for extraction: the flagship FAQ carries zero FAQPage schema, the doctors aren't marked up as entities, the cost page states no numbers, and a Cloudflare challenge may be blocking AI crawlers (GPTBot/ClaudeBot/PerplexityBot) outright. On top of that, the site's review count contradicts itself — the homepage widget animates to "800+ 5-Star Reviews," the schema declares just 45, and Google shows ~464. One schema pass, one access check, and one consistency pass would move Riverside from invisible to citable.

Three themes tie all three audits together:
  • Assets exist but aren't wired up. A textbook 12-question implant FAQ carries zero FAQPage schema; six real doctor credentials live as prose, not entities; the review count is stated three different ways (widget "800+", schema "45", Google "~464"). The raw materials are strong — the connections and consistency are missing.
  • The site hides its own differentiators. "One price, everything included," lifetime warranty, in-house sedation, and real full-arch pricing ($29,800–$39,600) are stranded on deep cost pages while the homepage leads with a generic "Love Your Smile." Buyers and AI engines never see what makes this practice citable.
  • Configuration hygiene is dragging a good build down. Cost-page cannibalization, a leaked seo- URL slug, broken/templated geo H1s, inconsistent hours, two competing phone numbers, and a possible Cloudflare block on AI crawlers.

Top priority quick wins do first

Cross-cutting, high-impact, mostly template-config or copy work. These move all three scores at once.

PRIORITY 1

Add FAQPage + Physician schema

The 12-Q implant FAQ is already in perfect extractable format but has no FAQPage markup; the six doctors have no Physician entities. The stack already emits FAQ schema elsewhere — this is config, not content. Single biggest AEO win.

AEO + SEO · effort: medium
PRIORITY 2

Verify AI crawlers can reach the site

Non-JS requests hit a Cloudflare "Attention Required" challenge. GPTBot / ClaudeBot / PerplexityBot / Google-Extended may be silently blocked — excluding Riverside from ChatGPT, Perplexity & Claude answers. Allowlist reputable AI agents.

AEO · effort: low
PRIORITY 3

Rewrite the hero for implant intent

Replace "Love Your Smile" with a who/why headline — e.g. "Replace Missing Teeth in Jacksonville — One All-Inclusive Price, In-House Sedation, Lifetime Warranty" — with the review rating + one strong CTA ("See If You Qualify") beside it.

CRO + AEO · effort: medium
PRIORITY 4

Publish real numbers & monthly framing

The cost page argues against comparing on price and states no figure — so AI engines quote competitors instead. Add honest ranges + "full-arch financing as low as $X/mo," the number buyers actually anchor on.

AEO + CRO · effort: medium
PRIORITY 5

Add a sticky mobile click-to-call bar

No persistent tap-to-call exists on mobile — the top mobile conversion action. Pin it to the viewport bottom; route implant pages to the Implant Advisor line, general pages to the main line.

CRO · effort: low
PRIORITY 6

Reconcile the review count everywhere

The homepage counter animates to "800+ 5-Star Reviews," but the schema declares only reviewCount 45 and Google shows ~464. Sync all three to the live Google number and surface real star ratings next to CTAs and the booking form.

CRO + AEO · effort: low

SEO — 74/100 Good foundation

Server-rendered WordPress (crawlable, not a JS SPA), strong keyword-targeted titles, a logical URL silo, transparent pricing, and an aggressive neighborhood geo-strategy. Held back by executional hygiene and content gaps.

DimensionScoreVerdict
On-page SEO78Strong keyword targeting; templated-H1 & slug hygiene issues
Technical SEO72Clean crawl setup; crawl-delay + soft-404 / templating risk; CWV unverified
Structured data65Yoast base present; Review/AggregateRating consistency + verified Physician gaps
Local SEO74Excellent geo-page strategy; hours mismatch, no embedded map
Content depth / E-E-A-T80Robust implant silo & pricing; thin geo pages, no medical reviewer
Competitive / keyword gaps70Missing exact-match All-on-4 / All-on-X / same-day-teeth pages

Cost-page keyword cannibalization High

Three overlapping "cost of dental implants" URLs compete — /seo-cost-of-dental-implants/, /cost-of-dental-implants-jacksonville-fl/, plus 13 per-neighborhood cost pages — forcing Google to choose among near-duplicates.

Fix: Designate one canonical Jacksonville cost page; canonicalize/consolidate the rest; differentiate geo pages with genuinely local content.

Internal seo- slug leaked to a public URL High

/dental-care-dental-implants/seo-cost-of-dental-implants/ exposes an internal workflow tag to users and Google.

Fix: 301-redirect to a clean slug and consolidate with the real cost page. Low effort.

Broken / templated geo H1s High

The San Marco page title is "Cost Of Dental Implants | San Marco, FL" but its H1 is the grammatically broken, keyword-stuffed "Special Dental Implant Offer By San Marco, FL" (same on Arlington + others).

Fix: Rewrite H1s to natural language ("Dental Implant Cost in San Marco, Jacksonville FL") across the 13 geo pages.

No dedicated All-on-4 / All-on-X page High

Competitors own exact-match /all-on-4-dental-implants-jacksonville-fl/ URLs; Riverside routes this highest-volume branded procedure term through a generic "full-mouth" page.

Fix: Build dedicated All-on-4 and All-on-X Jacksonville pages; add "same-day teeth / teeth in a day" and "implant-supported dentures" pages.

Hours inconsistency (NAP integrity) High

Homepage says "Mon–Fri 8:00AM–5:00PM"; contact page says "Mon–Thu 8–5, Fri 9–3." Confuses users and can mismatch Google Business Profile.

Fix: Single source of truth; align site + GBP + schema.

Thin geo pages risk "doorway page" treatment Medium

Neighborhood pages are ~2,000 words of templated implant copy with the city name swapped in — no local landmarks, drive times, or community context.

Fix: Inject genuine local detail per neighborhood (landmarks, drive time, area-specific FAQs, local patient stories).

Meta descriptions & image alt text likely missing/generic Medium

Fix: Audit all ~75 pages in Yoast; write unique 150–160-char descriptions and descriptive geo/service alt text.

Crawl-delay + soft-404 templating + unverified CWV Low

Crawl-delay: 10 throttles Bing on a 75-page site; a non-canonical path (/dental-implants/) served default "Arlington" content (soft-404 risk); video-heavy template likely has a mediocre mobile LCP.

Fix: Remove crawl-delay; enforce hard 404/301; run PageSpeed Insights, lazy-load video, compress hero imagery.

AEO — 58/100 One pass from citable

Answer Engine Optimization = getting cited by AI answer engines (Google AI Overviews, ChatGPT, Perplexity, Claude). Riverside has strong raw materials but isn't wired for extraction — and in live testing did not surface for "best dental implant dentist in Jacksonville," while competitors won on hard, citable claims ("22,000 implants placed," "$29,800–$39,600").

DimensionScoreVerdict
Answer-ready content7.5/10Excellent FAQ format; undermined by missing specifics/numbers
Structured data for AEO5/10Good base Dentist schema, but FAQPage/Physician/Service missing
Entity & authority (E-E-A-T)5.5/10Real credentials in prose, not marked up; no reviewer bylines/citations
Patient-question coverage6.5/10Broad topics, but no prices & thin comparisons
Extractability / technical7/10Raw-HTML content + llms.txt present; Cloudflare AI-crawler risk
Citation-worthiness4/10Generic template copy; no unique data or named numeric expertise

Flagship FAQ page has zero FAQPage schema High

The 12-question implant FAQ is already in ideal extractable format (question heading + 30–75-word direct answer) but carries no FAQPage/Question/acceptedAnswer markup. The SEO cost page does emit FAQ schema — so the capability exists and was just never applied where it matters.

Fix: Wrap every FAQ block in FAQPage schema. Single highest-ROI AEO win.

Cloudflare may be blocking AI crawlers High

Direct non-JS requests return a Cloudflare "Attention Required" interstitial. Googlebot renders JS (AI Overviews likely OK), but non-rendering AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Bytespider) can be challenged and fail — silently excluding Riverside from ChatGPT/Perplexity/Claude answers.

Fix: Verify crawler logs / user-agent handling; explicitly allowlist reputable AI user-agents (or exempt them from Bot Fight Mode). Everything else is moot if they can't fetch.

No citable numbers anywhere High

The cost page argues against comparing on price and states no figure. Competitors that won the "cost" query gave AI concrete numbers. The copy is also generic Progressive Dental boilerplate shared across many practices — AI has no reason to cite it over a differentiated source.

Fix: Publish honest ranges + quantify real expertise (implants placed, years serving Jacksonville, in-house lab turnaround, on-staff CRNA anesthesia) as citable facts.

No Physician / Person entities for the doctors High

Six doctors with real credentials (Spencer DDS/Emory; Tolley DDS/ABOMS diplomate; Cross/LECOM) appear only as prose — doctor pages return Person: 0, Physician: 0.

Fix: Add Physician/Person schema with hasCredential, alumniOf, memberOf, and sameAs to external profiles (state board, ADA, Healthgrades, LinkedIn); link to the practice entity.

No medical-reviewer attribution or citations Medium

Clinical (YMYL) pages have no "Medically reviewed by Dr. X, DDS — [date]" byline and cite no authoritative sources (ADA, AAID, AAOMS, PubMed) for claims like the 95% success rate.

Fix: Add reviewer bylines + authoritative citations on all clinical pages.

Missing comparison & candidacy content Medium

No structured "implants vs. dentures" or "full-arch vs. individual" comparison tables (AI loves parseable tables) and no standalone "Am I a candidate?" checklist page.

Fix: Build comparison tables + a candidacy checklist page; add MedicalProcedure/Service schema to service pages.

Schema data-quality bugs Low

priceRange: "Procedure dependant" (useless to engines); an empty "sameAs":[""]; a lone hard-coded 5-star self-authored Review dated 2023 (spam-flag risk); rating inconsistency (schema 4.5/45 vs. TrustAnalytica 4.8 vs. ~464 on Google). The auto-generated llms.txt dumps popups/stats instead of a curated answer-page map.

Fix: Clean the schema graph, sync AggregateRating to live Google data, drop the hard-coded review, and hand-curate llms.txt.

CRO — 58/100 Leaking high-value cases

The funnel architecture is sound — a candidate quiz, a dedicated Implant Advisor line, genuinely strong financing detail, in-house sedation, and a lifetime-warranty bundle. But conversion is throttled by a handful of high-severity leaks on a $20k–$50k case value.

DimensionScoreVerdict
Conversion pathways & CTAs6.5/10Multiple CTAs + sticky header, but verb-vague & two-number confusion
Forms5.5/10Form-only (no real-time scheduling); duplicate forms; 7-field first form
Trust & social proof6/10Strong assets (video testimonials, credentials); review count inconsistent, no star ratings near CTAs
Value proposition & messaging6/10"Love Your Smile" generic; differentiators buried on cost page
Financing & cost transparency7.5/10Strongest area — 4 named lenders, APRs, "everything included" bundle
Mobile / chat / lead capture5/10Sticky header, but no mobile click-to-call, no chat, no exit-intent

Review count is inconsistent + no star ratings at decision points Medium

The homepage stat counters work (they animate to "44+ Years," "40,000+ Patients," "800+ 5-Star Reviews"), but the numbers don't agree with the rest of the site: the schema declares only reviewCount 45 and Google shows ~464 actual reviews. And no live star rating appears beside any CTA or the booking form — the moment a $30k buyer needs reassurance. Strong proof assets (5 named video testimonials, before/after pairs, ABOMS board cert, in-house CRNA anesthesia) sit far from the conversion points.

Fix: Sync the widget, schema, and Google review numbers to one true figure; surface a live star rating adjacent to CTAs and the form; move a testimonial + the lifetime-warranty badge next to the booking form.

No persistent mobile click-to-call + no real-time scheduling High

Every path is a "request" form, not a real-time calendar — high-intent buyers who want to lock a 9pm slot can't. And there's no sticky tap-to-call bar pinned to the mobile viewport (the top mobile conversion action).

Fix: Add a sticky mobile call bar (context-routed to the right number) and real-time online scheduling alongside the form.

Generic hero doesn't signal "implant destination" High

"Love Your Smile / Quality Care Delivered with Compassion" is generic family-dentistry messaging. It never says who it's for (people missing teeth / full-arch) or why choose them. The powerful "one price, everything included," lifetime warranty, and in-house CRNA sedation are stranded on the cost page.

Fix: Rewrite the hero for implant intent; pull the three differentiators up as tiles near a single strong CTA ("See If You Qualify").

Vague CTAs, duplicate forms & heavy first form High

Five CTA phrasings dilute the primary action ("Get Started," "Book Now," "Schedule," "Learn More"). The /contact page runs two competing forms; the primary is 7 fields — too much for cold implant traffic (the winning pattern is a 3-field capture, then qualify on callback).

Fix: Standardize to one primary verb; consolidate to one form; cut the primary form to 3 fields (Name, Phone, Interest); promote the existing candidate quiz site-wide.

Two-phone-number confusion Medium

Main (904) 355-5531 and Implant Advisor (904) 561-5999 both appear, but the high-value advisor line — the single best asset for $20k–$50k cases — only shows in the footer/deep pages, so a cold homepage visitor sees only the general line.

Fix: Context-swap numbers (implant pages → advisor line, labeled "Talk to an Implant Advisor") and keep one primary NAP number in schema/citations (use DNI for tracking).

Financing strong but under-surfaced; no $/mo framing Medium

The financing page is genuinely good (CareCredit, Proceed Finance 3.99% APR, Sunbit 0%, Happen Finance) — but it's a nav click away, not on the homepage, and never shows "as low as $X/month," the number full-arch shoppers actually anchor on.

Fix: Surface "full-arch financing as low as $X/mo" on the homepage + implant hub, linked to the financing page.

No live chat, exit-intent, or lead magnet Medium

Implant buyers comparison-shop 3–5 practices; there's no "ask a question now" interceptor, no exit-intent offer, and no lead-capture offer (free consult + CBCT, downloadable pricing guide) to convert not-yet-ready browsers.

Fix: Add live chat / fast-quote interceptor + an exit-intent lead magnet; position review stars, before/after videos, and the lifetime warranty adjacent to the booking form.

Verify conversion tracking Low

Form-only conversion with no confirmed tracking scaffolding — the practice may not know which path drives cases.

Fix: Confirm GA4 + call tracking fire distinct events for form submits, quiz completions, and each phone number.

Prioritized roadmap

Sequenced by impact-to-effort. Phase 1 is mostly template-config and copy — outsized lift for the hours involved.

Phase 1 — This week (config & copy, high ROI)
  • Add FAQPage schema to the 12-Q implant FAQ + every FAQ block AEO·SEO
  • Reconcile the review count (widget "800+" vs schema "45" vs Google "~464") to one true figure; add star ratings near CTAs CRO·AEO
  • Verify & allowlist AI crawlers through Cloudflare AEO
  • Fix hours mismatch (site ↔ contact ↔ GBP); pick one primary phone number for NAP/schema SEO·CRO
  • 301 the leaked seo- slug; add a sticky mobile click-to-call bar SEO·CRO
Phase 2 — Weeks 2–4 (messaging, schema, forms)
  • Rewrite the hero for implant intent; surface differentiators + review stars + one CTA
  • Add Physician/Person schema for all 6 doctors + medical-reviewer bylines & citations
  • Publish honest cost ranges + "financing as low as $X/mo" on homepage & implant hub
  • Consolidate cost-page cannibalization to one canonical Jacksonville page
  • Cut primary form to 3 fields, kill the duplicate form, promote the candidate quiz site-wide
  • Add real-time online scheduling alongside the request form
Phase 3 — Weeks 4–8 (content & authority moat)
  • Build exact-match All-on-4 / All-on-X / same-day-teeth Jacksonville pages
  • Rewrite the 13 geo pages with genuine local content (kill doorway-page risk)
  • Add comparison tables (implants vs dentures, full-arch vs individual) + candidacy checklist
  • Add MedicalProcedure/Service schema; embed GBP map on contact; write meta descriptions + alt text
  • Add live chat + exit-intent lead magnet; run PageSpeed Insights and fix mobile CWV
  • Quantify citable expertise (implants placed, years, in-house lab & CRNA anesthesia)

Scope note: some schema/canonical/meta specifics could not be retrieved directly (raw-HTML proxy returned a Cloudflare challenge / 401) and were inferred from the served HTML + Yoast footprint — validate in Google's Rich Results Test and a live view-source pass. Core Web Vitals should be confirmed via PageSpeed Insights. Review count (~464, ~4.8★) sourced from third-party aggregators; confirm against live Google Business Profile.