Urgent.News

What's breaking now, across thousands of outlets.

Tech

Why Your Booking Pages Don't Rank: Server-Side Rendering Services, Staff and Slots

A clinic spends money on booking software, then wonders why nobody finds the clinic online. The answer is usually that the only page describing what they offer is a single-page app that serves an empty <div id="root"> and renders the service list after JavaScript runs. Google can run JavaScript. What it often does not do is come back, render, and re-index — particularly for small sites with…

Clinics and businesses often invest in booking software, only to discover their online presence lacks the ranking it deserves. The culprit is frequently a single-page application that initially displays a blank div and only renders the service list after JavaScript execution. While Google can run JavaScript, it rarely revisits the page, crawls, and re-indexes it, especially for smaller sites with limited crawl budget.

Consequently, the indexed version of the page is the one contained within the original HTML response. If the service list isn't present in that initial response, it won't be indexed either.

To address this issue, the booking page should be segmented based on its purpose: service index, location and provider pages, availability, and the booking form. Each of these components has different rendering requirements. The service index page, which lists services, prices, durations, and providers, should rank well and be generated at build time, creating a separate page for each service.

Location and provider pages, featuring addresses, hours, staff bios, and area served, should also be static and have their own URLs. Availability, represented by a calendar and open slots, should be server-rendered for the initial screen but can be client-side for the picker. The booking form itself should be client-only, as search engines don't need to index it.

For a service page, the content that users typically search for must be present in the initial HTML. This includes the service name as an h1 tag, real text for price and duration (not hidden behind hover or modal), the provider and location, cancellation and rescheduling terms, and three to five frequently asked questions (FAQ). The FAQ section is crucial, as it answers the most common queries, aligning with the search engine's preferences.

Structured data using JSON-LD is beneficial, providing a structured format for service providers, area served, and offers (price, currency). A FAQPage markup matching the visible FAQ is particularly important, as it adheres to the search engine's desired format. Staff members should be marked up as a Person, and avoiding aggregate rating markup unless reviews are displayed on the page is advisable, as it may lead to a manual-action risk.

Pagination is preferable to infinite scroll, as it keeps the inventory crawlable. If there are 40 services, rendering them in an endless scrolling container is not recommended, as it hides the pages from search engines.

Availability pages and crawl budget should be managed carefully. URL structures like ?date=2026-10-12 create an effectively infinite URL space, making it difficult for search engines to determine which pages to crawl. Availability should be behind a parameter or client fetch, and the service page should canonicalize to itself. If shareable next available links are desired, generate a small number of useful ones, such as the next three open slots, rather than every possible date.

Monitoring is essential; two checks can catch most problems. Fetch the page with JavaScript disabled and inspect the HTML Google retrieved, comparing it to the visible content. Check the Coverage report in Search Console to identify discrepancies between submitted, indexed, and discovered pages. A significant gap between submitted and indexed pages, especially for a small site, usually indicates thin or unrendered content.

If the booking system is not owned, clinics typically purchase software and embed it, causing issues. The solution is to publish the service catalogue on your own domain as real HTML, generated from the booking system's data if available via API, allowing the booking flow to remain interactive.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Taking over someone else's PLC program: do these 4 things before you change a single line

You have just been handed a machine that runs — but nobody can explain it. The previous engineer left, the original documentation is gone, or the system was simply "commissioned in a hurry and never…

  • Capture all available information about the PLC program before making any changes.
  • Establish a version baseline by saving an unmodified program with a dated archive entry.

More from Sunday 11 October →