# One has no front door. The other broke the lock.

https://getclinads.com/market-research/heartland-vs-pacific-dental-groups

The two biggest dental groups in America. One supports 1,900+ practices, the other lists offices in 24 states. Neither is easy to find.

<p>The two biggest dental groups in America. Heartland Dental supports more than 1,900 practices across 39 states. Pacific Dental Services lists offices in 24 states through its patient brand, Smile Generation. A patient searching <strong>dentist near me that takes my insurance</strong> should find either one easily.</p>
<p>Neither is easy to find, for opposite reasons. Heartland’s website is 29 pages written for dentists who want to sell their practice, with no office a patient could book. Smile Generation’s office pages have the hours, the map and the insurers, and one stray character makes a machine throw the whole listing away.</p>
<figure class="lrn-fig"><img src="https://pub-9ade4d6cef5945cf8fd5d95404099ce3.r2.dev/market-research/heartland-vs-pacific-dental-groups/slide-01.webp" width="1080" height="1350" loading="lazy" decoding="async" alt="Search for dentist near me that takes my insurance: Heartland's site is written for dentists selling a practice, Smile Generation's listing is broken by a stray character" /><figcaption>One group has no front door. The other broke the lock.</figcaption></figure>

<h2>Each group answers a different half of the same five questions</h2>
<p>We scored the page a patient actually lands on, read before JavaScript runs.</p>
<div class="mr-score">
 <div class="mr-score-card mr-mid"><p class="mr-score-name">Heartland <small>heartland.com + practice sites</small></p><p class="mr-score-num">3<span>/5</span></p><ul><li><span class="mr-v" aria-label="present">✓</span>Where is it?</li><li><span class="mr-x" aria-label="missing">✕</span>Is it open now?</li><li><span class="mr-v" aria-label="present">✓</span>Does it take my insurance?</li><li><span class="mr-v" aria-label="present">✓</span>Can a machine read the listing?</li><li><span class="mr-x" aria-label="missing">✕</span>Can I find it from the brand at all?</li></ul></div>
 <div class="mr-score-card mr-mid"><p class="mr-score-name">Pacific Dental <small>smilegeneration.com</small></p><p class="mr-score-num">4<span>/5</span></p><ul><li><span class="mr-v" aria-label="present">✓</span>Where is it?</li><li><span class="mr-v" aria-label="present">✓</span>Is it open now?</li><li><span class="mr-v" aria-label="present">✓</span>Does it take my insurance?</li><li><span class="mr-x" aria-label="missing">✕</span>Can a machine read the listing?</li><li><span class="mr-v" aria-label="present">✓</span>Can I find it from the brand at all?</li></ul></div>
</div>
<p class="mr-method">Method: Heartland, 4 supported practice sites sampled. Pacific Dental, 10 office pages sampled across 4 states. Each fetched as a browser and as Googlebot.</p>

<h2>Heartland’s website is written for dentists, not patients</h2>
<p>It supports more practices than anyone in America, and its website is a pitch to the dentists who own them. There is no office finder, no booking and no list of the practices anywhere on the domain. This is the entire top menu:</p>
<div class="mr-code"><p class="mr-code-label">heartland.com · the whole top menu</p><pre><code>Selling Your Practice · Why Heartland · How It Works
Path to Long-Term Wealth · Valuation · Support Model
Continuing Education · About · Careers · Get in Touch</code></pre></div>
<p>Nothing a patient would ever search for.</p>
<div class="mr-stats mr-stats-2">
 <div><b>1,900+</b><span>practices it supports, by its own count, across 39 states</span></div>
 <div><b>29</b><span>pages in its sitemap, and not one of them names an office</span></div>
</div>
<figure class="lrn-fig"><img src="https://pub-9ade4d6cef5945cf8fd5d95404099ce3.r2.dev/market-research/heartland-vs-pacific-dental-groups/slide-03.webp" width="1080" height="1350" loading="lazy" decoding="async" alt="Heartland Dental's top menu is entirely about selling a practice, with no office finder or booking" /><figcaption>A website built for the dentists who own the practices.</figcaption></figure>

