seofixprompt

A sample SEO report on an example shop, run against its live site and rendered exactly as yours will be.

seofixprompt SEO audit

Your site passed 61 of 78 checks. The weakest part is Answer Engine Optimization.

6 things are written up below, 5 of them under an hour.

Your site runs on

Vite

Pages read

9

Checks passed

61 of 78

every claim re-checked against the page it came from

Scanned

28 July 2026, 10:00 UTC

How your site scored

61 of 78 checks passed

Each score is the share of the checks in that segment your site passed. Nothing is weighted and nothing is forecast: every number below is a count you can read line by line, and every failure is named. The ones worth your time first are written up underneath with a fix you can paste; open any segment to see the rest.

SegmentScorePassedStatusPriorityOpen segment
Technical SEOTechnical8214 of 17GoodHigh
Page SpeedSpeed1007 of 7GoodLow
On-Page SEOOn-Page7414 of 19Needs workDo first
Generative Engine OptimizationGEO7911 of 14Needs workDo first
AI OverviewsAIO565 of 9Needs major workDo first
Answer Engine OptimizationAEO383 of 8Needs major workHigh
LLM OptimizationLLMO866 of 7GoodLow
E-E-A-TE-E-A-T787 of 9Needs workMedium
Local SEOLocal1006 of 6GoodLow
Programmatic SEOpSEONot applicable
Off-Page SEOOff-Page715 of 7Needs workMedium

What to do, in order

All 17 of them, worst first. Each one links to the section that explains it and gives you the fix.

  1. Do these first

    Five things

    Each one is costing you visitors right now.

  2. Then these

    Eight things

    Worth an afternoon once the first list is done.

  3. When you have time

    Four things

    Small gains, and none of them urgent.

Segment 1 of 11

Technical SEO

What this segment is

Technical SEO

The plumbing. Whether a search engine can reach your pages, read them, and decide they belong in its index at all.

Why it matters

Everything else is wasted if this is wrong. A page nobody can reach cannot be found however well it is written, and problems here tend to be invisible from your own browser: your site looks fine to you while a crawler is being turned away.

What we check

That you have a robots file and it is not blocking the site, that you publish a sitemap and point at it, that each page says which address is the real one, that the insecure address sends people to the secure one, that a missing page says so properly, and that the links we followed led somewhere.

82/10014 of 17 checks passed

Whether search engines can reach, read and index your pages at all.

3 remarks to fix here
  1. Search engines arrive at your shop with no instructions at all

    Check T03

    The site publishes a sitemap

    What it means if this fails

    Nothing lists which pages exist, so pages nothing links to may never be found.

    What you would do about it

    Publish a sitemap at /sitemap.xml listing every page you want found, and add a Sitemap line to robots.txt pointing at it.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    Under an hour

    /:1

    Three addresses every crawler asks for before reading anything are missing from your site. There is no robots file telling them what to read, no sitemap listing which pages exist, and nothing written for AI assistants. Your pages are reachable by following links, so they will be found eventually. Pages nobody links to may never be found at all.

    Fix it yourself

    My home page is missing the files search engines look for first. Add a robots file served at /robots.txt that allows everything except the basket and account pages and points at my sitemap, a sitemap served at /sitemap.xml listing every page including each product, and an llms.txt describing what Harper Goods sells and linking the shop, about and contact pages.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  2. Your shop page tells search engines not to list it

    Check T10

    No page that should be found is hidden from search engines

    What it means if this fails

    A page tells search engines not to list it at all.

    What you would do about it

    Remove the noindex robots meta tag from the pages named so search engines can list them again. Keep it only on private pages such as the basket and account screens.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    Under an hour

    /shop:9

    This page carries a noindex instruction, which is a direct request to leave it out of search results entirely. It is almost always left behind from when a site was being built and nobody wanted a half-finished page found. It is doing exactly what it says: your shop cannot appear in any result, no matter what anyone searches for.

    Fix it yourself

    My /shop page is telling search engines to ignore it. Remove the noindex instruction from /shop so the page can be listed normally, and check that no other customer-facing page has it either. Only the basket and account pages should stay hidden.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  3. The sitemap exists but the robots file does not mention it, so it has to be guessed at

    Check T04

    robots.txt points at the sitemap

    What it means if this fails

    The sitemap exists but the robots file does not mention it, so it has to be guessed at.

    What you would do about it

    Add a Sitemap line to robots.txt giving the full address of the sitemap.

    Severity

    low

    Real, but small. Either the effect is minor at your current size, or it only shows up in narrow circumstances.

    Why it matters

    Fix it if it is quick and you are already in that file. Nothing bad happens if you leave it.

    What we found: robots.txt has no Sitemap: line.

    Fix it yourself

    On harpergoods.com: Add a Sitemap line to robots.txt giving the full address of the sitemap. What we found: robots.txt has no Sitemap: line.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

