Variant prices in Merchant Center: matching every option
Every option with its own price needs its own item in Merchant Center, carrying the price the page shows once that option is picked. One price for the whole range stops being true the moment a shopper picks the XL. Send each priced option as its own row, give it its own link, and test a sample in a real browser.
You run this check yourself
Our scanner can’t see inside your Google accounts, so this one’s on you. Work through the checklist below without running a scan.
Why this matters
Google's [item_group_id] page spells out the structure: “Submit each variant as a separate product”, and “Use the same value for the item group ID [item_group_id] attribute for all variants of the same product.” The [price] page expects prices to differ where they really do: “If your product comes in multiple colors or sizes, you might also have different prices for each of these variants.”
The page then has to agree with each row. The item group page asks you to “Make sure that the product details displayed on your landing page match the variant-identifying values you provide for the variant”, and to “Make sure to have different landing page URLs submitted for each variant”. The [price] page adds “Display variants and their prices in a straightforward way on your landing page.” Google's landing page requirements close the last gap: “Do not change displayed product information after initial loading. This includes and is not limited to availability, pricing and the selected variant.” So a variant link should open with that option already selected and its price already showing, not settle on it a second later.
This is a manual check: compare each variant row in your product data with the page it links to. StoreVerifier does not open your feed or click through every option. What the free scan does is add a product to the basket and report a cart price higher than the product page as a failure, and flag structured-data prices that disagree with the price on the page. Feed-against-page prices in general are in product price: feed vs live page, and every pricing check is on the misrepresentation checker.
Typical evidence
Select the variant, read the real price
Check the selected variant in a normal browser and record the price shown. If you use a feed, compare that public price with the submitted variant price yourself; StoreVerifier does not access the feed.
The public signals this check looks for:
One price is sent for the whole product while S, M, L and XL cost different amounts on the…
One price is sent for the whole product while S, M, L and XL cost different amounts on the page.
Variant prices changed in the store and the feed still carries last month's numbers
Variant prices changed in the store and the feed still carries last month's numbers.
Every variant row links to the same product URL, so the page opens on the default option, …
Every variant row links to the same product URL, so the page opens on the default option, not the one advertised.
The page loads the default price and swaps in the chosen option's price a moment later by …
The page loads the default price and swaps in the chosen option's price a moment later by script.
A rounded or converted variant price on the page (£30…
A rounded or converted variant price on the page (£30.00) differs from the submitted value (£29.99).
A “build your own” or bundle product where the feed sends one component's price and the pa…
A “build your own” or bundle product where the feed sends one component's price and the page shows the total.
What it looks like once it is right
Four items, S to XL, share the item group ID HOOD-01. Each has its own price and a link such as /hoodie?variant=XL that opens with the XL selected and £34.99 showing. The basket says £34.99 too.
Common mistakes
Common mistake
Self-check steps
Each variant its own row, one shared group
An item_group_id ties the variants together while every row carries its own real price — so the price on the page always matches the price in the feed, variant for variant.
Questions merchants ask
Do product variants need separate items in Merchant Center?
Yes. Google's [item_group_id] page asks you to submit each variant as a separate product and to give all variants of the same product the same item group ID. Each variant then carries its own price, availability and image.
Why is there a price mismatch when only one size costs more?
Usually the product was sent with one price for every size, or the link opens a different option from the one in the row. Google's landing page requirements ask for the page price to match your product data, so each priced option needs its own row and a URL that opens with that option selected.
Can a variant page change its price after it loads?
Google's landing page requirements say not to change displayed product information after initial loading, including pricing and the selected variant. The variant URL should open with the right option and its price already on screen.
Remediation
Risk signal
Similar cases
Sources
Last reviewed 23 Sep 2026.
That is one issue. The library documents 134.
The free scan lists what it finds on your store. The paid report adds the affected pages, captured evidence and step-by-step fixes. Start free, with no account needed.