Audit Standard / 2026.6
Rule explorer: Audit Standard 2026.6
Every check that defines technical readiness in MaxiMarket Audit Standard 2026.6, 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.
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 28 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.
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
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-004Product has a product identifierProductWarning when failedWeight 1Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Product entity has a recognized product identifier: GTIN, MPN, SKU or ISBN.
- Why it matters
- Google recommends GTIN, MPN or SKU identifiers for merchant listings to identify the product.
- How to fix
- Add the applicable identifier, such as "gtin13", "mpn" or "sku", to each Product entity.
- Expected
- Every Product entity has a GTIN, MPN, SKU or ISBN.
- Applies to
- Pages with at least one fully inspected Product entity; not applicable otherwise.
- Authority
- Official platform recommendation · RecommendedGoogle recommendation for merchant listings.
- Technical Score
- Weight 1 of 3Identifiers are recommended, not required.
- How MaxiMarket detects it
- Reports when at least one fully inspected Product entity has none of sku, gtin, gtin8, gtin12, gtin13, gtin14, isbn or mpn with a non-empty value. Identifier formats and check digits are not validated.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- Schema.org Product — Schema.org, verified 2026-09-26
STRUCTURED-PRODUCT-005Product declares a brandProductInfo when failedWeight 1Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Product entity has a brand with a name.
- Why it matters
- Google recommends brand for merchant listings; it identifies the product's maker.
- How to fix
- Add brand, for example {"@type": "Brand", "name": "…"}.
- Expected
- Every Product has a brand name.
- Applies to
- Pages with at least one fully inspected Product entity; not applicable otherwise.
- Authority
- Official platform recommendation · RecommendedFully inspected Product entities (at most 20 per page).
- Technical Score
- Weight 1 of 3Brand is a recommended property.
- How MaxiMarket detects it
- Reports when a fully inspected Product entity has no brand that is a non-empty string or an object with a non-empty name.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- Schema.org Product — Schema.org, verified 2026-09-26
STRUCTURED-PRODUCT-006Product has a descriptionProductInfo when failedWeight 1Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Product entity has a description.
- Why it matters
- Google recommends a description for merchant listings.
- How to fix
- Add a description to each Product.
- Expected
- Every Product has a non-empty description.
- Applies to
- Pages with at least one fully inspected Product entity; not applicable otherwise.
- Authority
- Official platform recommendation · RecommendedFully inspected Product entities (at most 20 per page).
- Technical Score
- Weight 1 of 3Description is a recommended property.
- How MaxiMarket detects it
- Reports when a fully inspected Product entity has no non-empty description string.
- Sources
- Merchant listing structured data — 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
STRUCTURED-OFFER-004Offer states its availabilityOfferWarning when failedWeight 1Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- Whether each inspected Offer states a valid Schema.org availability value.
- Why it matters
- Google recommends availability on Offer for Product snippets and merchant listings.
- How to fix
- Add an "availability" property with a Schema.org ItemAvailability value to each Offer.
- Expected
- Every Offer has an availability that is a Schema.org ItemAvailability value, such as https://schema.org/InStock.
- Applies to
- Pages with at least one inspected Offer linked from a fully inspected Product.
- Authority
- Official platform recommendation · RecommendedGoogle recommendation for Product snippets and merchant listings.
- Technical Score
- Weight 1 of 3Availability is recommended.
- How MaxiMarket detects it
- Reports when at least one inspected Offer linked from a fully inspected Product has no availability naming an ItemAvailability member, either as a schema.org URL, a bare member name or an @id reference. AggregateOffer is not checked.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- Schema.org Offer — Schema.org, verified 2026-09-26
- Schema.org ItemAvailability — Schema.org, verified 2026-09-26
STRUCTURED-OFFER-006Offer price is machine-readableOfferWarning when failedWeight 2Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- The format of Offer price and priceSpecification.price values, and AggregateOffer lowPrice and highPrice.
- Why it matters
- Schema.org asks for "." as the decimal separator and for the currency in priceCurrency, not in the price.
- How to fix
- Write prices such as 1299.00, without currency symbols or thousands separators.
- Expected
- A number, or a string of digits with an optional "." decimal part.
- Applies to
- Pages with at least one inspected Offer or AggregateOffer price value linked from a fully inspected Product.
- Authority
- Open standard / Schema.org · RecommendedSchema.org Offer usage guidance.
- Technical Score
- Weight 2 of 3A price that is not machine-readable cannot be interpreted reliably.
- How MaxiMarket detects it
- Reports when an inspected price value (linked from a fully inspected Product) is neither a finite non-negative JSON number nor a string of digits with an optional "." and digits (surrounding whitespace ignored). Missing prices are STRUCTURED-OFFER-001 and -002.
- Sources
- Schema.org Offer — Schema.org, verified 2026-09-26
STRUCTURED-OFFER-007Offer declares item conditionOfferInfo when failedWeight 1Technical SearchCommerceMachine Readability
- What this checks
- itemCondition on each inspected Offer.
- Why it matters
- Google recommends itemCondition for merchant listings.
- How to fix
- Add itemCondition, for example https://schema.org/NewCondition.
- Expected
- An OfferItemCondition value: NewCondition, UsedCondition, RefurbishedCondition or DamagedCondition.
- Applies to
- Pages with at least one inspected Offer linked from a fully inspected Product.
- Authority
- Official platform recommendation · RecommendedGoogle merchant listing recommendation.
- Technical Score
- Weight 1 of 3Item condition is recommended.
- How MaxiMarket detects it
- Reports when an inspected Offer has no itemCondition naming an OfferItemCondition member (as a schema.org URL, a bare name or an @id reference). AggregateOffer is not checked.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- Schema.org Offer — Schema.org, verified 2026-09-26
STRUCTURED-OFFER-008priceValidUntil is not in the pastOfferWarning when failedWeight 1Technical SearchAI DiscoveryCommerceMachine Readability
- What this checks
- priceValidUntil of each inspected Offer against the audit time.
- Why it matters
- After priceValidUntil the price is by definition no longer available, so the offer information is stale.
- How to fix
- Update or remove priceValidUntil.
- Expected
- Absent, or not yet passed.
- Applies to
- Pages with at least one inspected Offer declaring priceValidUntil.
- Authority
- Open standard / Schema.org · RecommendedSchema.org Offer definition; Google merchant listing recommendation.
- Technical Score
- Weight 1 of 3An expired priceValidUntil makes offer data stale.
- How MaxiMarket detects it
- Reports when an ISO 8601 priceValidUntil has passed in every time zone at the audit time (a date is valid through its whole day). Unparseable values are not evaluated.
- Sources
- Schema.org Offer — Schema.org, verified 2026-09-26
- Merchant listing structured data — Google Search Central, verified 2026-09-26
STRUCTURED-OFFER-009Offer declares shipping detailsOfferInfo when failedNot scoredTechnical SearchCommerceMachine Readability
- What this checks
- shippingDetails on each inspected Offer, or a shipping policy (hasShippingService) on an Organization on the page.
- Why it matters
- Google recommends shipping details for merchant listings; they can also come from Merchant Center or an Organization-level policy.
- How to fix
- Add shippingDetails to the Offer, or an Organization-level shipping policy.
- Expected
- Shipping details are declared.
- Applies to
- Pages with at least one inspected Offer linked from a fully inspected Product.
- Authority
- Official platform recommendation · RecommendedGoogle merchant listing recommendation.
- Technical Score
- Not scoredShipping can be configured in Merchant Center or on another page, so its absence here is not reliably a defect.
- How MaxiMarket detects it
- Reports when an inspected Offer has no shippingDetails value and no entity on the page typed Organization (or subtype) declares hasShippingService. Settings configured only in Merchant Center or on another page are not visible.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- Organization structured data — Google Search Central, verified 2026-09-26
STRUCTURED-OFFER-010Return policy is declaredOfferInfo when failedNot scoredTechnical SearchCommerceMachine Readability
- What this checks
- hasMerchantReturnPolicy on each inspected Offer, or on an Organization on the page.
- Why it matters
- Google recommends a return policy for merchant listings; it can also come from Merchant Center or an Organization-level policy.
- How to fix
- Add hasMerchantReturnPolicy to the Offer or the Organization.
- Expected
- A return policy is declared.
- Applies to
- Pages with at least one inspected Offer linked from a fully inspected Product.
- Authority
- Official platform recommendation · RecommendedGoogle merchant listing recommendation.
- Technical Score
- Not scoredReturn policies can be configured in Merchant Center or on another page, so their absence here is not reliably a defect.
- How MaxiMarket detects it
- Reports when an inspected Offer has no hasMerchantReturnPolicy value and no entity on the page typed Organization (or subtype) declares one. Policies configured only in Merchant Center or on another page are not visible.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-09-26
- Organization structured data — Google Search Central, verified 2026-09-26
STRUCTURED-OFFER-012AggregateOffer states its price rangeOfferInfo when failedWeight 1Technical SearchCommerceMachine Readability
- What this checks
- highPrice and offerCount on each inspected AggregateOffer.
- Why it matters
- Google recommends highPrice and offerCount for AggregateOffer in Product snippets.
- How to fix
- Add highPrice and offerCount to the AggregateOffer.
- Expected
- Both present.
- Applies to
- Pages with at least one inspected AggregateOffer linked from a fully inspected Product.
- Authority
- Official platform recommendation · RecommendedGoogle Product snippet recommendation.
- Technical Score
- Weight 1 of 3highPrice and offerCount are recommended.
- How MaxiMarket detects it
- Reports when an inspected AggregateOffer lacks a usable highPrice or offerCount.
- Sources
- Product snippet structured data — Google Search Central, verified 2026-09-26
STRUCTURED-OFFER-014Price specifications are not ignoredOfferWarning when failedWeight 1Technical SearchCommerceMachine Readability
- What this checks
- For each Offer listed under a Product: whether a priceSpecification declares both priceType and validForMemberTier.
- Why it matters
- Google ignores a price specification that declares both priceType and validForMemberTier, so that price is not used at all. The markup can still be valid Schema.org.
- How to fix
- Split the price specification named in the finding: keep priceType (StrikethroughPrice) on the original price, and validForMemberTier on the member price, never both on one specification. Use only prices the page really offers.
- Expected
- A strikethrough price uses priceType only, and a member price uses validForMemberTier only.
- Applies to
- Offers of a Product whose priceSpecification declares priceType or validForMemberTier. Not applicable otherwise; not evaluated when JSON-LD was cut at the inspection limits or did not parse, an offer is an unresolved @id reference, required rendering failed, or only Microdata or RDFa could declare it.
- Authority
- Official search-engine requirement · RequiredGoogle merchant listings: member prices cannot have a priceType, and a specification with both is ignored (G-MERCHANT).
- Technical Score
- Weight 1 of 3Conditional feature requirement: weight 1 when applicable, as in the 2026.5 method for conditional rich-result rules. Pages that do not declare it are never affected.
- How MaxiMarket detects it
- Entity-level check over the bounded JSON-LD graph: the priceSpecification entries (objects or resolved @id references) of Offers listed under a Product. Incomplete or unparsable JSON-LD, unresolved required @id references, failed required rendering and unevaluated Microdata or RDFa make it indeterminate, never a failure.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-10-22
STRUCTURED-OFFER-015Strikethrough and member prices accompany an active priceOfferWarning when failedWeight 2Technical SearchCommerceMachine Readability
- What this checks
- For each Offer listed under a Product that has no price of its own and whose priceSpecification declares priceType or validForMemberTier: whether at least one priceSpecification is an active price (a price without priceType and without validForMemberTier).
- Why it matters
- Google reads only a price without priceType and validForMemberTier as the active price, and requires one next to strikethrough and member prices. An offer priced only by a strikethrough or member price has no price Google can use, even though a price value is present (STRUCTURED-OFFER-001 passes).
- How to fix
- Add the current price of the offer named in the finding: as the Offer price, or as a priceSpecification without priceType and validForMemberTier. Keep the original (StrikethroughPrice) and member prices as they are.
- Expected
- An offer that lists strikethrough or member prices also states its current price, on the Offer or in a priceSpecification without priceType and validForMemberTier.
- Applies to
- Offers of a Product without an Offer-level price whose priceSpecification declares priceType or validForMemberTier. Offers with an Offer-level price (Google then ignores priceSpecification) and offers without such price types are not evaluated here (STRUCTURED-OFFER-001). Not evaluated when JSON-LD was cut or did not parse, a price specification is an unresolved @id reference, required rendering failed, or only Microdata or RDFa could declare it.
- Authority
- Official search-engine requirement · RequiredGoogle merchant listings: the active price is required and has neither priceType nor validForMemberTier (G-MERCHANT).
- Technical Score
- Weight 2 of 3Without an active price Google has no price for the offer, as for a missing price (STRUCTURED-OFFER-001, weight 3). It applies only to offers using price types, which STRUCTURED-OFFER-001 passes, so a defect is never charged twice.
- How MaxiMarket detects it
- Entity-level check over the bounded JSON-LD graph. Offers with an Offer-level price are not evaluated (Google then uses that price and ignores priceSpecification). Any priceType makes a price non-active. Incomplete or unparsable JSON-LD, unresolved required @id references, failed required rendering and unevaluated Microdata or RDFa make it indeterminate, never a failure.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-10-22
STRUCTURED-OFFER-016Price validity periods are orderedOfferWarning when failedWeight 1Technical SearchCommerceMachine Readability
- What this checks
- validFrom against validThrough and priceValidUntil on Offers listed under a Product, and validFrom against validThrough on their price specifications.
- Why it matters
- Google asks that the start of a price period is earlier than or equal to its end. A reversed period cannot describe when the price applies.
- How to fix
- Correct the dates named in the finding so that validFrom is the start and validThrough (or priceValidUntil on the Offer) the end of the period, in ISO 8601 with a time zone.
- Expected
- validFrom is not later than the end of the price period.
- Applies to
- Offers of a Product, or their price specifications, that declare validFrom and an end (validThrough or priceValidUntil). Values that are not ISO 8601 are not evaluated (STRUCTURED-DATE-001).
- Authority
- Official search-engine requirement · RequiredGoogle merchant listings: the start date must be earlier than or equal to the end date (G-MERCHANT).
- Technical Score
- Weight 1 of 3Conditional feature requirement: weight 1 when applicable, as in the 2026.5 method for conditional rich-result rules. Pages that do not declare it are never affected.
- How MaxiMarket detects it
- Deterministic ISO 8601 intervals, as STRUCTURED-DATE-002: reported only when the start is later than the end under every time-zone interpretation of both values. Values that are not ISO 8601 are not evaluated (STRUCTURED-DATE-001). Incomplete or unparsable JSON-LD, unresolved required @id references, failed required rendering and unevaluated Microdata or RDFa make it indeterminate, never a failure.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-10-22
STRUCTURED-OFFER-017Price markup uses current Google price typesOfferInfo when failedNot scoredTechnical SearchCommerceMachine Readability
- What this checks
- priceType ListPrice and priceValidUntil on the price specifications of Offers listed under a Product.
- Why it matters
- Google accepts ListPrice only during a transition period and states that priceValidUntil does not apply to a PriceSpecification. The markup still works today or is only partly read.
- How to fix
- Use StrikethroughPrice instead of ListPrice, and validThrough instead of priceValidUntil on a price specification (priceValidUntil belongs on the Offer).
- Expected
- Strikethrough prices use priceType StrikethroughPrice, and price specifications use validThrough.
- Applies to
- Offers of a Product whose price specifications declare priceType or priceValidUntil.
- Authority
- Official platform recommendation · RecommendedGoogle merchant listings price types and sale periods (G-MERCHANT).
- Technical Score
- Not scoredNever scored: the markup still works during the transition or is only partly read.
- How MaxiMarket detects it
- Entity-level check over the bounded JSON-LD graph. Incomplete or unparsable JSON-LD, unresolved required @id references, failed required rendering and unevaluated Microdata or RDFa make it indeterminate, never a failure.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-10-22
STRUCTURED-MEMBER-001MemberProgram declares the properties Google requiresOfferWarning when failedWeight 1Technical SearchCommerceMachine Readability
- What this checks
- On each declared MemberProgram: name, description and at least one tier in hasTiers; on each tier: name and hasTierBenefit (TierBenefitLoyaltyPoints or TierBenefitLoyaltyPrice).
- Why it matters
- Google shows loyalty program information only for programs with these properties. Programs configured in Merchant Center take precedence over markup.
- How to fix
- Complete the MemberProgram named in the finding: its name, a description of the main member benefits, and at least one MemberProgramTier with a name and hasTierBenefit (TierBenefitLoyaltyPrice for member prices, TierBenefitLoyaltyPoints for points). Describe only the program you really run.
- Expected
- Every MemberProgram has a name, a description and tiers that each have a name and a documented benefit.
- Applies to
- Pages that declare a MemberProgram in JSON-LD. Member prices that reference a tier described on another page are not evaluated. Not evaluated when JSON-LD was cut or did not parse, a tier is an unresolved @id reference, required rendering failed, or only Microdata or RDFa could declare it.
- Authority
- Official search-engine requirement · RequiredGoogle loyalty programs: required MemberProgram and MemberProgramTier properties (G-LOYALTY).
- Technical Score
- Weight 1 of 3Conditional feature requirement: weight 1 when applicable, as in the 2026.5 method for conditional rich-result rules. Pages that do not declare it are never affected.
- How MaxiMarket detects it
- Entity-level check over the bounded JSON-LD graph; benefits are schema.org URLs or bare names. Tiers that member prices reference on another page are not evaluated. Incomplete or unparsable JSON-LD, unresolved required @id references, failed required rendering and unevaluated Microdata or RDFa make it indeterminate, never a failure.
- Sources
- Loyalty program (MemberProgram) structured data — Google Search Central, verified 2026-10-22
STRUCTURED-RETURN-001Declared return policies have the properties Google requiresOfferWarning when failedWeight 1Technical SearchCommerceMachine Readability
- What this checks
- On each declared MerchantReturnPolicy: applicableCountry and returnPolicyCategory (or, at Organization level, merchantReturnLink instead), two-letter country codes, a documented category, merchantReturnDays for a finite return window, and returnShippingFeesAmount only and always with ReturnShippingFees.
- Why it matters
- Google uses return policy markup only with its required properties; a finite window without days or a return fee without its amount cannot be shown. Merchant Center and Search Console settings take precedence over markup.
- How to fix
- Complete the return policy named in the finding: applicableCountry as two-letter ISO 3166-1 codes and returnPolicyCategory (MerchantReturnFiniteReturnWindow, MerchantReturnNotPermitted or MerchantReturnUnlimitedWindow); merchantReturnDays for a finite window; returnShippingFeesAmount when returnFees is ReturnShippingFees, and not otherwise. An Organization-level policy can instead link to its return policy page with merchantReturnLink.
- Expected
- Every declared return policy states where it applies and its category, with the conditional properties its category and fees need.
- Applies to
- Pages that declare a MerchantReturnPolicy in JSON-LD, on an Offer or an Organization. Policies in Merchant Center, Search Console or on another page are not visible and are never assumed missing (STRUCTURED-OFFER-010 reports only absence). Not evaluated when JSON-LD was cut or did not parse, required rendering failed, or only Microdata or RDFa could declare it.
- Authority
- Official search-engine requirement · RequiredGoogle merchant return policies: required and conditionally required properties (G-RETURN-POLICY, G-MERCHANT).
- Technical Score
- Weight 1 of 3Conditional feature requirement: weight 1 when applicable, as in the 2026.5 method for conditional rich-result rules. Pages that do not declare it are never affected.
- How MaxiMarket detects it
- Entity-level check over the bounded JSON-LD graph. A policy listed under an Offer is product-level and has no merchantReturnLink option. Country codes are checked for form (two letters), not against the ISO list. Policies that are not on the page are never assumed missing (STRUCTURED-OFFER-010 reports only absence). Incomplete or unparsable JSON-LD, unresolved required @id references, failed required rendering and unevaluated Microdata or RDFa make it indeterminate, never a failure.
- Sources
- Merchant return policy (MerchantReturnPolicy) structured data — Google Search Central, verified 2026-10-22
- Merchant listing structured data — Google Search Central, verified 2026-10-22
STRUCTURED-SHIPPING-001Declared shipping details have the properties Google requiresOfferWarning when failedWeight 1Technical SearchCommerceMachine Readability
- What this checks
- On each OfferShippingDetails of an Offer: shippingDestination with addressCountry, and unless doesNotShip, one shippingRate (currency matching the offer, value or maxValue) and one deliveryTime with day-based handling and transit times. On each ShippingService: shippingConditions, with valid destination regions and rates.
- Why it matters
- Google uses shipping markup only with its required properties; a missing destination or a rate in another currency than the offer cannot be shown. Merchant Center, Search Console and Content API settings take precedence over markup.
- How to fix
- Complete the shipping detail named in the finding: shippingDestination as a DefinedRegion with a two-letter addressCountry, one shippingRate as a MonetaryAmount in the offer's currency with value (or maxValue), and one deliveryTime whose handlingTime and transitTime give minValue and maxValue in days (unitCode DAY). For a ShippingService, give its shippingConditions. Describe only the shipping you really offer.
- Expected
- Every declared shipping detail or service states its destination, rate and delivery time as Google documents.
- Applies to
- Pages that declare shippingDetails on an Offer or a ShippingService in JSON-LD. Shipping configured in Merchant Center, Search Console or on another page is not visible and is never assumed missing (STRUCTURED-OFFER-009 reports only absence). Not evaluated when JSON-LD was cut or did not parse, a detail is an unresolved @id reference, required rendering failed, or only Microdata or RDFa could declare it.
- Authority
- Official search-engine requirement · RequiredGoogle merchant shipping: required OfferShippingDetails and ShippingService properties (G-MERCHANT, G-SHIPPING-POLICY).
- Technical Score
- Weight 1 of 3Conditional feature requirement: weight 1 when applicable, as in the 2026.5 method for conditional rich-result rules. Pages that do not declare it are never affected.
- How MaxiMarket detects it
- Entity-level check over the bounded JSON-LD graph. The offer currency is compared only when it is stated unambiguously. A member-only shipping service is a note, since the regular service may be declared on another page. Shipping that is not on the page is never assumed missing (STRUCTURED-OFFER-009 reports only absence). Incomplete or unparsable JSON-LD, unresolved required @id references, failed required rendering and unevaluated Microdata or RDFa make it indeterminate, never a failure.
- Sources
- Merchant listing structured data — Google Search Central, verified 2026-10-22
- Merchant shipping policy (ShippingService) structured data — Google Search Central, verified 2026-10-22