← Back to Blog

On HubSpot CMS? Here Is What to Check Yourself Before You Pay Anyone

On HubSpot CMS? Here Is What to Check Yourself Before You Pay Anyone

If your site runs on HubSpot's website product, you are on a solid platform. It is fast, it sits behind a global CDN, it compresses and reshapes your images for you, and it ships a genuinely useful SEO panel. HubSpot has renamed the product a few times. You may know it as CMS Hub or the newer name, Content Hub. Same idea.

Here is the catch that trips up a lot of owner-operators. Some of the things you most care about are not automatic. The platform gives you the controls, but it does not flip every switch for you. The single biggest one: the structured data that makes Google show your hours, your menu link, and your price range is not added for you. Someone has to build it.

This is a plain-English checklist. You do not need to be technical to run most of it. Where a developer is genuinely required, I say so, so you know what is a five-minute fix and what is a real project.

First, confirm your site is even on your own domain

Before anything else, look at the address bar on your live pages.

Every HubSpot account ships with a default system domain that contains hs-sites in it. Content hosted on those system domains is set to no-index in robots.txt. That means search engines are told not to rank it, on purpose. You can publish a beautiful page and then wonder why it never shows up in Google.

What to check: look at the actual URL of your live pages. If you see hs-sites in the domain, that page will not rank. In your settings, under Domains and URLs, you can see which domain is set as primary.

What to fix: connect and verify your real custom domain and set it as the primary one, so your live pages serve from your own name and not the system subdomain. Connecting a custom domain requires at least the paid Starter plan, not the free tier. If your pages are on hs-sites, this is the first thing to handle. Nothing else on this list matters if Google is told to ignore the page.

The number one miss: no Restaurant or LocalBusiness schema

Structured data, also called schema markup, is hidden code that tells Google exactly what your business is. Name, address, phone, hours, menu link, cuisine, price range. When it is present and Google trusts it, you become eligible for the richer listings, the ones that show hours and a menu link right in search.

Here is what surprises people. HubSpot does not add this for a local business on its own. The only schema it adds automatically is BlogPosting, and only on blog posts, and only on blogs created after August 4, 2022 with the Structured Data setting turned on. For the business itself, the Restaurant or LocalBusiness markup that powers the good listings, nobody is adding that unless someone builds it by hand.

What to check: run your live homepage and your main pages through Google's Rich Results Test and the Schema Markup Validator. Both are free. If neither comes back with a Restaurant or LocalBusiness type, you do not have it. You can also view the page source and search the text for application/ld+json to see what, if anything, is there.

What to fix: this one usually needs a developer. They add Restaurant or LocalBusiness JSON-LD (name, address, telephone, opening hours, menu URL, cuisine, price range, an image) into your page template or a custom module, using HubSpot's require_head tag so it lands in the page head where Google reads it. Two rules to hand them. First, the markup has to match what a visitor actually sees on the page. Do not claim hours in the code that differ from the hours on screen. Second, even valid schema is never a guarantee of rich results. Google decides what to show. Valid markup makes you eligible. It does not force the listing.

Watch for double schema on the blog

This is a subtle one that only shows up if you have a blog and a developer touched it.

If a developer hand-adds Article or BlogPosting schema to your blog template, and the built-in blog Structured Data setting is also on, you can end up with two competing blocks of the same type on one post. HubSpot warns this duplicate markup can cause problems in search.

What to check: on a blog post, view the source and count how many ld+json blocks of the same type appear. Run the Schema Markup Validator and look for duplicate page-type nodes or warnings.

What to fix: pick one source, not both. Either rely on HubSpot's built-in toggle, or rely on the custom schema a developer added. If you are injecting your own, turn the blog Structured Data toggle off, which is what HubSpot itself recommends.

Open the SEO panel and clear the red dots

HubSpot has a built-in recommendations panel, sometimes called the Optimize tab. It is the gauge icon in the content editor. It checks your pages for the basics and flags what is missing. Red circles are open issues. Green checkmarks are done.

The thing is, it tells you what is wrong. It does not fix it for you. Plenty of owners never open it.

What it checks: page titles, meta descriptions, image alt text, thin content (it flags pages under about 300 words), broken links, mobile and tap-target sizing, HTTPS, and more. It groups items into Accessibility, Crawling and Indexing, On-Page SEO, Mobile, Performance, Security, and User Experience.

What to fix: open the panel on each page and each blog post and work top down, since HubSpot orders items by impact. Write a unique title and meta description for every page. Add alt text to every image. Expand pages that are too thin. Repair broken links. Most of this you can do yourself without a developer. Anything flagged as developer-level may need help, but the bulk of it is yours to clear.

