seotools.pro Get started free

Product Page Evidence Checklist Template

Your product page says in stock. Your feed says out of stock. Your markup shows last month's price. Shoppers and Google both notice.

This checklist traces every claim on a product page to one source of truth: specs, price, stock, variants, shipping, returns and reviews.

Then it checks that the page, your Merchant Center feed and your Product structured data all say the same thing, using Google's current rules.

Inside: a fill-in checklist, a source-of-truth register, a markup check, variant and shipping checks, a feed audit, a CSV header and a fictional example.

Format
Editable Word .docx
Length
7 variants · ~7 pages
Price
100% free
Setup
Copy or download

Get the editable Word doc in one click.

Free · No signup · Instant download

Works withSemrushSe Ranking
UContent & On-Page

Product Page Evidence Checklist Template

Product page evidence checklist

One row per claim the page makes. Every row needs a source of truth, and the page, the feed and the structured data must all say the same thing.

Claim on the pageValue shownSource of truthFeed / Merchant Center valueStructured data propertyOwner / status
Specification: [weight, size, material][value as shown][supplier spec sheet / PIM field][feed attribute, if any][weight / material / description][name] / [Match / Fix / Missing]
Price[59.00 EUR][pricing system][price in feed]offers.price + priceCurrency[name] / [status]
Availability[In stock][inventory system][availability in feed]offers.availability[name] / [status]
Variants[sizes / colours offered][PIM variant list with SKUs][item group ID]ProductGroup, hasVariant, sku[name] / [status]
Shipping cost and time[Free over 50 EUR, 2 to 4 days][shipping settings / carrier contract][Merchant Center or Search Console shipping settings]shippingDetails or Organization hasShippingService[name] / [status]
Returns[30-day returns][returns policy page][return policy settings]hasMerchantReturnPolicy[name] / [status]
Rating and reviews[4.6 from 212 reviews][reviews platform][product ratings feed, if used]aggregateRating, review[name] / [status]

Per-row detail (fill for every row)

  • Specification source: [document or system, version, date checked]
  • Where the claim appears: [title, bullets, spec table, image, FAQ, JSON-LD]
  • How it updates: [live from system / nightly sync / manual edit]
  • Mismatch found: [page says X, feed says Y, markup says Z]
  • Fix: [change the page / change the feed / change the markup / change the source]
  • Date checked: [YYYY-MM-DD]

Next action

  • Owner: [name] - action: [fix the first row marked Fix or Missing] by [date]
  • Data owner: [merchandising or ops lead] - action: confirm each source of truth is the system that really changes first
  • Developer: [name] - action: [update the JSON-LD template so it reads from the same fields as the page]

Completion check

  • Every claim on the page has a named source of truth and a checked date.
  • Price, currency and availability are the same on the page, in the feed and in the markup.
  • Every variant has its own ID, and its URL shows the right image, price and stock.
  • Shipping and returns on the page match the settings Google reads first.
  • Nothing in the structured data is missing from the visible page.
  • No row is still marked Fix or Missing without an owner and a date.
Download free template

Why it works

Every claim on a product page traces to one source of truth and matches the feed and Product markup, so Google and shoppers see the same price, stock and policies.

  • Each fact gets one owner system, so a price or stock change updates the page, feed and markup together.
  • Markup checks follow Google's current product snippet, merchant listing, variant, shipping and return policy documentation.
  • Variants, shipping and returns are checked where Google actually reads them, including Search Console and Merchant Center settings.

7 ready-to-use variants

Copy all

Product Page Evidence Checklist (fill-in)

When to use: One row per claim: value shown, source of truth, feed value, structured data property, owner and status, with a completion check.

Product page evidence checklist

One row per claim the page makes. Every row needs a source of truth, and the page, the feed and the structured data must all say the same thing.