14 checks this site passed

  • The site has a robots.txt

    Check T01

    The site has a robots.txt

    What it means if this fails

    The site has no robots file, so crawlers arrive with no instructions.

    What you would do about it

    Add a robots.txt at the site root that allows crawling and points at the sitemap.

  • robots.txt does not block the whole site

    Check T02

    robots.txt does not block the whole site

    What it means if this fails

    The site's robots file tells every search engine to stay out.

    What you would do about it

    Remove the site-wide Disallow rule from robots.txt so search engines can read the site. Keep any narrower rules for private areas.

  • Every page says which address is the real one

    Check T06

    Every page says which address is the real one

    What it means if this fails

    Pages do not say which address is the real one, so the same page can be counted several times.

    What you would do about it

    Add a canonical link to the head of every page, each one pointing at that page's own address.

  • No page points that address at a different page

    Check T07

    No page points that address at a different page

    What it means if this fails

    Pages point their canonical address at a different page, which asks search engines to ignore them.

    What you would do about it

    Correct the canonical link on the pages named so each points at its own address rather than at another page.

  • Every page declares a mobile viewport

    Check T08

    Every page declares a mobile viewport

    What it means if this fails

    Pages do not declare a mobile viewport, so phones render them at desktop width.

    What you would do about it

    Add a viewport meta tag with width=device-width and initial-scale=1 to the head of every page.

  • Every page says what language it is in

    Check T09

    Every page says what language it is in

    What it means if this fails

    Pages do not declare their language, so search engines guess which country to show them in.

    What you would do about it

    Set a lang attribute on the html element of every page, matching the language the page is written in.

  • No noindex is being sent in the response headers

    Check T11

    No noindex is being sent in the response headers

    What it means if this fails

    The server sends a noindex header, which hides the page and is invisible in a browser.

    What you would do about it

    Stop the server sending an X-Robots-Tag noindex header with these pages.

  • The insecure address redirects to the secure one

    Check T12

    The insecure address redirects to the secure one

    What it means if this fails

    The site answers on http as well as https, so there are two copies of every page.

    What you would do about it

    Permanently redirect every http address to its https equivalent so the site is served on one protocol only.

  • A missing address answers with a proper 404

    Check T13

    A missing address answers with a proper 404

    What it means if this fails

    Addresses that do not exist answer as though they do, so search engines index pages that are not there.

    What you would do about it

    Make addresses that do not exist return a 404 status instead of 200, so search engines stop indexing pages that are not there.

  • Every link we followed led to a real page

    Check T14

    Every link we followed led to a real page

    What it means if this fails

    A link on the site leads to a page that is not there.

    What you would do about it

    Fix or remove the links named so nothing on the site points at a page that is not there.

  • The site lives at one address, not two

    Check T15

    The site lives at one address, not two

    What it means if this fails

    Both the www and the bare address serve the site, so every signal it earns is split in two.

    What you would do about it

    Pick one host, www or bare, and permanently redirect the other to it so the site lives at one address.

  • No page names two of them at once

    Check T17

    No page names two of them at once

    What it means if this fails

    A page declares two canonical addresses, so search engines ignore both and decide for themselves.

    What you would do about it

    Leave one canonical link on each page and delete the duplicates.

  • Nothing on a secure page is loaded insecurely

    Check T18

    Nothing on a secure page is loaded insecurely

    What it means if this fails

    A secure page loads something over an insecure address, which every browser blocks outright, so that part of the page is missing for everyone but the person who built it.

    What you would do about it

    Change every http:// address in the page's own tags to https://. If a host genuinely has no secure version, move the file onto your own site and serve it from there.

  • Language versions point at each other

    Check T19

    Language versions point at each other

    What it means if this fails

    The site is published in more than one language and nothing tells a search engine the versions are the same page, so they compete with each other instead of being offered to the right reader.

    What you would do about it

    In the <head> of every translated page, add one <link rel="alternate" hreflang="xx" href="…"> for each language including the page itself, plus one with hreflang="x-default" pointing at the version for everybody else.

Segment 2 of 11

Page Speed

What this segment is

Page Speed

How quickly your page can start showing something. Not a stopwatch reading, but the things in what your server sends that decide whether it can be fast at all.

Why it matters

People leave. A page that takes a few seconds to show anything loses a large share of the people who asked for it before they have seen a word, and they are gone before they know what you sell. Search engines measure this directly and use it to choose between two pages that are otherwise equal.

What we check

Whether scripts in the head stop the page from drawing before they have finished, whether images say how big they are so the text stops jumping about as they arrive, whether images below the fold wait until they are needed, how heavy the pictures actually are, whether modern image formats are used, and whether the page is enormous before a single image loads.

What this score does not tell you

We never run your JavaScript, so we cannot time your page or report Core Web Vitals. What we can do is name the causes, which is the part you can actually change.

100/1007 of 7 checks passed

Whether your pages can load quickly, judged on what makes them slow.

Nothing to do here.

Seven checks this site passed

  • Scripts do not hold the page up before it draws

    Check V01

    Scripts do not hold the page up before it draws

    What it means if this fails

    Scripts in the head have to finish downloading and running before anything appears, so the visitor sees a blank page for as long as that takes.

    What you would do about it

    Add the `defer` attribute to every <script src=…> in the <head>, or move those tags to just before </body>. Nothing on a marketing page needs to run before the page is drawn.

  • Pictures say how big they are before they arrive

    Check V02

    Pictures say how big they are before they arrive

    What it means if this fails

    Images with no width and height leave the browser no idea how much room to keep, so the text jumps down the page as each one loads and people tap the wrong thing.

    What you would do about it

    Give every <img> a width and a height attribute matching the file's real pixel dimensions. Keep the CSS sizing as it is; these two attributes only tell the browser the shape to reserve.

  • Pictures further down wait until they are needed

    Check V03

    Pictures further down wait until they are needed

    What it means if this fails

    Every image on the page is downloaded before the visitor has scrolled to any of them, so the ones they can actually see arrive last.

    What you would do about it

    Add loading="lazy" to every <img> below the first screenful. Leave it off the one image at the top: that one should load immediately.

  • No picture is heavy enough to hold the page up on its own

    Check V04

    No picture is heavy enough to hold the page up on its own

    What it means if this fails

    At least one image on the site is large enough that a phone on a normal connection spends seconds downloading it, which is time the visitor spends looking at nothing.

    What you would do about it

    Save the pictures named below at the size they are actually displayed, in WebP, and aim for under 200 KB each. Most photo tools export WebP directly; the visible quality difference at these sizes is nil.

  • Pictures use a format that is not twice the size it needs to be

    Check V05

    Pictures use a format that is not twice the size it needs to be

    What it means if this fails

    The photographs are served as PNG or JPEG, which every browser in use can already beat by roughly a third with no visible difference.

    What you would do about it

    Re-save the photographs as WebP and update the <img src> to match. If you need a fallback, wrap them in a <picture> element with the WebP first and the original underneath.

  • The page warns the browser about the other servers it needs

    Check V06

    The page warns the browser about the other servers it needs

    What it means if this fails

    The page loads fonts or scripts from other companies' servers without telling the browser in advance, so it discovers each one late and pays for the introduction before anything can be drawn.

    What you would do about it

    For each third-party host the page loads from, add <link rel="preconnect" href="https://that-host" crossorigin> in the <head>, above the tag that uses it.

  • The page itself is not enormous before anything else loads

    Check V07

    The page itself is not enormous before anything else loads

    What it means if this fails

    The page's own markup is large enough to be a noticeable download on a phone, before a single image or script is fetched.

    What you would do about it

    Ask your builder to find what is making the page this large. It is usually the same content included twice, once as HTML and once as a JSON blob for the JavaScript, or a very long page that should be split.

Segment 3 of 11

On-Page SEO

What this segment is

On-Page SEO

What each page says about itself: its title, the one-line summary under it in search results, its headings, and the words a screen reader or a crawler finds when it arrives.

Why it matters

This is what someone reads in a list of ten results before deciding which to click. A page can rank perfectly well and still be skipped because its title was cut off mid-sentence or its summary was a paragraph the search engine picked at random.

What we check

That every page has a title and a description, that no two pages share them, that they are a usable length, that there is one main heading, that images say what they show, and that the page arrives with its content already in it rather than empty until scripts run.

74/10014 of 19 checks passed

What each page says about itself: titles, summaries, headings and pictures.