<h2>And yet each practice builds its own listing, properly</h2>
<p>Every Heartland practice site we sampled carries a clean listing that a machine accepts: the name, the street, the phone, the opening hours and the full list of treatments.</p>
<div class="mr-code"><p class="mr-code-label">Wexford Dental Arts, PA · page data</p><pre><code>"@type": "Dentist",
"streetAddress": "103 N Meadows Dr", "addressLocality": "Wexford",
"openingHours": ["Mo 09:00-18:00", "Tu,We,Th 08:00-16:30"],
"telephone": "(724) 934-3900"</code></pre></div>
<p><strong>And the catch:</strong> nothing ties the 1,900 together. Search the brand and no list exists, because every practice is an island with its own domain.</p>
<figure class="lrn-fig"><img src="https://pub-9ade4d6cef5945cf8fd5d95404099ce3.r2.dev/market-research/heartland-vs-pacific-dental-groups/slide-04.webp" width="1080" height="1350" loading="lazy" decoding="async" alt="A Heartland practice site carries a complete Dentist listing with address, hours and phone" /><figcaption>Each practice gets it right alone. Nothing connects them.</figcaption></figure>

<h2>Pacific Dental built the directory Heartland never did</h2>
<p>Its patient brand, Smile Generation, runs a real one: 24 states, then cities, then an office page with the hours, the map and the carriers it takes, by name.</p>
<ul class="mr-offices"><li>Aetna</li><li>Anthem Blue Cross</li><li>Cigna</li><li>Delta</li><li>Guardian</li><li>MetLife</li><li>United Health Care</li><li>UCCI</li></ul>
<div class="mr-stats mr-stats-2">
 <div><b>24</b><span>states in the directory, down to a page per office</span></div>
 <div><b>0</b><span>of those office pages appear in the sitemap: it lists 339 URLs, none of them an office</span></div>
</div>
<figure class="lrn-fig"><img src="https://pub-9ade4d6cef5945cf8fd5d95404099ce3.r2.dev/market-research/heartland-vs-pacific-dental-groups/slide-05.webp" width="1080" height="1350" loading="lazy" decoding="async" alt="A Smile Generation office page showing business hours and named insurance carriers" /><figcaption>The front door Heartland never built.</figcaption></figure>

<h2>Then one stray character throws the whole listing away</h2>
<p>Each office page carries the listing machines read: dentist, address, coordinates, opening hours. It ends with a bracket that should not be there, and a parser rejects the entire block. Everything inside it is discarded.</p>
<div class="mr-code"><p class="mr-code-label">The last line of every office listing we checked</p><pre><code>"openingHoursSpecification": [{ "opens": "8:00 AM", "closes": "3:00 PM"
} ])

Expecting ',' delimiter: line 45 column 647</code></pre></div>
<div class="mr-stats mr-stats-2">
 <div><b>10 / 10</b><span>offices we sampled carried the same broken bracket, across four states</span></div>
 <div><b>No robots.txt</b><span>pacificdentalservices.com answers that URL with an internal “No resource found” error</span></div>
</div>
<figure class="lrn-fig"><img src="https://pub-9ade4d6cef5945cf8fd5d95404099ce3.r2.dev/market-research/heartland-vs-pacific-dental-groups/slide-06.webp" width="1080" height="1350" loading="lazy" decoding="async" alt="The Smile Generation office listing ends with a stray bracket that makes a parser reject the whole block" /><figcaption>Written correctly, then shipped with a typo to every office.</figcaption></figure>