Claim on the pageValue shownSource of truthFeed / Merchant Center valueStructured data propertyOwner / status
Specification: [weight, size, material][value as shown][supplier spec sheet / PIM field][feed attribute, if any][weight / material / description][name] / [Match / Fix / Missing]
Price[59.00 EUR][pricing system][price in feed]offers.price + priceCurrency[name] / [status]
Availability[In stock][inventory system][availability in feed]offers.availability[name] / [status]
Variants[sizes / colours offered][PIM variant list with SKUs][item group ID]ProductGroup, hasVariant, sku[name] / [status]
Shipping cost and time[Free over 50 EUR, 2 to 4 days][shipping settings / carrier contract][Merchant Center or Search Console shipping settings]shippingDetails or Organization hasShippingService[name] / [status]
Returns[30-day returns][returns policy page][return policy settings]hasMerchantReturnPolicy[name] / [status]
Rating and reviews[4.6 from 212 reviews][reviews platform][product ratings feed, if used]aggregateRating, review[name] / [status]

Per-row detail (fill for every row)

  • Specification source: [document or system, version, date checked]
  • Where the claim appears: [title, bullets, spec table, image, FAQ, JSON-LD]
  • How it updates: [live from system / nightly sync / manual edit]
  • Mismatch found: [page says X, feed says Y, markup says Z]
  • Fix: [change the page / change the feed / change the markup / change the source]
  • Date checked: [YYYY-MM-DD]

Next action

  • Owner: [name] - action: [fix the first row marked Fix or Missing] by [date]
  • Data owner: [merchandising or ops lead] - action: confirm each source of truth is the system that really changes first
  • Developer: [name] - action: [update the JSON-LD template so it reads from the same fields as the page]

Completion check

  • Every claim on the page has a named source of truth and a checked date.
  • Price, currency and availability are the same on the page, in the feed and in the markup.
  • Every variant has its own ID, and its URL shows the right image, price and stock.
  • Shipping and returns on the page match the settings Google reads first.
  • Nothing in the structured data is missing from the visible page.
  • No row is still marked Fix or Missing without an owner and a date.

Source-of-Truth Register

When to use: Name the one system that owns each product fact, who can change it and how the page gets it.

Name one source of truth per fact

Most product page errors start when two systems hold the same fact. Pick the one that changes first. Everything else, including the page, should copy from it.

FactSource of truthWho can change itHow the page gets it
Specifications[supplier spec sheet, PIM][product data team][PIM sync / manual]
Price and sale price[pricing system, ERP][trading team][server-rendered from ERP]
Stock and availability[inventory system][warehouse / ops][live API / sync interval]
Variants and SKUs[PIM variant table][product data team][PIM sync]
Shipping rates and times[shipping settings, carrier contract][ops / ecommerce manager][shipping page / checkout]
Returns policy[returns policy page][customer service / legal][link from product page]
Ratings and reviews[reviews platform][nobody edits; moderation only][widget / server-rendered]

Specification claims: what counts as a source

  • Good: the manufacturer's spec sheet with a version or date, your own measured value with who measured it, a certificate you hold.
  • Weak: a competitor's listing, an old catalogue, a marketplace copy of your own page.
  • Not a source: "we think", a supplier email with no attachment, an AI-written description.

Rules

  • If the page and the source disagree, fix the source first, then let the page update.
  • Copy written by hand (bullets, FAQs, image text) needs its own check. It does not update when the data changes.
  • Record the date you checked. A spec that was true last season may not be true now.

Rewrite thin or copied spec copy with the Content Optimizer, then come back and log the source for every number it keeps.

Structured Data Consistency Check

When to use: Pick product snippet or merchant listing markup, then check each property against what the page shows.

Product snippet or merchant listing?

Google has two kinds of Product structured data. Pick the right one before you check properties. Checked on Google Search Central on 7 November 2026.

Product snippetMerchant listing
ForProduct pages where people can't buy directly, such as reviews and aggregatorsPages where a shopper can buy the product from you
Requiredname, plus one of review, aggregateRating or offersProduct: name, image, offers. Offer: price and priceCurrency (or priceSpecification)
PriceOffer or AggregateOfferAn Offer with a price greater than zero
Recommended on the OfferpriceCurrency, even though it is not requiredavailability, itemCondition, shippingDetails, hasMerchantReturnPolicy, priceValidUntil

Check each property against the page

PropertyMust matchCheck
nameProduct title on the page[Match / Fix]
imageImages that show the marked-up product[Match / Fix]
offers.price / priceCurrencyPrice and currency shown in the HTML[Match / Fix]
offers.availabilityStock message on the page[Match / Fix]
sku / gtinIdentifier of the variant shown[Match / Fix]
aggregateRating / reviewRatings visible on the page[Match / Fix]