5 remarks to fix here
  1. Nobody sharing your contact page sees anything but the address

    Check O05

    Every page has a description

    What it means if this fails

    Pages carry no summary, so the search engine writes its own from a sentence off the page.

    What you would do about it

    Add a meta description of roughly 25 words to each page named, saying what that page is for.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    Under an hour

    /contact:6

    This page has no summary and no social preview. The summary is the grey line under your link in search results, and without one the search engine writes its own by taking a sentence off the page. The preview is what messaging apps read to build a card, so a customer sending your link to a friend sends a bare address with no picture and no explanation.

    Fix it yourself

    My /contact page has no description and no social preview. Add a description of about 25 words to /contact saying who we are and what someone can get in touch about, and add a preview image, title and description so the link shows a proper card when it is shared.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  2. Your journal page arrives completely empty

    Check O13

    Pages arrive with their content already in them

    What it means if this fails

    A page arrives empty and is only filled in after JavaScript runs.

    What you would do about it

    Render the content of the pages named into the HTML the server sends, so the words are there before any JavaScript runs.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    Half a day

    /journal:14

    This page sends almost no words. Everything a visitor reads is drawn afterwards by code running in their browser, which works perfectly for a person and leaves nothing for a search engine that reads the page as it arrives. The same is true for the assistants people now ask for recommendations. To them your journal is a blank sheet with a script attached.

    Fix it yourself

    My /journal page arrives empty because all the writing appears only after JavaScript runs. Make /journal send its real content in the page itself: the post titles, dates and opening paragraphs should be in the page before any script runs, so a search engine reading it sees the same words a visitor does.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  3. Three of your pages are all called Harper Goods

    Check O03

    No two pages share a title

    What it means if this fails

    Several pages share one title, so search engines cannot tell them apart.

    What you would do about it

    Give each of the pages named its own title describing what is on that page specifically.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    Under an hour

    /about:5

    Your about, delivery and stockists pages carry exactly the same title. The title is the blue line someone reads before deciding whether to click, so all three look like the same page to a person choosing between them, and a search engine deciding which one answers a question has nothing to tell them apart with. It usually resolves that by showing only one.

    Fix it yourself

    The /about page shares its title with two other pages. Give /about a title that says what is actually on it, something like Who makes Harper Goods candles, and make sure the delivery and stockists pages each get their own distinct title too.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  4. Your delivery page never says what it is about

    Check O08

    Every page has a main heading

    What it means if this fails

    A page has no main heading, so its subject is left to be guessed at.

    What you would do about it

    Add a single h1 heading at the top of each page named, saying what the page is about.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    Under an hour

    /delivery:11

    This page has no main heading. A heading is the one line a machine treats as the subject of the page, and yours has none, so a search engine and an assistant both have to work it out from the paragraphs. Delivery and returns is one of the things people most often ask an assistant about a shop, and this is the page that should answer it.

    Fix it yourself

    My /delivery page has no main heading. Add one at the top of /delivery that says plainly what the page covers, something like Delivery and returns at Harper Goods, and keep the existing text underneath it.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  5. Pages have no social preview, so a shared link arrives as a bare address with no picture

    Check O14

    Shared links carry a preview

    What it means if this fails

    Pages have no social preview, so a shared link arrives as a bare address with no picture.

    What you would do about it

    Add OpenGraph and Twitter card tags, a title, a description and an image, to the pages named so shared links show a preview.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no OpenGraph or Twitter card tags on 4 pages: /contact, /delivery, /stockists, /journal.

    Fix it yourself

    On harpergoods.com: Add OpenGraph and Twitter card tags, a title, a description and an image, to the pages named so shared links show a preview. What we found: no OpenGraph or Twitter card tags on 4 pages: /contact, /delivery, /stockists, /journal.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

14 checks this site passed

  • Pictures say how big they are before they arrive

    Check V02

    Pictures say how big they are before they arrive

    What it means if this fails

    Images with no width and height leave the browser no idea how much room to keep, so the text jumps down the page as each one loads and people tap the wrong thing.

    What you would do about it

    Give every <img> a width and a height attribute matching the file's real pixel dimensions. Keep the CSS sizing as it is; these two attributes only tell the browser the shape to reserve.

  • Every page has a title

    Check O01

    Every page has a title

    What it means if this fails

    A page has no title, so search engines invent one from whatever they find.

    What you would do about it

    Give every page a title element that says what that page is about.

  • No page title is a placeholder

    Check O02

    No page title is a placeholder

    What it means if this fails

    A page title is a placeholder rather than something a person would search for.

    What you would do about it

    Replace the placeholder titles named with ones that say what the business offers, phrased the way someone would search for it.

  • Titles are short enough to be shown in full

    Check O04

    Titles are short enough to be shown in full

    What it means if this fails

    Page titles are long enough that search engines cut them off mid sentence.

    What you would do about it

    Shorten the titles named to 60 characters or fewer so search results show them in full.

  • No two pages share a description

    Check O06

    No two pages share a description

    What it means if this fails

    Several pages share one description, so their search results all read the same.

    What you would do about it

    Write a separate meta description for each of the pages named.

  • Descriptions are a usable length

    Check O07

    Descriptions are a usable length

    What it means if this fails

    Descriptions are too short or too long to be shown as written.

    What you would do about it

    Rewrite the descriptions named to between 70 and 160 characters so they are shown as written.

  • Headings step down one level at a time

    Check O09

    Headings step down one level at a time

    What it means if this fails

    Heading levels are skipped, so the outline of the page reads as broken to a machine.

    What you would do about it

    Fix the heading order on the pages named so levels step down one at a time, with no jump from h1 straight to h3.

  • Every image says what it shows

    Check O10

    Every image says what it shows

    What it means if this fails

    Images carry no alt text, so search engines and screen readers cannot tell what they show.

    What you would do about it

    Add alt text to the images named, describing what each one shows. Leave alt empty only for images that are purely decorative.

  • Every page carries enough content to be worth reading

    Check O11

    Every page carries enough content to be worth reading

    What it means if this fails

    Pages carry so little text that there is nothing for a search engine to judge them on.

    What you would do about it

    Add real content to the pages named: at least 150 words saying what the page is for and what someone gets from it.

  • Every page links onward into the site

    Check O12

    Every page links onward into the site

    What it means if this fails

    A page has no links to the rest of the site, so anyone who lands there has nowhere to go.

    What you would do about it

    Add links from the pages named to the rest of the site, so a visitor who lands there has somewhere to go.

  • Pages inside the site say where they sit in it

    Check O16

    Pages inside the site say where they sit in it

    What it means if this fails

    Pages below the top level carry no breadcrumb data, so search results show a bare address where they could show the path through your site.

    What you would do about it

    Add a BreadcrumbList JSON-LD block to every page below the top level, listing each step from the home page down to that page, with a name and a URL for each.

  • The site has an icon to show beside its name

    Check O17

    The site has an icon to show beside its name

    What it means if this fails

    There is no icon declared, so the browser tab, the bookmark and the search result all show a blank square where every competitor shows a mark.

    What you would do about it

    Add a favicon: put an icon.png or favicon.ico at the site root and declare it with <link rel="icon" href="/icon.png"> in the <head>. 32×32 is enough.

  • Products are described in machine-readable terms

    Check O18

    Products are described in machine-readable terms

    What it means if this fails

    The things you sell are described only in words a person reads, so a search engine cannot show a price, a picture and availability beside your listing the way it does for your competitors.

    What you would do about it

    Add Product JSON-LD to every product page: name, image, description, and an "offers" block with price, priceCurrency and availability.

  • Product markup carries a price and whether it is in stock

    Check O19

    Product markup carries a price and whether it is in stock

    What it means if this fails

    The product markup exists but leaves out the price or whether the item is in stock, which are the two things a search result shows and the two a shopper decides on.

    What you would do about it

    In each product's "offers" block, fill in price, priceCurrency (as "EUR" or "USD") and availability (as "https://schema.org/InStock" or "OutOfStock"). Keep them matching what the page says.