While you are in there, set or confirm the canonical URL on each page. That is the setting that tells Google which version of a page is the real one, and it clears duplicate-content warnings.

Turn the cookie and consent banner on, then check what it actually covers

HubSpot includes a cookie-consent banner with three modes: notify, opt-in, and opt-out. It also has data privacy settings for things like GDPR.

Two things to know. First, the banner is off by default unless your account data is hosted in the EU. So if you never set it up, you may have no banner at all. Second, and this is the important part, the native banner mainly governs HubSpot's own first-party cookies. Third-party trackers, like a reservation widget, an ad pixel, or an embedded map, are not blocked by it on their own. So you can have a banner that looks compliant while pixels fire before anyone clicks anything.

What to check: open your live site in a fresh browser, ideally a private window, and see if a banner even appears. Then open the browser's developer tools, go to the Application or Storage tab, and look at what cookies get set before you click anything. If you see third-party cookies or pixels loading before consent, the native banner is not covering them.

What to fix: turn the banner on under Settings, Privacy and Consent, Cookies, and pick the mode that fits your audience. Opt-in is the safest posture. For third-party scripts, you need more than the native banner, either HubSpot's Cookiebot integration or custom consent code. And the part HubSpot says itself: treat these tools as a starting point and have a lawyer review your final wording and posture. This checklist is not legal advice, and neither is the banner.

Performance is mostly handled, but you can still help

This is the good news section. HubSpot's performance defaults are strong. Global CDN, Brotli compression, automatic image optimization that serves modern WebP files, and a site speed dashboard that reports your Core Web Vitals.

What to check: open the site speed dashboard. The goal is Good Core Web Vitals on at least 75% of visits. In plain terms that means your largest content loads in under 2.5 seconds, the layout does not jump around as it loads, and the page responds quickly when someone taps. HubSpot reports those as LCP, CLS, and INP. Note the dashboard covers HubSpot-hosted content.

What to fix: the platform auto-optimizes images, but it helps to start from a properly sized source rather than uploading a giant photo straight off a phone. Smaller, well-sized images give the platform less work to do and help your scores. Beyond that, most of the heavy lifting is already done for you here.

Accessibility: the part automated checks will not catch

The Optimize panel includes some accessibility checks, and that is a start. But a page can pass every automated scan and still be unusable for someone navigating with a keyboard or a screen reader. This is real exposure. The Department of Justice has reaffirmed that the Americans with Disabilities Act applies to web content, so for a public-facing business this is not theoretical.

What to check: run a free tool like Lighthouse (built into Chrome) or axe. Then do the manual part the tools cannot. Tab through your site with only the keyboard and try to reach your menu and your reservation or contact flow without a mouse. Check that text has enough contrast against its background. If you picked a template from HubSpot's marketplace, confirm it states WCAG support.

What to fix: choose templates and modules that document accessibility compliance, make sure text contrast is sufficient, give buttons and links clear labels and big enough tap targets, respect a visitor's reduced-motion preference, and fix the rest by hand. Automated tools catch maybe half of it. The other half is a human clicking through.

A quick note on plans

There is a free tier, then a paid Starter plan, then Professional. Custom domains and removing HubSpot branding start at Starter. The deeper SEO tools and the AI content features live on Professional and up. If your SEO panel is missing features you have read about, your plan may be the reason. Prices change often enough that I will not quote a number here. Check the live pricing page.

The afternoon version

If you only do five things:

  1. Make sure your live pages are on your own domain, not an hs-sites system subdomain.
  2. Run your homepage through the Rich Results Test and see if Restaurant or LocalBusiness schema exists. If not, that is your developer project.
  3. Open the SEO panel on every page and clear the red dots you can do yourself.
  4. Turn the consent banner on, then check in a fresh browser what cookies fire before consent.
  5. Tab through your site with the keyboard and run a free accessibility scan.

None of this requires you to learn HubSpot's full toolset. It just requires knowing which switches are off until you flip them. If you want the wider map of how schema, privacy, and accessibility fit together across any platform, my book Build Your Digital Empire walks through the same logic in order.

The honest summary: HubSpot gives you a fast, well-built foundation and real tools. It does not pretend to do the parts it leaves to you. The structured data, the consent posture, and the accessibility work are yours to own. Now you know which is which.

Fact-check notes and sources

This post is informational, not legal or SEO-consulting advice. Mentions of HubSpot, Google, and other third parties are nominative fair use. No affiliation is implied.

Related reading

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility StatementPrivacy Policy

Last updated: April 2026