What Google's guidelines say

  • Don't mark up content that is not visible to readers of the page.
  • Structured data must be a true representation of the page content.
  • Google may try to verify merchant listing product data before showing it in search results.
  • If you sell in several currencies, use a distinct URL per currency.

Build the JSON-LD with the Schema Markup Generator. For a full pre-launch markup review, use the Structured Data Validation Brief Template.

Variants, Availability and Shipping Facts

When to use: Check variant IDs and URLs, stock values and where Google reads your shipping and return policies.

Variants

Variants are where pages drift. The size picker says one thing, the markup says another. Check every variant, not just the default one.

  • Group ID: [productGroupID or inProductGroupWithID] - Google requires one of them. If both are set, they must match.
  • Variant IDs: [one sku or gtin per variant] - each variant needs a unique ID in its markup.
  • Variant URLs: [?size=26] - each variant must be preselectable with a distinct URL, showing its own image, price and availability.
  • Varies by: [size, color, material] - variesBy and hasVariant are recommended on the ProductGroup.
  • Single page or one page per variant: [single / multi-page] - on multi-page setups, each page needs full, self-contained markup.

Availability

  • Stock message shown: [In stock / Only 3 left / Pre-order / Out of stock]
  • schema.org value used: [InStock / LimitedAvailability / PreOrder / BackOrder / OutOfStock]
  • Feed value: [in_stock / out_of_stock / preorder / backorder]
  • Sync interval between inventory, page and feed: [live / hourly / daily]

Shipping and returns facts

Google recommends one store-wide shipping policy and one return policy under Organization markup. Use offer-level shippingDetails or hasMerchantReturnPolicy only to override them for some products.

Google uses this order, strongest first: Content API for Shopping settings, then Merchant Center or Search Console settings, then product-level markup, then Organization markup.

  • Shipping rate and destination shown: [rate, countries]
  • Handling time and transit time shown: [days]
  • Return window, method and fees shown: [days, mail / in store, free or paid]
  • Where Google reads them: [Search Console / Merchant Center / Organization markup / Offer markup]
  • Do all of them say the same thing? [Yes / No, list the gap]

If you set shipping in Search Console and in markup, Google uses only Search Console. Fix the settings first, not just the JSON-LD.

Merchant Center and Feed Match Audit

When to use: Compare price, currency, stock and IDs across the page HTML, the feed and the JSON-LD.

Page vs feed vs markup audit

Merchant Center compares your product data with the landing page. A mismatch can get a product disapproved, so audit the three sources side by side.

FieldPage (HTML)FeedJSON-LDResult
Price[value][value][value][Match / Mismatch]
Sale price and dates[value][value][value][result]
Currency[value][value][value][result]
Availability[value][value][value][result]
GTIN / SKU[value][value][value][result]
Shipping cost[value][value][value][result]

What Merchant Center Help says

  • Prices in the HTML need to match the prices uploaded in Merchant Center exactly.
  • Googlebot reads the HTML your server returns. A price added with JavaScript after the page loads can trigger an error.
  • Google uses structured data to understand prices on landing pages, so wrong markup can cause a mismatch.
  • Availability in your product data must match the landing page. Too many products with wrong availability can lead to account suspension.

Common causes to check

  • The feed updates once a day, but stock changes every hour.
  • A sale price shows on the page, but the feed still has the old price.
  • The JSON-LD shows the default variant while the page shows another one.
  • Prices are set by JavaScript, so the HTML has no price or an old one.

Crawl your product URLs with the Website Audit to find pages with missing or broken markup, then check titles and descriptions with On-Page SEO.

Spreadsheet Header (CSV)

When to use: A paste-ready header row and allowed values to run the checklist in Google Sheets or Excel.

Paste-ready spreadsheet header

Paste this row into cell A1 of Google Sheets or Excel, then split text to columns by comma. One row per claim per product URL.

product_url,variant_sku,claim_type,value_on_page,source_of_truth,source_ref,feed_value,markup_property,markup_value,where_google_reads_it,result,fix,owner,status,date_checked

Allowed values

  • claim_type: spec, price, sale_price, currency, availability, variant, shipping, returns, rating, review, image
  • where_google_reads_it: content_api, merchant_center, search_console, offer_markup, organization_markup, page_only
  • result: match, mismatch, missing_on_page, missing_in_feed, missing_in_markup
  • status: ok, fix, missing, blocked