Segment 4 of 11

Generative Engine Optimization

What this segment is

Generative Engine Optimization

Generative Engine Optimization: whether an AI writing an answer has anything of yours it can actually use.

Why it matters

People increasingly ask an assistant instead of scrolling a results page. An assistant that cannot find a clear, quotable statement of what you do and who you are will describe a competitor who published one.

What we check

Whether you publish a plain-text file written for assistants, whether your pages carry structured data saying who the business is, whether that data is valid, and whether your content is shaped into lists and tables an answer can lift from.

79/10011 of 14 checks passed

Whether an AI that writes an answer has anything of yours it can use.

3 remarks to fix here
  1. A page arrives empty and is only filled in after JavaScript runs

    Check O13

    Pages arrive with their content already in them

    What it means if this fails

    A page arrives empty and is only filled in after JavaScript runs.

    What you would do about it

    Render the content of the pages named into the HTML the server sends, so the words are there before any JavaScript runs.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    What we found: 1 page sends almost no readable text and builds everything with JavaScript: /journal.

    Fix it yourself

    On harpergoods.com: Render the content of the pages named into the HTML the server sends, so the words are there before any JavaScript runs. What we found: 1 page sends almost no readable text and builds everything with JavaScript: /journal.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

    Also counts toward On-Page SEO, where it is written up in full.

  2. No page carries structured data, so nothing states in machine terms what this business is

    Check G03

    There is structured data somewhere on the site

    What it means if this fails

    No page carries structured data, so nothing states in machine terms what this business is.

    What you would do about it

    Add JSON-LD structured data to the site, starting with an Organization or LocalBusiness block on the home page.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    What we found: no JSON-LD structured data on any of the 9 pages we read.

    Fix it yourself

    On harpergoods.com: Add JSON-LD structured data to the site, starting with an Organization or LocalBusiness block on the home page. What we found: no JSON-LD structured data on any of the 9 pages we read.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  3. There is no llms.txt, so assistants have nothing written for them about this business

    Check G01

    The site publishes an llms.txt

    What it means if this fails

    There is no llms.txt, so assistants have nothing written for them about this business.

    What you would do about it

    Publish an llms.txt at the site root describing the business in plain sentences and linking the pages that matter.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no /llms.txt.

    Fix it yourself

    On harpergoods.com: Publish an llms.txt at the site root describing the business in plain sentences and linking the pages that matter. What we found: no /llms.txt.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

Eleven checks this site passed

  • Every page carries enough content to be worth reading

    Check O11

    Every page carries enough content to be worth reading

    What it means if this fails

    Pages carry so little text that there is nothing for a search engine to judge them on.

    What you would do about it

    Add real content to the pages named: at least 150 words saying what the page is for and what someone gets from it.

  • Pages inside the site say where they sit in it

    Check O16

    Pages inside the site say where they sit in it

    What it means if this fails

    Pages below the top level carry no breadcrumb data, so search results show a bare address where they could show the path through your site.

    What you would do about it

    Add a BreadcrumbList JSON-LD block to every page below the top level, listing each step from the home page down to that page, with a name and a URL for each.

  • Products are described in machine-readable terms

    Check O18

    Products are described in machine-readable terms

    What it means if this fails

    The things you sell are described only in words a person reads, so a search engine cannot show a price, a picture and availability beside your listing the way it does for your competitors.

    What you would do about it

    Add Product JSON-LD to every product page: name, image, description, and an "offers" block with price, priceCurrency and availability.

  • Product markup carries a price and whether it is in stock

    Check O19

    Product markup carries a price and whether it is in stock

    What it means if this fails

    The product markup exists but leaves out the price or whether the item is in stock, which are the two things a search result shows and the two a shopper decides on.

    What you would do about it

    In each product's "offers" block, fill in price, priceCurrency (as "EUR" or "USD") and availability (as "https://schema.org/InStock" or "OutOfStock"). Keep them matching what the page says.

  • The structured data says who the business is

    Check G04

    The structured data says who the business is

    What it means if this fails

    The structured data never says who this business is, only what the pages are.

    What you would do about it

    Add an Organization, LocalBusiness or Person block to the structured data so it states who the business is, not only what each page is.

  • None of the structured data is broken

    Check G05

    None of the structured data is broken

    What it means if this fails

    A structured data block is broken, so search engines discard it and the work counts for nothing.

    What you would do about it

    Fix the structured data blocks named so they are valid JSON and can be read.

  • Pages are structured into lists and tables an answer can lift

    Check G06

    Pages are structured into lists and tables an answer can lift

    What it means if this fails

    Content is unbroken prose, so there is nothing an AI answer can quote as a step or a comparison.

    What you would do about it

    Break the key content into lists or tables, so an assistant writing an answer has a step or a comparison it can lift.

  • The site points agents at its machine-readable version

    Check M01

    The site points agents at its machine-readable version

    What it means if this fails

    The site publishes a plain-text version for assistants but never mentions it in the response itself, so an assistant only finds it by guessing the address.

    What you would do about it

    Send a Link header on every page pointing at your llms.txt, so an assistant is told where the plain-text version of this site lives instead of having to guess: Link: </llms.txt>; rel="alternate"; type="text/plain".

  • Agents are told what this site lets them do

    Check M05

    Agents are told what this site lets them do

    What it means if this fails

    This site has an API but publishes no description an assistant can read on its own, so an assistant can talk about the business without being able to do anything with it.

    What you would do about it

    Publish a server card at /.well-known/mcp/server-card.json describing what an assistant may do here, or a skills index at /.well-known/agent-skills/index.json listing the tasks it can carry out.

  • The people behind the site are described in machine terms

    Check X05

    The people behind the site are described in machine terms

    What it means if this fails

    No structured data describes a person or an organisation, so nothing links this site to anyone real.

    What you would do about it

    Add Person or Organization structured data naming who is behind the site.

  • Structured data claims those profiles as the same business

    Check F02

    Structured data claims those profiles as the same business

    What it means if this fails

    The site links to its profiles but never declares they are the same business, so search engines must guess.

    What you would do about it

    List those profile addresses in the structured data using sameAs, so search engines connect them to this business.