<h2>The scorecard: six checks to four, and the gap is the front door</h2>
<p>Nine checks, the same method, both groups.</p>
<div class="mr-table-wrap">
<table class="mr-table">
 <thead><tr><th scope="col">Check</th><th scope="col">Heartland</th><th scope="col">Pacific Dental</th></tr></thead>
 <tbody><tr><th scope="row"><b>A directory of every office</b><span>One place a patient can browse them all</span></th><td><span class="mr-x" aria-label="missing">✕</span></td><td><span class="mr-v" aria-label="present">✓</span></td></tr><tr><th scope="row"><b>Hours on the page a patient lands on</b><span>Printed, not only in the code</span></th><td><span class="mr-x" aria-label="missing">✕</span></td><td><span class="mr-v" aria-label="present">✓</span></td></tr><tr><th scope="row"><b>Insurance carriers named</b><span>Aetna, Cigna, MetLife and the rest</span></th><td><span class="mr-v" aria-label="present">✓</span></td><td><span class="mr-v" aria-label="present">✓</span></td></tr><tr><th scope="row"><b>Structured data a parser accepts</b><span>The listing machines actually read</span></th><td><span class="mr-v" aria-label="present">✓</span></td><td><span class="mr-x" aria-label="missing">✕</span></td></tr><tr><th scope="row"><b>Office pages listed in a sitemap</b><span>So a crawler knows they exist</span></th><td><span class="mr-v" aria-label="present">✓</span></td><td><span class="mr-x" aria-label="missing">✕</span></td></tr><tr><th scope="row"><b>Sitemap carries dates</b><span>So a crawler knows what changed</span></th><td><span class="mr-v" aria-label="present">✓</span></td><td><span class="mr-x" aria-label="missing">✕</span></td></tr><tr><th scope="row"><b>robots.txt on the main domain</b><span>Rules, not an error page</span></th><td><span class="mr-v" aria-label="present">✓</span></td><td><span class="mr-x" aria-label="missing">✕</span></td></tr><tr><th scope="row"><b>Dead URLs return an error</b><span>Not “200 OK” for a page that isn’t there</span></th><td><span class="mr-v" aria-label="present">✓</span></td><td><span class="mr-v" aria-label="present">✓</span></td></tr><tr><th scope="row"><b>A note written for AI engines</b><span>An llms.txt on the domain</span></th><td><span class="mr-x" aria-label="missing">✕</span></td><td><span class="mr-x" aria-label="missing">✕</span></td></tr></tbody>
</table>
</div>

<h2>Why this matters to a practice</h2>
<p>Neither group is failing for lack of money. One decided patients were not its audience; the other wrote the listing correctly and shipped a typo to every office.</p>
<p><strong>The bar for an independent practice is lower than it looks:</strong> one page that names the dentist, the street, the hours and the plans you take, written so a person and a machine can both read it.</p>
<ul>
 <li><strong>We search for your practice the way a patient would.</strong> Your city and your competitors, on Google and on the AI assistants.</li>
 <li><strong>You get the gaps in plain sentences.</strong> One list you can hand to whoever runs your website.</li>
 <li><strong>It takes a day.</strong> No commitment, no cost.</li>
</ul>

<details class="mr-pdf">
 <summary>View the full teardown slides (PDF, 8 pages)</summary>
 
  <p>Your browser can’t show the PDF here. <a href="https://pub-9ade4d6cef5945cf8fd5d95404099ce3.r2.dev/market-research/heartland-vs-pacific-dental-groups/heartland-vs-pacific-dental-groups.pdf">Download it instead</a>.</p>
 
</details>
<p class="mr-download"><a href="https://pub-9ade4d6cef5945cf8fd5d95404099ce3.r2.dev/market-research/heartland-vs-pacific-dental-groups/heartland-vs-pacific-dental-groups.pdf">Download the slides (PDF, 570 KB)</a></p>

<div class="post-cta">
<h3>Want a free AI visibility audit for your practice?</h3>
<p>Free, and it takes about a day. We check your city and your competitors the way a patient does, then send back every gap in plain sentences.</p>
<a href="/consult" class="btn btn-primary" data-ph-event="market_research_cta_click">Get my free audit</a>
</div>