Sheet tips

  • Add data validation dropdowns on claim_type, result and status.
  • Use a formula that flags a row when value_on_page, feed_value and markup_value are not all equal.
  • Filter by status = fix and sort by owner for the weekly review.
  • Keep source_ref as a link to the spec sheet, settings screen or policy page.

Worked Example (fictional cookware store)

When to use: A filled-in checklist for an invented skillet with three sizes, four mismatches and the fixes.

Worked example: Cobblemarsh Kitchen, Thornquay skillet

Example only. Cobblemarsh Kitchen, the Thornquay skillet, Brindlefen Foundry and every URL, price and finding below are invented to show a filled-in checklist.

Page: /skillets/thornquay-cast-iron/ with three sizes (20, 26 and 30 cm). The store sells directly, so it uses merchant listing markup.

Claim on the pageValue shownSource of truthFeed valueStructured dataOwner / status
Weight, 26 cm2.1 kgBrindlefen Foundry spec sheet v3: 2.4 kgNot in feedNot marked upInes / Fix
Price, 26 cm49.00 EUR (sale)ERP: 49.00 EUR until 30 Nov59.00 EUR59.00 EURMarek / Fix
Availability, 30 cmIn stockInventory: 0 unitsout_of_stockInStockMarek / Fix
Variants20, 26, 30 cmPIM: 3 SKUsSame item group IDProductGroup with 3 variants, sku on eachDev / Match
ShippingShips in 1 to 2 daysSearch Console shipping settings: handling 2 to 3 daysSame as settingsOrganization ShippingService: 2 to 3 daysInes / Fix
Returns30-day free returnsReturns page: 30 days, free by mailSameOrganization MerchantReturnPolicy: 30 daysInes / Match

What the checklist found

  • The weight came from an old catalogue. The page now shows 2.4 kg and cites spec sheet v3.
  • The sale price was added by JavaScript after load, so the HTML and JSON-LD kept the old price, and the feed was never updated. The price is now rendered on the server from the ERP.
  • The JSON-LD always used the stock status of the 20 cm size. Each variant now reads its own stock.
  • The page copy promised faster dispatch than the shipping settings. The copy now says 2 to 3 days.

Why this works

  • Each fact now has one owner and one system, so the next change updates everywhere.
  • The fixes went to the source and the template, not just one page.
  • Shoppers see the same promise on the page, in Google and at checkout.

Need product pages and data feeds built this way from the start? See ecommerce development or book a free consultation with Anatolii Ulitovskyi.

How to use this template

  1. Pick one product URL and list every claim it makes: specs, price, stock, variants, shipping, returns and reviews.
  2. Name the source of truth for each claim and record the value it holds today.
  3. Pull the same values from your feed and from the page's JSON-LD.
  4. Mark each row Match, Fix or Missing, and write where the gap comes from.
  5. Fix the source or the template first, then check the page, feed and markup again.
  6. Give every open row an owner and a date, and repeat the check after price or stock changes.

Pro tips

  • Check every variant, not only the one that loads by default.
  • Render price and stock in the server HTML. Prices added later by JavaScript can cause feed errors.
  • Set shipping and returns once for the whole store, then override only where a product differs.
  • If Search Console has shipping settings, Google uses those over your markup. Keep both in step.
  • Hand-written bullets and FAQs don't update with your data. Recheck them after every change.

Frequently asked questions

What is a product page evidence checklist?

It is a sheet that traces every claim on a product page to a source of truth, then checks that the page, the product feed and the structured data all show the same value.

How is it different from a product page SEO template?

A product page SEO template covers titles, copy, links and layout. This checklist only checks facts: is each claim sourced, and do the page, feed and markup agree?

Should I use product snippet or merchant listing markup?

Google says merchant listing markup is for pages where shoppers can buy from you. Product snippets suit pages without a direct purchase, such as reviews or aggregators.

Where should shipping and return policies go?

Google recommends one policy under Organization markup and offer-level markup only for overrides. Merchant Center or Search Console settings take precedence over both.

Why does Merchant Center flag a price my page shows correctly?

Googlebot reads the HTML your server returns. If JavaScript sets the price after load, or the markup holds an old price, the values can differ from your feed.