Segment 5 of 11

AI Overviews

What this segment is

AI Overviews

AI Overviews: the answer box that now sits above the ordinary search results.

Why it matters

That box takes the clicks that used to go to the first result. Appearing inside it is worth more than ranking below it, and what gets pulled into it is usually a direct answer to a question, clearly marked.

What we check

Whether questions and answers are marked up so they can be recognised, whether pages carry dates so their freshness can be judged, whether the main content is separated from the navigation, and whether an assistant asking for a plain-text version gets one.

56/1005 of 9 checks passed

Whether you turn up inside the answer box above the search results.

4 remarks to fix here
  1. A page arrives empty and is only filled in after JavaScript runs

    Check O13

    Pages arrive with their content already in them

    What it means if this fails

    A page arrives empty and is only filled in after JavaScript runs.

    What you would do about it

    Render the content of the pages named into the HTML the server sends, so the words are there before any JavaScript runs.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    What we found: 1 page sends almost no readable text and builds everything with JavaScript: /journal.

    Fix it yourself

    On harpergoods.com: Render the content of the pages named into the HTML the server sends, so the words are there before any JavaScript runs. What we found: 1 page sends almost no readable text and builds everything with JavaScript: /journal.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

    Also counts toward On-Page SEO, where it is written up in full.

  2. No page carries structured data, so nothing states in machine terms what this business is

    Check G03

    There is structured data somewhere on the site

    What it means if this fails

    No page carries structured data, so nothing states in machine terms what this business is.

    What you would do about it

    Add JSON-LD structured data to the site, starting with an Organization or LocalBusiness block on the home page.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    What we found: no JSON-LD structured data on any of the 9 pages we read.

    Fix it yourself

    On harpergoods.com: Add JSON-LD structured data to the site, starting with an Organization or LocalBusiness block on the home page. What we found: no JSON-LD structured data on any of the 9 pages we read.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  3. No page carries FAQ markup, so questions the business already answers cannot be shown as answers

    Check A01

    The site marks up its questions and answers

    What it means if this fails

    No page carries FAQ markup, so questions the business already answers cannot be shown as answers.

    What you would do about it

    Mark up the questions and answers the site already publishes as FAQPage structured data.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no FAQPage or QAPage structured data on any page we read.

    Fix it yourself

    On harpergoods.com: Mark up the questions and answers the site already publishes as FAQPage structured data. What we found: no FAQPage or QAPage structured data on any page we read.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  4. No heading is phrased as a question, so nothing on the site matches how people search out loud

    Check A02

    Some headings are the questions people actually ask

    What it means if this fails

    No heading is phrased as a question, so nothing on the site matches how people search out loud.

    What you would do about it

    Phrase some headings as the questions people actually ask, and answer each one directly underneath.

    Severity

    low

    Real, but small. Either the effect is minor at your current size, or it only shows up in narrow circumstances.

    Why it matters

    Fix it if it is quick and you are already in that file. Nothing bad happens if you leave it.

    What we found: not one heading across 8 pages is phrased as a question.

    Fix it yourself

    On harpergoods.com: Phrase some headings as the questions people actually ask, and answer each one directly underneath. What we found: not one heading across 8 pages is phrased as a question.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

Five checks this site passed

  • Pages are structured into lists and tables an answer can lift

    Check G06

    Pages are structured into lists and tables an answer can lift

    What it means if this fails

    Content is unbroken prose, so there is nothing an AI answer can quote as a step or a comparison.

    What you would do about it

    Break the key content into lists or tables, so an assistant writing an answer has a step or a comparison it can lift.

  • Questions are answered immediately underneath

    Check A03

    Questions are answered immediately underneath

    What it means if this fails

    Questions are asked as headings and then answered several paragraphs later, so no answer can be lifted.

    What you would do about it

    Put a short, direct answer in the first paragraph under each question heading, before any of the detail.

  • Pages say when they were written or updated

    Check A04

    Pages say when they were written or updated

    What it means if this fails

    Nothing says when the content was written, so a search engine cannot tell whether it is still true.

    What you would do about it

    Show a visible date on the content and a dateModified in the structured data, so a reader can tell it is current.

  • The main content is marked out from the furniture

    Check E03

    The main content is marked out from the furniture

    What it means if this fails

    Nothing separates the content from the navigation, so a machine has to guess where the page begins.

    What you would do about it

    Wrap the main content of each page named in a main element so a machine can tell it from the navigation.

  • An assistant asking for plain text gets plain text

    Check M02

    An assistant asking for plain text gets plain text

    What it means if this fails

    An assistant that asks for a plain-text version of a page is sent the full HTML instead, so it has to read a page built for a browser and work out which parts are the content.

    What you would do about it

    Serve a plain-text version of each page when the request asks for one. If your site is behind Cloudflare, turn on Markdown for Agents in the dashboard. Otherwise set your server to reply with Content-Type: text/markdown and the page's text when a request sends Accept: text/markdown, and keep sending HTML to everyone else.

Segment 6 of 11

Answer Engine Optimization

What this segment is

Answer Engine Optimization

Answer Engine Optimization: whether your pages answer real questions directly enough to be quoted as the answer.

Why it matters

Being quoted requires a passage that stands on its own. A page that explains everything beautifully across four paragraphs is harder to quote than one that asks the question as a heading and answers it in the sentence underneath.

What we check

Whether any headings are phrased as questions people actually ask, whether an answer follows immediately underneath, whether there is a page dedicated to answering questions, and whether instructions are marked up as steps.

38/1003 of 8 checks passed

Whether your pages answer questions directly enough to be quoted.

