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.
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.
seo- URL slug, broken/templated geo H1s, inconsistent hours, two competing phone numbers, and a possible Cloudflare block on AI crawlers.Cross-cutting, high-impact, mostly template-config or copy work. These move all three scores at once.
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.
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: lowReplace "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: mediumThe 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: mediumNo 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: lowThe 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.
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.
| Dimension | Score | Verdict |
|---|---|---|
| On-page SEO | 78 | Strong keyword targeting; templated-H1 & slug hygiene issues |
| Technical SEO | 72 | Clean crawl setup; crawl-delay + soft-404 / templating risk; CWV unverified |
| Structured data | 65 | Yoast base present; Review/AggregateRating consistency + verified Physician gaps |
| Local SEO | 74 | Excellent geo-page strategy; hours mismatch, no embedded map |
| Content depth / E-E-A-T | 80 | Robust implant silo & pricing; thin geo pages, no medical reviewer |
| Competitive / keyword gaps | 70 | Missing exact-match All-on-4 / All-on-X / same-day-teeth pages |
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.
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.
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.
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.
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.
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).
Fix: Audit all ~75 pages in Yoast; write unique 150–160-char descriptions and descriptive geo/service alt text.
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.
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").
| Dimension | Score | Verdict |
|---|---|---|
| Answer-ready content | 7.5/10 | Excellent FAQ format; undermined by missing specifics/numbers |
| Structured data for AEO | 5/10 | Good base Dentist schema, but FAQPage/Physician/Service missing |
| Entity & authority (E-E-A-T) | 5.5/10 | Real credentials in prose, not marked up; no reviewer bylines/citations |
| Patient-question coverage | 6.5/10 | Broad topics, but no prices & thin comparisons |
| Extractability / technical | 7/10 | Raw-HTML content + llms.txt present; Cloudflare AI-crawler risk |
| Citation-worthiness | 4/10 | Generic template copy; no unique data or named numeric expertise |
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.
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.
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.
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.
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.
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.
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.
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.
| Dimension | Score | Verdict |
|---|---|---|
| Conversion pathways & CTAs | 6.5/10 | Multiple CTAs + sticky header, but verb-vague & two-number confusion |
| Forms | 5.5/10 | Form-only (no real-time scheduling); duplicate forms; 7-field first form |
| Trust & social proof | 6/10 | Strong assets (video testimonials, credentials); review count inconsistent, no star ratings near CTAs |
| Value proposition & messaging | 6/10 | "Love Your Smile" generic; differentiators buried on cost page |
| Financing & cost transparency | 7.5/10 | Strongest area — 4 named lenders, APRs, "everything included" bundle |
| Mobile / chat / lead capture | 5/10 | Sticky header, but no mobile click-to-call, no chat, no exit-intent |
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.
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.
"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").
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.
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).
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.
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.
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.
Sequenced by impact-to-effort. Phase 1 is mostly template-config and copy — outsized lift for the hours involved.
seo- slug; add a sticky mobile click-to-call bar SEO·CROScope 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.