Audit Standard / 2026.2
Rule explorer: Audit Standard 2026.2
Every check that defines technical readiness in MaxiMarket Audit Standard 2026.2, exactly as the audit applies it. Open a rule to see what it checks, why it matters, how to fix it, where its authority comes from and how much it counts.
Superseded. This is an earlier Audit Standard version, kept unchanged so audits saved under it keep their meaning. New audits use the current Audit Standard 2026.4.
Guides by topic: technical SEO audit rules, AI readiness, structured data and ecommerce product data.
Authority levels
- A search engine documents it as required for a specific outcome, such as Google eligibility.
- Strongest external authority
- Defined by an open standard or vocabulary: HTML, WCAG, IETF RFCs, Schema.org, Sitemaps, Open Graph.
- Recommended in official platform documentation, such as Google Search Central or an AI platform.
- Widely accepted practice with a cited source, but no official requirement.
- MaxiMarket’s own advice. Never presented as a search engine or platform requirement.
- MaxiMarket methodology
Filter
Showing 27 rules and 0 observations.
Rules
Rules pass or fail. A failed rule becomes a finding in your report; scored rules also count toward the Technical Score.
Canonicalization
SEO-CANONICAL-003Canonical link is in the headDocumentWarning when failedWeight 2Technical SearchAI Discovery
- What this checks
- Whether every rel=canonical link element is inside the document head.
- Why it matters
- Google accepts rel=canonical only in the head section of the HTML.
- How to fix
- Move the canonical link element into <head>, before any content that ends the head.
- Expected
- All canonical link elements are in <head>.
- Applies to
- Pages with at least one rel=canonical link element.
- Authority
- Official search-engine requirement · RequiredGoogle canonicalization requirement.
- Technical Score
- Weight 2 of 3A canonical outside the head is ignored by Google.
- How MaxiMarket detects it
- Follows the HTML parsing rules for the head: it ends at </head>, <body>, or the first element or text that cannot appear in the head. Reports when a canonical link element appears after that point.
- Sources
- How to specify a canonical URL — Google Search Central, verified 2026-09-26
Links and discoverability
LINK-CRAWLABLE-001Navigation uses crawlable linksDocumentWarning when failedWeight 2Technical SearchAI Discovery
- What this checks
- Elements that carry a link destination crawlers cannot follow.
- Why it matters
- Google can only discover links that are <a> elements with an href attribute; destinations on other elements or in router attributes are not followed.
- How to fix
- Use <a href="..."> for every link, including links handled by a client-side router.
- Expected
- Links are <a> elements with an href.
- Applies to
- Every retrieved (available) page.
- Authority
- Official search-engine requirement · RequiredGoogle link crawlability requirement.
- Technical Score
- Weight 2 of 3Link destinations crawlers cannot follow hide pages from discovery.
- How MaxiMarket detects it
- Reports when an HTML element other than a, area, link or base has a non-empty href attribute (for example <span href="/page">), or an a element without href has a non-empty routerlink attribute. Links opened only by onclick or javascript: URLs are not counted, because their purpose cannot be determined. SVG and MathML content is excluded.
- Sources
- Link best practices for Google — Google Search Central, verified 2026-09-26
- Understand JavaScript SEO basics — Google Search Central, verified 2026-09-26
Entity and site identity
SEO-FAVICON-001Home page declares a faviconDocumentWarning when failedWeight 1Technical SearchAI DiscoveryMachine Readability
- What this checks
- A link element with rel icon, shortcut icon, apple-touch-icon or apple-touch-icon-precomposed in the head of the home page.
- Why it matters
- Google shows a favicon in search results only when the home page declares one this way.
- How to fix
- Add <link rel="icon" href="/favicon.ico"> (or another supported rel) to the head of the home page.
- Expected
- At least one such link with an href.
- Applies to
- Home pages (final URL path "/"); other pages are not applicable.
- Authority
- Official search-engine requirement · RequiredRequired for a favicon in Google Search results.
- Technical Score
- Weight 1 of 3Needed for a favicon in results; evaluated on the home page only.
- How MaxiMarket detects it
- The home page is the page whose final URL path is "/". Reports when its head contains no link element with a non-empty href and rel including icon, apple-touch-icon or apple-touch-icon-precomposed.
- Sources
- Define a favicon to show in search results — Google Search Central, verified 2026-09-26
SEO-FAVICON-002Favicon meets size and access requirementsDocumentWarning when failedWeight 1Technical SearchMachine Readability
- What this checks
- The first declared favicon: dimensions, shape and whether Googlebot-Image may crawl it.
- Why it matters
- Google shows a favicon only when it is square, at least 8x8 pixels and crawlable by Googlebot-Image.
- How to fix
- Use a square favicon of at least 48x48 pixels and allow Googlebot-Image to crawl it.
- Expected
- A square image of at least 8x8 pixels (more than 48x48 recommended) that robots.txt allows for Googlebot-Image.
- Applies to
- Home pages that declare a favicon.
- Authority
- Official search-engine requirement · RequiredRequired for a favicon in Google Search results.
- Technical Score
- Weight 1 of 3A favicon that does not meet the requirements is not shown.
- How MaxiMarket detects it
- One bounded request for the favicon (up to 256 KiB, same destination checks as the audit) and, for another origin, its robots.txt. Dimensions are read from PNG, GIF, JPEG, WebP, BMP and ICO headers (the largest ICO entry). Reports when the favicon returns 4xx, is not square, is smaller than 8x8, or robots.txt disallows it for Googlebot-Image (falling back to Googlebot groups, then *). SVG favicons, unreadable formats and unavailable responses are not evaluated.
- Sources
- Define a favicon to show in search results — Google Search Central, verified 2026-09-26
STRUCTURED-WEBSITE-001Home page declares WebSite nameStructured dataWarning when failedWeight 1Technical SearchAI DiscoveryMachine Readability
- What this checks
- WebSite structured data with name and url on the home page.
- Why it matters
- Google's site-name feature requires WebSite structured data with name and url on the home page to express a preferred site name.
- How to fix
- Add a WebSite entity with name and url to the home page.
- Expected
- A top-level WebSite entity with both properties.
- Applies to
- Home pages (final URL path "/"); other pages are not applicable.
- Authority
- Official search-engine requirement · RequiredRequired for expressing a site-name preference in Google Search.
- Technical Score
- Weight 1 of 3Needed only to express a site-name preference; the feature itself is optional.
- How MaxiMarket detects it
- The home page is the page whose final URL path is "/". Reports when its inspected JSON-LD has no top-level WebSite entity with a non-empty name and url. Not evaluated when JSON-LD inspection hit its limits.
- Sources
- Provide a site name to Google Search — Google Search Central, verified 2026-09-26
STRUCTURED-WEBSITE-002WebSite url is the canonical home pageStructured dataWarning when failedWeight 1Technical SearchAI DiscoveryMachine Readability
- What this checks
- The url of the home page's WebSite entity.
- Why it matters
- Google requires the WebSite url to be the canonical URL of the home page.
- How to fix
- Set WebSite url to the canonical home page URL.
- Expected
- The canonical home page URL.
- Applies to
- Home pages with a top-level WebSite entity that declares url.
- Authority
- Official search-engine requirement · RequiredRequired for expressing a site-name preference in Google Search.
- Technical Score
- Weight 1 of 3A wrong WebSite url breaks the site-name declaration.
- How MaxiMarket detects it
- The home page is the page whose final URL path is "/". Resolves each top-level WebSite url against the final URL and reports when it differs from the canonical home URL (the declared canonical, or the final URL when none is declared), ignoring fragments. Without a declared canonical, a final URL with a query is not known to be canonical, so a different WebSite url is not evaluated.
- Sources
- Provide a site name to Google Search — Google Search Central, verified 2026-09-26
STRUCTURED-BREADCRUMB-001Breadcrumb items have required propertiesStructured dataWarning when failedWeight 2Technical SearchAI DiscoveryMachine Readability
- What this checks
- The ListItems of each BreadcrumbList: how many, and their position, name and item.
- Why it matters
- Google requires these properties for breadcrumb rich results.
- How to fix
- Give each ListItem a position, a name and an item URL (the last one may omit item), with at least two ListItems.
- Expected
- At least two ListItems, each with position and name (on the ListItem or on the item Thing), and item on all but the last.
- Applies to
- Pages with at least one BreadcrumbList entity.
- Authority
- Official search-engine requirement · RequiredRequired for Google breadcrumb rich results.
- Technical Score
- Weight 2 of 3Required properties for breadcrumb rich results.
- How MaxiMarket detects it
- Checks BreadcrumbList entities in the inspected JSON-LD. Reports when itemListElement has fewer than two ListItems, or a ListItem lacks a position, a name (on the ListItem or its item object), or an item (except the ListItem with the highest position).
- Sources
- Breadcrumb structured data — Google Search Central, verified 2026-09-26
HTTP and retrieval
HTTP-STATUS-001Audited URL returns HTTP 200IndexingWarning when failedWeight 3Technical SearchAI Discovery
- What this checks
- The HTTP status of the audited URL after redirects.
- Why it matters
- Google lists an HTTP 200 response as a minimum technical requirement for Search; 4xx content is treated as not existing.
- How to fix
- Serve the page with HTTP 200, or fix the URL if the page moved or no longer exists.
- Expected
- HTTP 200.
- Applies to
- Every retrieved (available) page. Blocked and unavailable results are reported by page access instead.
- Authority
- Official search-engine requirement · RequiredGoogle Search minimum technical requirement.
- Technical Score
- Weight 3 of 3A page that does not return HTTP 200 is not processed as content; every other check describes an error page.
- How MaxiMarket detects it
- Reports when the final HTTP status of an available page is not 200. Server errors and blocked responses are page-access outcomes (unavailable, blocked) with no findings.
- Sources
- Google Search technical requirements — Google Search Central, verified 2026-09-26
- How HTTP status codes and network errors affect Google Search — Google Search Central, verified 2026-09-26
Crawl control and crawler access
CRAWL-ROBOTSTXT-002robots.txt does not return a server errorIndexingWarning when failedWeight 3Technical SearchAI Discovery
- What this checks
- The HTTP status of /robots.txt at the final origin.
- Why it matters
- When robots.txt answers with a server error, Google stops crawling the site for 12 hours and then relies on cached rules for up to 30 days.
- How to fix
- Make /robots.txt return 200 with its rules, or 404 if the site has none.
- Expected
- 200, or 404/410 when there is intentionally no robots.txt; never 5xx.
- Applies to
- Every audited origin whose robots.txt request received an HTTP response; network failures, timeouts and throttling (429) are not evaluated.
- Authority
- Official search-engine requirement · RequiredGoogle Search robots.txt handling.
- Technical Score
- Weight 3 of 3A robots.txt server error makes Google pause crawling of the whole site.
- How MaxiMarket detects it
- Reports when the robots.txt request answered 5xx (after at most 5 same-origin redirects). Timeouts, network failures, throttling (429) and other unusable answers are not evaluated.
- Sources
- How Google interprets the robots.txt specification — Google Search Central, verified 2026-09-26
CRAWL-ACCESS-001Audited URL is not disallowed for GooglebotIndexingWarning when failedNot scoredTechnical SearchAI Discovery
- What this checks
- RFC 9309 evaluation of robots.txt against the audited URL for the Googlebot product token.
- Why it matters
- Google lists that Googlebot is not blocked among its technical requirements; a disallowed page cannot be crawled, and Google AI features draw on the same index.
- How to fix
- Remove or narrow the disallow rules that match this URL for Googlebot (or *), unless the exclusion is intended.
- Expected
- Allowed, unless excluding the page from Google Search is intended.
- Applies to
- Every retrieved page whose origin returned robots.txt or 404/410 for it; not evaluated when robots.txt is unavailable, returns a server error or exceeds the inspection limits.
- Authority
- Official search-engine requirement · RequiredGoogle Search technical requirement.
- Technical Score
- Not scoredBlocking Googlebot can be intentional, like noindex; MaxiMarket cannot infer intent, so it is reported as a finding but not scored.
- How MaxiMarket detects it
- One RFC 9309 matcher: the groups naming googlebot (case-insensitive) are combined, otherwise the * groups; the longest matching allow or disallow path wins, allow on ties, with * and $ wildcards. 404/410 robots.txt allows everything. Not evaluated when robots.txt is unavailable, answers 5xx, or exceeds the inspection limits.
- Sources
- Google Search technical requirements — Google Search Central, verified 2026-09-26
- How Google interprets the robots.txt specification — Google Search Central, verified 2026-09-26
- RFC 9309: Robots Exclusion Protocol — IETF, verified 2026-09-26
Indexing and snippet directives
INDEX-NOINDEX-001Indexing exclusion for all crawlersIndexingInfo when failedNot scoredTechnical SearchAI Discovery
- What this checks
- Whether a robots meta element named robots, or an X-Robots-Tag directive without a user-agent prefix, declares noindex or none.
- Why it matters
- When Google sees a noindex rule it drops the page entirely from Google Search results. Excluding a page is often intentional, so this is reported for review with info severity and is never scored. Crawler-specific rules are reported separately as an observation.
- How to fix
- No change is needed if the page is intentionally kept out of search. If it is intended to appear in search results, remove noindex or none from the robots meta tag and the X-Robots-Tag header.
- Expected
- Pages intended to appear in search results declare no noindex or none rule for all crawlers; pages intentionally kept out of search may declare one.
- Applies to
- Every retrieved page.
- Authority
- Official search-engine requirement · RequiredRequired for the page to remain in Google Search results; intentional exclusion is legitimate.
- Technical Score
- Not scoredExcluding a page from search is often intentional (carts, account pages); intent cannot be inferred.
- How MaxiMarket detects it
- Reports when meta name="robots" or an unprefixed X-Robots-Tag directive contains noindex or none. Crawler-named meta elements (for example googlebot) and user-agent-prefixed X-Robots-Tag directives are observation INDEX-NOINDEX-002, not this rule.
- Sources
- Block search indexing with noindex — Google Search Central, verified 2026-09-26
- Robots meta tag, data-nosnippet and X-Robots-Tag specifications — Google Search Central, verified 2026-09-26
- AI features and your website — Google Search Central, verified 2026-09-26
INDEX-SNIPPET-002data-nosnippet is used only on supported elementsIndexingWarning when failedWeight 1Technical SearchAI Discovery
- What this checks
- The elements that carry a data-nosnippet attribute.
- Why it matters
- Google honors data-nosnippet only on span, div and section elements; elsewhere the text stays eligible for snippets and AI features.
- How to fix
- Move data-nosnippet to a span, div or section that wraps the text.
- Expected
- Only span, div and section elements carry data-nosnippet.
- Applies to
- Pages with at least one element carrying data-nosnippet.
- Authority
- Official search-engine requirement · RequiredGoogle Search snippet control.
- Technical Score
- Weight 1 of 3Misplaced data-nosnippet silently fails, but only affects snippet control of the marked text.
- How MaxiMarket detects it
- Reports when an HTML element other than span, div or section has a data-nosnippet attribute.
- Sources
- Robots meta tag, data-nosnippet and X-Robots-Tag specifications — Google Search Central, verified 2026-09-26
International (hreflang)
INTL-HREFLANG-001hreflang declarations are usableIndexingWarning when failedWeight 2Technical Search
- What this checks
- Whether each hreflang alternate link has a language code in Google's supported form and a fully qualified http(s) URL.
- Why it matters
- Google supports an ISO 639-1 language code with an optional ISO 3166-1 Alpha 2 region and ignores unsupported values; alternate URLs must be fully qualified.
- How to fix
- Correct the hreflang value (for example "en" or "en-GB") and use an absolute http(s) URL for each alternate.
- Expected
- Every hreflang value is x-default or an ISO 639-1 language with an optional ISO 15924 script and optional ISO 3166-1 alpha-2 region, and every alternate URL is absolute.
- Applies to
- Pages with at least one hreflang declaration; absence of hreflang is never a failure.
- Authority
- Official search-engine requirement · RequiredRequired for Google Search to use the hreflang annotation; unsupported parts are ignored.
- Technical Score
- Weight 2 of 3Unusable hreflang entries are ignored by Google.
- How MaxiMarket detects it
- Reports when at least one inspected alternate link has an empty or malformed language tag, a tag outside the supported form (for example a three-letter language or a numeric region such as es-419), an unusable URL, or a relative URL (including scheme-relative //host URLs). Codes are checked for form only, not against the ISO registries, so a reserved region such as UK is not detected.
- Sources
- Tell Google about localized versions of your page — Google Search Central, verified 2026-09-26
INTL-HREFLANG-004hreflang set includes the page itselfIndexingWarning when failedWeight 2Technical Search
- What this checks
- Whether one of the page's hreflang alternates points to the page.
- Why it matters
- Google requires each language version to list itself as well as all other versions.
- How to fix
- Add an alternate link with the page's own language (or x-default) pointing to its own URL.
- Expected
- The page lists itself among its hreflang alternates.
- Applies to
- Pages with at least one usable hreflang declaration; absence of hreflang is never a failure.
- Authority
- Official search-engine requirement · RequiredGoogle hreflang requirement.
- Technical Score
- Weight 2 of 3Google requires each version to list itself.
- How MaxiMarket detects it
- Reports when inspection of the hreflang links is complete and no usable alternate resolves, ignoring fragments, to the final URL or to the declared canonical URL.
- Sources
- Tell Google about localized versions of your page — Google Search Central, verified 2026-09-26
INTL-HREFLANG-005hreflang alternates link back (return links)IndexingWarning when failedWeight 2Technical Search
- What this checks
- Whether each alternate page declares this page among its own hreflang alternates.
- Why it matters
- Google ignores hreflang annotations when two pages do not point to each other.
- How to fix
- Add hreflang links on every alternate page that point back to this page.
- Expected
- Every alternate links back to this page.
- Applies to
- Pages with at least one usable hreflang alternate that points to another URL.
- Authority
- Official search-engine requirement · RequiredGoogle hreflang requirement.
- Technical Score
- Weight 2 of 3Without return links Google ignores the annotations.
- How MaxiMarket detects it
- Fetches up to 5 distinct alternate URLs other than this page (same destination checks as the audit, 512 KiB and 5 seconds each). Reports when an alternate answers 4xx, or answers 200 with HTML whose hreflang links (resolved, fragments ignored) include neither this page's final URL nor its canonical. Alternates that were not fetched or could not be retrieved leave the rule not evaluated unless another alternate failed.
- Sources
- Tell Google about localized versions of your page — Google Search Central, verified 2026-09-26
Ratings and reviews
STRUCTURED-RATING-001AggregateRating has required propertiesStructured dataWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- ratingValue and ratingCount or reviewCount on each AggregateRating.
- Why it matters
- Google requires these properties for review snippets.
- How to fix
- Add ratingValue and ratingCount (or reviewCount) to each AggregateRating.
- Expected
- Every AggregateRating has ratingValue and at least one of ratingCount or reviewCount.
- Applies to
- Pages with at least one AggregateRating entity.
- Authority
- Official search-engine requirement · RequiredRequired for Google review snippets.
- Technical Score
- Weight 2 of 3Required properties for review snippets.
- How MaxiMarket detects it
- Checks AggregateRating entities (and subtypes) found in the inspected JSON-LD. Reports when one lacks a non-empty ratingValue or has neither ratingCount nor reviewCount.
- Sources
- Review snippet structured data — Google Search Central, verified 2026-09-26
STRUCTURED-RATING-002Review has required propertiesStructured dataWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- author, reviewRating.ratingValue and, for reviews not nested in the reviewed item, itemReviewed.
- Why it matters
- Google requires these properties for review snippets.
- How to fix
- Add author, reviewRating.ratingValue and (for standalone reviews) itemReviewed to each Review.
- Expected
- Every Review has an author and a reviewRating with ratingValue; top-level reviews also name itemReviewed.
- Applies to
- Pages with at least one Review entity.
- Authority
- Official search-engine requirement · RequiredRequired for Google review snippets.
- Technical Score
- Weight 2 of 3Required properties for review snippets. Excluded from the score when STRUCTURED-AUTHOR-001 fails, because a nameless author can fail both checks.
- How MaxiMarket detects it
- Checks Review entities (and subtypes) found in the inspected JSON-LD. Reports when one lacks author, lacks a reviewRating with a non-empty ratingValue, or is a top-level entity without itemReviewed.
- Sources
- Review snippet structured data — Google Search Central, verified 2026-09-26
Articles, authorship and dates
STRUCTURED-PAYWALL-001Declared paywall markup is completeStructured dataWarning when failedWeight 2Technical SearchAI DiscoveryMachine Readability
- What this checks
- For entities with isAccessibleForFree false: hasPart WebPageElement parts with isAccessibleForFree false and a class-only cssSelector.
- Why it matters
- Google uses paywall markup to tell paywalled content apart from cloaking; it names isAccessibleForFree, hasPart WebPageElement and a class cssSelector.
- How to fix
- Add hasPart with a WebPageElement whose isAccessibleForFree is false and whose cssSelector is a class selector, such as .paywall.
- Expected
- At least one such part, and every declared part uses a class selector.
- Applies to
- Pages whose structured data declares isAccessibleForFree false on an entity.
- Authority
- Official search-engine requirement · RequiredRequired by Google for paywalled content markup.
- Technical Score
- Weight 2 of 3Incomplete paywall markup risks paywalled content being treated as cloaking.
- How MaxiMarket detects it
- Reports when an entity declares isAccessibleForFree false (boolean or the string "false") and has no hasPart WebPageElement (or subtype) with isAccessibleForFree false and a cssSelector made only of class selectors, or declares a WebPageElement part whose cssSelector is not class-only. Whether content is actually gated is not observable.
- Sources
- Subscription and paywalled content structured data — Google Search Central, verified 2026-09-26
- Spam policies for Google web search — Google Search Central, verified 2026-09-26
Product and Offer data
STRUCTURED-PRODUCT-001Product has a nameProductWarning when failedWeight 3Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Product entity has a usable name.
- Why it matters
- Google lists name as required for both Product snippets and merchant listings; items missing required properties are not eligible for rich results.
- How to fix
- Add a "name" property with the product name to each Product entity.
- Expected
- Every Product entity has a non-empty name.
- Applies to
- Pages with at least one fully inspected Product entity; not applicable otherwise.
- Authority
- Official search-engine requirement · RequiredRequired for Google Product snippet and merchant listing rich result eligibility.
- Technical Score
- Weight 3 of 3A Product name is required for every product rich result.
- How MaxiMarket detects it
- Reports when at least one fully inspected Product entity (at most 20) has no non-empty string name.
- Sources
- Product snippet structured data — Google Search Central, verified 2026-09-26
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- General structured data guidelines — Google Search Central, verified 2026-09-26
STRUCTURED-PRODUCT-002Product has an offer (merchant listings)ProductWarning when failedNot scoredTechnical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Product entity has a recognizable Offer or AggregateOffer.
- Why it matters
- Google requires offers for merchant listings. The separate Product-snippet requirement (offers, review or aggregate rating) is STRUCTURED-PRODUCT-008.
- How to fix
- Add an "offers" property with an Offer (or AggregateOffer for multiple sellers) to each Product entity.
- Expected
- Every Product entity has an offers property containing an Offer or AggregateOffer.
- Applies to
- Pages with at least one fully inspected Product entity; not applicable otherwise. Merchant-listing requirement.
- Authority
- Official search-engine requirement · RequiredRequired for Google merchant listing eligibility.
- Technical Score
- Not scoredMerchant listings apply only to pages where the product can be bought, which MaxiMarket cannot infer; Product-snippet eligibility is scored by STRUCTURED-PRODUCT-008.
- How MaxiMarket detects it
- Reports when at least one fully inspected Product entity has no offers value whose @type is Offer or AggregateOffer. Reviews and ratings are not considered.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- General structured data guidelines — Google Search Central, verified 2026-09-26
STRUCTURED-PRODUCT-008Product has an offer, review or aggregate rating (Product snippets)ProductWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Product entity has at least one of offers, review or aggregateRating.
- Why it matters
- Google requires one of offers, review or aggregateRating for Product snippets; items missing required properties are not eligible for rich results.
- How to fix
- Add an "offers" Offer, a "review" Review or an "aggregateRating" AggregateRating to each Product entity.
- Expected
- Every Product entity has an Offer or AggregateOffer, a Review, or an AggregateRating.
- Applies to
- Pages with at least one fully inspected Product entity; not applicable otherwise. Product-snippet requirement.
- Authority
- Official search-engine requirement · RequiredRequired for Google Product snippet eligibility.
- Technical Score
- Weight 2 of 3One of offers, review or rating is required for Product snippets.
- How MaxiMarket detects it
- Reports when at least one fully inspected Product entity (at most 20) has none of: an offers value typed Offer or AggregateOffer, a review object (typed Review or untyped), or an aggregateRating object (typed AggregateRating or untyped).
- Sources
- Product snippet structured data — Google Search Central, verified 2026-09-26
- General structured data guidelines — Google Search Central, verified 2026-09-26
STRUCTURED-PRODUCT-003Product has an imageProductWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Product entity has a usable image.
- Why it matters
- Google lists image as required for merchant listings.
- How to fix
- Add an "image" property with the URL of a product photo to each Product entity.
- Expected
- Every Product entity has an image URL or ImageObject.
- Applies to
- Pages with at least one fully inspected Product entity; not applicable otherwise.
- Authority
- Official search-engine requirement · RequiredRequired for Google merchant listing eligibility.
- Technical Score
- Weight 2 of 3An image is required for merchant listings.
- How MaxiMarket detects it
- Reports when at least one fully inspected Product entity has no non-empty image string, array item or ImageObject. Image URLs are not fetched or validated.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- General structured data guidelines — Google Search Central, verified 2026-09-26
STRUCTURED-PRODUCT-009ProductGroup declares a name and a group identifierProductWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- ProductGroup name, and a product group identifier as productGroupID or as inProductGroupWithID on its variants.
- Why it matters
- Google requires a ProductGroup name, and each product group needs a unique ID given by productGroupID or by inProductGroupWithID on its variants.
- How to fix
- Add name and productGroupID to the ProductGroup.
- Expected
- A name and a group identifier.
- Applies to
- Pages with at least one ProductGroup entity.
- Authority
- Official search-engine requirement · RequiredRequired for Google product variant support.
- Technical Score
- Weight 2 of 3A ProductGroup without a name or group ID is not usable for variants.
- How MaxiMarket detects it
- Checks ProductGroup entities in the inspected JSON-LD. Reports when one has no non-empty name, or has no productGroupID while none of its variants (hasVariant Products, or Products whose isVariantOf is the group) declares inProductGroupWithID.
- Sources
- Product variant structured data — Google Search Central, verified 2026-09-26
STRUCTURED-PRODUCT-010Variant group identifiers matchProductWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- inProductGroupWithID of each variant against productGroupID of its ProductGroup.
- Why it matters
- Google requires the two identifiers to match when both are provided.
- How to fix
- Use the same identifier in productGroupID and in every variant's inProductGroupWithID.
- Expected
- Equal values.
- Applies to
- Pages where a ProductGroup declares productGroupID and at least one of its variants declares inProductGroupWithID.
- Authority
- Official search-engine requirement · RequiredRequired for Google product variant support.
- Technical Score
- Weight 2 of 3Mismatched group identifiers break the variant relationship.
- How MaxiMarket detects it
- For ProductGroups with productGroupID, reports when a linked variant (hasVariant, or isVariantOf the group) declares a different inProductGroupWithID (compared after trimming whitespace).
- Sources
- Product variant structured data — Google Search Central, verified 2026-09-26
STRUCTURED-OFFER-001Offer has a priceOfferWarning when failedWeight 3Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Offer has a price or a priceSpecification price.
- Why it matters
- Google lists price (or priceSpecification.price) as required on Offer for both Product snippets and merchant listings.
- How to fix
- Add a "price" property with the current offer price to each Offer.
- Expected
- Every Offer has a price (or priceSpecification.price).
- Applies to
- Pages with at least one inspected Offer linked from a fully inspected Product.
- Authority
- Official search-engine requirement · RequiredRequired for Google Product snippet and merchant listing eligibility.
- Technical Score
- Weight 3 of 3A price is required for every Offer.
- How MaxiMarket detects it
- Reports when at least one inspected Offer linked from a fully inspected Product has neither a non-empty direct price nor a priceSpecification (object or array) with a non-empty price.
- Sources
- Product snippet structured data — Google Search Central, verified 2026-09-26
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- General structured data guidelines — Google Search Central, verified 2026-09-26
STRUCTURED-OFFER-002AggregateOffer has a lowPriceOfferWarning when failedWeight 3Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected AggregateOffer has a direct lowPrice.
- Why it matters
- Google lists lowPrice as required on AggregateOffer for Product snippets.
- How to fix
- Add a "lowPrice" property with the lowest available offer price to each AggregateOffer.
- Expected
- Every AggregateOffer has a lowPrice.
- Applies to
- Pages with at least one inspected AggregateOffer linked from a fully inspected Product.
- Authority
- Official search-engine requirement · RequiredRequired for Google Product snippet eligibility when AggregateOffer is used; merchant listings require Offer instead.
- Technical Score
- Weight 3 of 3lowPrice is the required price of an AggregateOffer.
- How MaxiMarket detects it
- Reports when at least one inspected AggregateOffer linked from a fully inspected Product has no non-empty direct lowPrice.
- Sources
- Product snippet structured data — Google Search Central, verified 2026-09-26
STRUCTURED-OFFER-003Offer states its price currencyOfferWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Offer or AggregateOffer states a valid ISO 4217 currency code.
- Why it matters
- Google requires priceCurrency on Offer for merchant listings and on AggregateOffer for Product snippets; for Offer in Product snippets it is recommended.
- How to fix
- Add a "priceCurrency" property with the ISO 4217 currency code, such as "EUR", to each Offer and AggregateOffer.
- Expected
- Every Offer and AggregateOffer has a priceCurrency that is a current ISO 4217 alphabetic code, such as EUR.
- Applies to
- Pages with at least one inspected Offer or AggregateOffer linked from a fully inspected Product.
- Authority
- Official search-engine requirement · RequiredRequired for Google merchant listings (Offer) and Product snippets (AggregateOffer); recommended for Offer in Product snippets.
- Technical Score
- Weight 2 of 3A valid currency is required to interpret the price.
- How MaxiMarket detects it
- Reports when at least one inspected Offer or AggregateOffer linked from a fully inspected Product has no priceCurrency that exactly matches an alphabetic code in ISO 4217 List One (the dated copy recorded in the audit package). For Offer, priceSpecification.priceCurrency is also accepted. Matching is case-sensitive after trimming whitespace.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- Product snippet structured data — Google Search Central, verified 2026-09-26
- Schema.org Offer — Schema.org, verified 2026-09-26
- ISO 4217 currency code lists — SIX (ISO 4217 Maintenance Agency), verified 2026-09-26