5 remarks to fix here
  1. No page carries structured data, so nothing states in machine terms what this business is

    Check G03

    There is structured data somewhere on the site

    What it means if this fails

    No page carries structured data, so nothing states in machine terms what this business is.

    What you would do about it

    Add JSON-LD structured data to the site, starting with an Organization or LocalBusiness block on the home page.

    Severity

    high

    This is costing you money right now, or it is something a stranger could take advantage of today. It is not a warning about the future.

    Why it matters

    Start here. A high finding is usually the difference between a bill that grows quietly and one that stops growing, or between a door that is open and one that is shut.

    What we found: no JSON-LD structured data on any of the 9 pages we read.

    Fix it yourself

    On harpergoods.com: Add JSON-LD structured data to the site, starting with an Organization or LocalBusiness block on the home page. What we found: no JSON-LD structured data on any of the 9 pages we read.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  2. A page has no main heading, so its subject is left to be guessed at

    Check O08

    Every page has a main heading

    What it means if this fails

    A page has no main heading, so its subject is left to be guessed at.

    What you would do about it

    Add a single h1 heading at the top of each page named, saying what the page is about.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no h1 heading on 1 page: /delivery.

    Fix it yourself

    On harpergoods.com: Add a single h1 heading at the top of each page named, saying what the page is about. What we found: no h1 heading on 1 page: /delivery.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

    Also counts toward On-Page SEO, where it is written up in full.

  3. No page carries FAQ markup, so questions the business already answers cannot be shown as answers

    Check A01

    The site marks up its questions and answers

    What it means if this fails

    No page carries FAQ markup, so questions the business already answers cannot be shown as answers.

    What you would do about it

    Mark up the questions and answers the site already publishes as FAQPage structured data.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no FAQPage or QAPage structured data on any page we read.

    Fix it yourself

    On harpergoods.com: Mark up the questions and answers the site already publishes as FAQPage structured data. What we found: no FAQPage or QAPage structured data on any page we read.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  4. No heading is phrased as a question, so nothing on the site matches how people search out loud

    Check A02

    Some headings are the questions people actually ask

    What it means if this fails

    No heading is phrased as a question, so nothing on the site matches how people search out loud.

    What you would do about it

    Phrase some headings as the questions people actually ask, and answer each one directly underneath.

    Severity

    low

    Real, but small. Either the effect is minor at your current size, or it only shows up in narrow circumstances.

    Why it matters

    Fix it if it is quick and you are already in that file. Nothing bad happens if you leave it.

    What we found: not one heading across 8 pages is phrased as a question.

    Fix it yourself

    On harpergoods.com: Phrase some headings as the questions people actually ask, and answer each one directly underneath. What we found: not one heading across 8 pages is phrased as a question.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  5. There is no FAQ or help page, so the questions customers ask are not answered anywhere findable

    Check E01

    There is a page dedicated to answering questions

    What it means if this fails

    There is no FAQ or help page, so the questions customers ask are not answered anywhere findable.

    What you would do about it

    Add a page that answers the questions customers ask before they buy, and link it from the main navigation.

    Severity

    low

    Real, but small. Either the effect is minor at your current size, or it only shows up in narrow circumstances.

    Why it matters

    Fix it if it is quick and you are already in that file. Nothing bad happens if you leave it.

    What we found: no FAQ, help or support page in the sitemap or among the pages we read.

    Fix it yourself

    On harpergoods.com: Add a page that answers the questions customers ask before they buy, and link it from the main navigation. What we found: no FAQ, help or support page in the sitemap or among the pages we read.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

Three checks this site passed

  • Headings step down one level at a time

    Check O09

    Headings step down one level at a time

    What it means if this fails

    Heading levels are skipped, so the outline of the page reads as broken to a machine.

    What you would do about it

    Fix the heading order on the pages named so levels step down one at a time, with no jump from h1 straight to h3.

  • Questions are answered immediately underneath

    Check A03

    Questions are answered immediately underneath

    What it means if this fails

    Questions are asked as headings and then answered several paragraphs later, so no answer can be lifted.

    What you would do about it

    Put a short, direct answer in the first paragraph under each question heading, before any of the detail.

  • The main content is marked out from the furniture

    Check E03

    The main content is marked out from the furniture

    What it means if this fails

    Nothing separates the content from the navigation, so a machine has to guess where the page begins.

    What you would do about it

    Wrap the main content of each page named in a main element so a machine can tell it from the navigation.

Segment 7 of 11

LLM Optimization

What this segment is

LLM Optimization

LLM Optimization: whether assistants are allowed to read you at all, and find something worth reading.

Why it matters

This is the one segment where a single line in a file can switch you off entirely. A robots file that blocks the crawlers assistants use means nothing on your site can ever be quoted in an AI answer, whatever else you do.

What we check

Whether those crawlers are allowed in, whether you publish a plain-text file describing the business, whether it says anything substantial, and whether long pages open with a summary rather than straight into detail.

What this score does not tell you

Blocking assistants is sometimes a deliberate choice about your own copyright. We say what it costs rather than calling it a mistake.

86/1006 of 7 checks passed

Whether assistants are allowed to read you, and find something worth reading.

1 remark to fix here
  1. There is no llms.txt, so assistants have nothing written for them about this business

    Check G01

    The site publishes an llms.txt

    What it means if this fails

    There is no llms.txt, so assistants have nothing written for them about this business.

    What you would do about it

    Publish an llms.txt at the site root describing the business in plain sentences and linking the pages that matter.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no /llms.txt.

    Fix it yourself

    On harpergoods.com: Publish an llms.txt at the site root describing the business in plain sentences and linking the pages that matter. What we found: no /llms.txt.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

