What this generator creates—and what Google requires
The output is a copyable script element with a schema.org Product object and a nested Offer. Google’s merchant listing documentation lists Product name, image and offers as required Product properties. For an Offer with a direct price, enter a positive current price and an ISO 4217 currency such as USD, EUR or GBP. This tool also writes a schema.org InStock or OutOfStock URL. Brand, SKU, description, product URL and aggregate rating are added only when you provide them.
A Product rich result is intended for a page about one product, or variants of that same product. Place the markup on the corresponding product page where a shopper can purchase the item. A collection page, generic landing page or code pasted into an unrelated page does not become a merchant listing simply because it contains Product JSON-LD.
Match the offer to the price and availability shoppers see
Enter the active product price without a currency symbol and choose the currency actually used on that page. If the page shows another market’s price or changes currency by URL, publish the matching price and currency for each relevant page. The stock selector maps directly to https://schema.org/InStock or https://schema.org/OutOfStock. A copied static snippet will not update itself when Shopify changes a price or sells out.
The optional product URL becomes Offer.url and lets this tool open Google’s Rich Results Test with that live URL already supplied. This tests the published page, not the unsaved code in this form. Check that the page is public, crawlable and already contains the intended markup before trusting its test result.
Use real images, identifiers and product copy
Use an absolute image URL that Google can crawl and that clearly depicts the product. A placeholder image, broken URL or image of a different item weakens the markup even when the JSON syntax is valid. The optional description should summarize copy visible to customers; the optional Brand object should name the actual brand. Google recommends these additional product details where they are known.
A SKU is your merchant-specific identifier, not automatically a GTIN. The generator rejects whitespace in a supplied SKU because Google’s merchant listing documentation does not allow it there. If your product has a genuine GTIN, shipping details, return policy or variant group, this focused form does not invent those fields; add them in the right Shopify template or structured-data system when applicable.
Add AggregateRating only when the review data is real
Leave both rating fields empty when the product has no visible customer reviews. If it has them, provide the actual average on a 1–5 scale and a positive review count from the same product. The generator includes an AggregateRating only when both entries are valid; it never fills review values by default. Do not copy a store-wide rating onto an individual product or invent a score to seek stars in search results.
Google requires a rating value and at least a rating count or review count for supported AggregateRating markup. Review data must represent the page content. A syntactically valid block or a passing Rich Results Test does not guarantee stars or any particular search presentation.
Install one accurate source of Product markup in Shopify
Before adding the copied script, inspect the rendered HTML of your Shopify product page. Shopify’s Liquid structured_data filter can already output Product or ProductGroup markup, and review or SEO apps may add their own blocks. If valid Product markup already exists, update or replace the existing source so that the live page does not carry conflicting prices, stock states or ratings for the same item.
A manual script is useful for a controlled page or a template prototype, but a real store usually needs dynamic Liquid or an app integration for changing prices, inventory and variants. Keep one source of truth, verify each variant’s URL and visible data, and check the final rendered page after publishing. Do not place a single product’s fixed values in a site-wide layout.
Test the code draft and the published page separately
The preview is generated locally as you type. Once the required fields are valid, copy the full script. For an unpublished draft, the Google button copies it and opens the Rich Results Test; choose Code there and paste the snippet. Google does not document a supported link that preloads arbitrary code into that editor, so the paste step is intentional. For an existing product URL, the button opens Google’s supported URL test for that published page.
Read Google’s errors and warnings, then compare the tested markup with the storefront. The tool covers core Product and Offer fields, not every Merchant Center enhancement. Shipping, return policy, GTIN, complex variants and market-specific offers may need additional markup. Even a valid result means eligibility, not a promise of a rich result or better ranking.