Six checks this site passed

  • Assistants are allowed to read the site

    Check L01

    Assistants are allowed to read the site

    What it means if this fails

    The robots file blocks the crawlers AI assistants use. This is sometimes a deliberate choice, so say what it costs rather than calling it a mistake: nothing on this site can be quoted in an assistant's answer while it stands.

    What you would do about it

    Decide whether assistants may read this site. If they may, remove the robots.txt rules blocking their crawlers so these pages can be quoted in AI answers.

  • The site points agents at its machine-readable version

    Check M01

    The site points agents at its machine-readable version

    What it means if this fails

    The site publishes a plain-text version for assistants but never mentions it in the response itself, so an assistant only finds it by guessing the address.

    What you would do about it

    Send a Link header on every page pointing at your llms.txt, so an assistant is told where the plain-text version of this site lives instead of having to guess: Link: </llms.txt>; rel="alternate"; type="text/plain".

  • An assistant asking for plain text gets plain text

    Check M02

    An assistant asking for plain text gets plain text

    What it means if this fails

    An assistant that asks for a plain-text version of a page is sent the full HTML instead, so it has to read a page built for a browser and work out which parts are the content.

    What you would do about it

    Serve a plain-text version of each page when the request asks for one. If your site is behind Cloudflare, turn on Markdown for Agents in the dashboard. Otherwise set your server to reply with Content-Type: text/markdown and the page's text when a request sends Accept: text/markdown, and keep sending HTML to everyone else.

  • The API says where it is documented

    Check M03

    The API says where it is documented

    What it means if this fails

    This site has an API, but nothing at the standard address tells an agent where to find its documentation, so software cannot discover what the API offers without a person reading the docs first.

    What you would do about it

    Publish an API catalogue at /.well-known/api-catalog as application/linkset+json, listing each API with links to its specification and its documentation.

  • An agent can find out how to sign in to the API

    Check M04

    An agent can find out how to sign in to the API

    What it means if this fails

    This site has an API behind a login, and nothing at the standard addresses tells an agent how to authenticate, so software has no way to get a token without a person reading the documentation.

    What you would do about it

    Publish your sign-in details where software looks for them: /.well-known/oauth-authorization-server (or /.well-known/openid-configuration) with your endpoints, and /.well-known/oauth-protected-resource naming which server issues tokens for this API.

  • Agents are told what this site lets them do

    Check M05

    Agents are told what this site lets them do

    What it means if this fails

    This site has an API but publishes no description an assistant can read on its own, so an assistant can talk about the business without being able to do anything with it.

    What you would do about it

    Publish a server card at /.well-known/mcp/server-card.json describing what an assistant may do here, or a skills index at /.well-known/agent-skills/index.json listing the tasks it can carry out.

Segment 8 of 11

E-E-A-T

What this segment is

E-E-A-T

Experience, Expertise, Authoritativeness and Trust: the signals that say a real business with real people stands behind this site.

Why it matters

Search engines weigh these heavily for anything touching money or health, and so do readers. Most of it is ordinary: say who you are, let people contact you, publish your terms, show that customers exist.

What we check

Whether there is a page saying who is behind this, a way to make contact, legal pages, machine-readable details about the people, and evidence that customers have said something.

What this score does not tell you

This scores the trust signals your pages carry. Whether readers and search engines actually find you authoritative is decided off your site, and we do not measure it.

78/1007 of 9 checks passed

The signals that say a real business with real people stands behind this.

2 remarks to fix here

What this score does not include. This scores the trust signals your pages carry. Whether readers and search engines find you authoritative is decided off your site, and we do not measure that.

  1. There is no about page, so nothing on the site says who runs this business

    Check X01

    There is a page saying who is behind this

    What it means if this fails

    There is no about page, so nothing on the site says who runs this business.

    What you would do about it

    Add a page saying who runs the business, and link it from the navigation.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no about, team or company page among the pages we read or in the sitemap.

    Fix it yourself

    On harpergoods.com: Add a page saying who runs the business, and link it from the navigation. What we found: no about, team or company page among the pages we read or in the sitemap.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  2. Articles carry no author, so nothing says who is qualified to have written them

    Check X04

    Articles say who wrote them

    What it means if this fails

    Articles carry no author, so nothing says who is qualified to have written them.

    What you would do about it

    Credit an author on each article, and describe them as a Person in the structured data.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: 2 of 2 article pages name no author: /journal/first-pour, /journal/winter-scents.

    Fix it yourself

    On harpergoods.com: Credit an author on each article, and describe them as a Person in the structured data. What we found: 2 of 2 article pages name no author: /journal/first-pour, /journal/winter-scents.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

Seven checks this site passed

  • There is a postal address a machine can read

    Check N02

    There is a postal address a machine can read

    What it means if this fails

    The address is not in the structured data, so a search engine has to guess it from the page text and often gets it wrong or ignores it.

    What you would do about it

    Add a "address" property to your business structured data, as a PostalAddress with streetAddress, addressLocality, postalCode and addressCountry filled in.

  • The structured data says who the business is

    Check G04

    The structured data says who the business is

    What it means if this fails

    The structured data never says who this business is, only what the pages are.

    What you would do about it

    Add an Organization, LocalBusiness or Person block to the structured data so it states who the business is, not only what each page is.

  • There is a way to make contact

    Check X02

    There is a way to make contact

    What it means if this fails

    There is no contact page and no address or number on the site, so there is no way to reach a person.

    What you would do about it

    Publish a way to reach a person: a contact page, an email or telephone link, or a postal address in the structured data.

  • The site publishes its legal pages

    Check X03

    The site publishes its legal pages

    What it means if this fails

    There is no privacy policy or terms page, which readers and search engines both read as a missing basic.

    What you would do about it

    Publish a privacy policy and a terms page, and link them from the footer.

  • The people behind the site are described in machine terms

    Check X05

    The people behind the site are described in machine terms

    What it means if this fails

    No structured data describes a person or an organisation, so nothing links this site to anyone real.

    What you would do about it

    Add Person or Organization structured data naming who is behind the site.

  • The site shows what customers say about it

    Check X06

    The site shows what customers say about it

    What it means if this fails

    There are no testimonials or reviews anywhere, so nothing but the site vouches for the site.

    What you would do about it

    Publish customer testimonials or case studies, and mark them up as Review structured data.

  • Content shows when it was last looked at

    Check X07

    Content shows when it was last looked at

    What it means if this fails

    Nothing on the site is dated, so a reader cannot tell whether any of it is still current.

    What you would do about it

    Show a published or updated date on each article.

Segment 9 of 11

Local SEO

What this segment is

Local SEO

Being found by somebody near you who could walk in, ring up, or book. The searches that end in “near me”, and the map results above the ordinary ones.

Why it matters

For a shop, a clinic, a restaurant or anyone who serves a town rather than the internet, this is most of the business. Somebody two streets away searching for what you sell either finds you with your hours and your address, or finds a competitor who published theirs.

What we check

Whether your pages say in machine-readable terms that you are a local business, whether they carry a postal address, your opening hours, a telephone number a phone can dial by tapping it, and a link to a map or directions.

What this score does not tell you

This scores what your own pages say. Your Google Business Profile, your map listing, and what customers say about you elsewhere are decided off your site and we do not see them.

100/1006 of 6 checks passed

Whether somebody searching nearby can find you, ring you and get to you.

Nothing to do here.

Six checks this site passed

  • The site says in machine terms that it is a local business

    Check N01

    The site says in machine terms that it is a local business

    What it means if this fails

    Nothing on the site tells a search engine this is a business with a place, so it is never a candidate for the map results that sit above the ordinary ones.

    What you would do about it

    Add a JSON-LD block to the home page with "@type" set to the kind of business this is — LocalBusiness, or a more specific one like Pharmacy, Restaurant or Dentist — carrying the name, the address, the telephone number and the opening hours.

  • There is a postal address a machine can read

    Check N02

    There is a postal address a machine can read

    What it means if this fails

    The address is not in the structured data, so a search engine has to guess it from the page text and often gets it wrong or ignores it.

    What you would do about it

    Add a "address" property to your business structured data, as a PostalAddress with streetAddress, addressLocality, postalCode and addressCountry filled in.

  • Opening hours are published where a machine can read them

    Check N03

    Opening hours are published where a machine can read them

    What it means if this fails

    Nowhere says when you are open in a form a search engine can use, so the result for your business cannot show whether somebody can come now.

    What you would do about it

    Add "openingHours" or "openingHoursSpecification" to your business structured data. The short form looks like "Mo-Fr 09:00-18:00", and it belongs on the page as text as well.

  • A telephone number can be dialled by tapping it

    Check N04

    A telephone number can be dialled by tapping it

    What it means if this fails

    The telephone number is written as text rather than as a link, so somebody reading on a phone has to memorise it and switch apps to ring you.

    What you would do about it

    Wrap the telephone number in a link: <a href="tel:+301234567890">. Keep the readable spacing in the visible text and put the digits with the country code in the href.

  • There is a way to get directions

    Check N05

    There is a way to get directions

    What it means if this fails

    Nothing on the site links to a map, so somebody who has decided to visit has to copy your address into another app and hope it resolves.

    What you would do about it

    Put a link to your business on Google Maps next to your address, on the contact page and in the footer. The share link from your own Maps listing is the one to use.

  • The site says which places it serves

    Check N06

    The site says which places it serves

    What it means if this fails

    Nothing says which town or area you cover, so a search for your trade in a nearby place has no reason to return you.

    What you would do about it

    Add "areaServed" to your business structured data listing the towns or the region you cover, and say the same thing in words on the page: a sentence naming the places you work in.

Segment 10 of 11

Programmatic SEO

What this segment is

Programmatic SEO

Programmatic SEO: sections built from a template, one page per topic, so a single piece of work covers hundreds of searches instead of one.

Why it matters

It is how a small site competes on the long tail of very specific searches. It is also easy to do badly, and a hundred near-identical thin pages is worse than not having them.

What we check

The shape of your sitemap and your addresses: whether a repeated section exists and whether it is large enough to be worth having.

What this score does not tell you

Whether a templated section is worth building for your market is a judgement about your business, not something a page can prove. This scores only whether one exists.

Not applicable

Whether you have pages built from a template to cover many searches at once.

Programmatic SEO is about sections built from a template, which starts to matter once a site runs to a few dozen pages. This one is smaller than that, so there is nothing here to score.

Segment 11 of 11

Off-Page SEO

What this segment is

Off-Page SEO

What your own pages say about your presence everywhere else: your profiles, your press, your reviews.

Why it matters

Search engines and assistants try to work out whether a real business stands behind a site. Claiming your own profiles is the part of that you control directly, and it costs nothing.

What we check

Whether you link to your own profiles elsewhere, whether your structured data claims them as the same business, whether you point at somewhere you can be reviewed, and whether outbound links credit their sources.

What this score does not tell you

We cannot see who links to you. Nothing in the response your site sends reveals that, so this scores the presence you declare, not the reputation you have.

71/1005 of 7 checks passed

What your own site says about your presence everywhere else.

2 remarks to fix here

What this score does not include. We do not count backlinks or press mentions. Nothing in the response your site sends reveals who links to you, so this scores only the off-site presence your own pages declare.

  1. There are no case studies, so nothing on the site shows the work rather than describing it

    Check F05

    The site publishes work it has done for customers

    What it means if this fails

    There are no case studies, so nothing on the site shows the work rather than describing it.

    What you would do about it

    Publish case studies or customer stories showing work already done.

    Severity

    medium

    This is not hurting you badly today, but it gets worse on its own as more people use your app, or it leaves you exposed if something else goes wrong.

    Why it matters

    Worth doing once the high ones are done. These are the findings that turn into high ones after a few good months of growth.

    What we found: no case study, customer story or testimonial page.

    Fix it yourself

    On harpergoods.com: Publish case studies or customer stories showing work already done. What we found: no case study, customer story or testimonial page.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

  2. Nothing points a visitor at a place they could read or leave an independent review

    Check F03

    The site points at somewhere it can be reviewed

    What it means if this fails

    Nothing points a visitor at a place they could read or leave an independent review.

    What you would do about it

    Link to wherever this business can be reviewed independently.

    Severity

    low

    Real, but small. Either the effect is minor at your current size, or it only shows up in narrow circumstances.

    Why it matters

    Fix it if it is quick and you are already in that file. Nothing bad happens if you leave it.

    What we found: no links to G2, Capterra, Trustpilot, Product Hunt, Yelp or Google reviews.

    Fix it yourself

    On harpergoods.com: Link to wherever this business can be reviewed independently. What we found: no links to G2, Capterra, Trustpilot, Product Hunt, Yelp or Google reviews.

    Paste this into whatever you built the site with. It names the page and what the result should be, so the builder does not have to guess.

Five checks this site passed

  • The site shows what customers say about it

    Check X06

    The site shows what customers say about it

    What it means if this fails

    There are no testimonials or reviews anywhere, so nothing but the site vouches for the site.

    What you would do about it

    Publish customer testimonials or case studies, and mark them up as Review structured data.

  • The site links to its own profiles elsewhere

    Check F01

    The site links to its own profiles elsewhere

    What it means if this fails

    The site links to no profile anywhere else, so nothing connects it to the business's presence online.

    What you would do about it

    Link the business's own profiles elsewhere from the site, in the footer.

  • Structured data claims those profiles as the same business

    Check F02

    Structured data claims those profiles as the same business

    What it means if this fails

    The site links to its profiles but never declares they are the same business, so search engines must guess.

    What you would do about it

    List those profile addresses in the structured data using sameAs, so search engines connect them to this business.

  • The site shows where it has been covered

    Check F04

    The site shows where it has been covered

    What it means if this fails

    There is no press or coverage page, so nothing on the site shows it has been written about elsewhere.

    What you would do about it

    Add a page collecting where the business has been written about.

  • Outbound links credit the sources they use

    Check F06

    Outbound links credit the sources they use

    What it means if this fails

    The site links out to nothing at all, which reads as a closed page rather than part of a subject.

    What you would do about it

    Link out to the sources and tools the content references, where it helps the reader.

Your site, your scores, same format.

Every score above is a count of checks passed, and every claim names one of your own pages and the line it came from. Nothing here is a prediction. You will not find a traffic forecast anywhere in it, because nothing a website sends could support one.