Yes, Google Shopping can show a price range for products that have variants at different prices. When you group several variants under one parent product and those variants are not all the same price, Google may display something like "£20.00 to £35.00" rather than a single figure. It pulls the lowest and highest prices from the variant group and shows the range on the product listing.
This only happens when your variants are set up correctly in your product feed. If your variants are not linked with the right attributes, Google treats each one as a separate product, and you lose the tidy range display. Below I will explain exactly when the range appears, how the attributes need to be structured, and the common mistakes that stop it working.
Key point: Google Shopping shows a price range when variants of the same product are grouped correctly and priced differently. Poor feed structure breaks this and shows scattered single products instead.
What counts as a variant in Google Shopping
A variant is a version of the same core product that differs by a defined attribute. Think of a t-shirt that comes in small, medium and large, or a mug that comes in blue, green and red. It is the same product, just a different size or colour.
This is different from a product bundle or a related product. A bundle combines several distinct items into one purchase. A related product is a genuinely separate item you might cross-sell. A variant, by contrast, is the same thing with one or two characteristics changed. Google cares about this distinction because it decides how the item is displayed and how the data is grouped.
Google recognises a specific set of variant attributes. These are the ones it uses to understand that several items belong to the same parent product:
- Colour (the colour attribute)
- Size (the size attribute)
- Pattern
- Material
- Age group
- Gender
- Size type and size system
To group variants together, every variant shares the same item group id but has a unique id. The item group id is the glue. It tells Google "these separate feed rows are all the same product". Without a shared item group id, Google has no way of knowing your small blue t-shirt and your large red t-shirt are related.
One point worth understanding early: only the attributes on Google's list count as variant attributes. If your product varies by something outside that list, for example a bespoke engraving option or a choice of gift wrapping, Google will not treat that as a variant in the same way. You either map it onto one of the accepted attributes where it genuinely fits, or you handle it as a separate product. Trying to force an unsupported difference into the variant system usually causes more confusion than it solves.
When does the price range actually show?
The range appears in specific placements when the following are true:
- All the variants share one item group id.
- The variants have different prices in the feed.
- The variants are eligible to serve (approved, in stock, correct data).
If every variant is the same price, there is no range to show, so Google displays the single price. If only some variants are in stock or approved, the range reflects only the ones that can actually serve, which is worth remembering when you are trying to work out why the displayed figures look off.
The range shows most often in the Google Shopping tab and on the product listing page where a shopper can pick a size or colour. In standard Shopping ads that appear at the top of a search, you usually see the price of the specific variant that matched the query, not the full range. This catches a lot of people out, so it is worth being clear on.
Think of it this way. The Shopping tab and the free listings surfaces are browsing environments, where showing a range helps a shopper decide whether to look closer. A Shopping ad triggered by a search is a matching environment, where Google has already worked out which variant is most relevant to what the person typed. If someone searches for a "large black hoodie", the ad tends to show the price of that specific large black variant rather than the whole range, because that is the item they asked about.
| Scenario | What Google shows |
|---|---|
| Variants grouped, different prices | Price range (lowest to highest) |
| Variants grouped, same price | Single price |
| Variants not grouped (no item group id) | Separate products, each with own price |
| Standard Shopping ad in search results | Usually the matched variant's price |
| Some variants out of stock | Range based on in-stock variants only |
How to set variants up correctly in your feed
The whole thing lives or dies on your product feed. Here is what each variant row needs.
1. A unique id for every variant
Each colour or size combination is its own row with its own id. Do not reuse ids across variants. A common pattern is to base the id on the SKU, for example TSHIRT-BLU-S and TSHIRT-BLU-M. Keep the id stable over time, because if you change it Google treats the item as brand new and it loses any history it had built up.
2. A shared item group id
Every variant of the same parent product uses the same item group id. So all your t-shirt variants might share the item group id TSHIRT-01. This is the single most important attribute for making the range work. A useful convention is to base the item group id on the parent product code and the individual id on the parent code plus the variant, so the relationship is obvious when you scan the feed.
3. The differentiating variant attributes
Fill in whichever attributes actually differ. If the only difference is size, populate the size attribute on every row. If colour and size both vary, populate both. Be consistent with your values, so "Navy" is always "Navy" and not sometimes "Dark Blue". It also helps to keep the title and description consistent across variants of the same group, so the listing reads as one coherent product rather than five slightly different ones.
4. Correct price on each row
The price attribute on each variant should be its true selling price including VAT for UK listings. If you use sale prices, use the sale price attribute alongside the standard price. Google reads these individual prices to calculate the low and high ends of the range.
Key point: Same item group id, unique id per variant, correct variant attributes and accurate prices. Get those four right and the range display sorts itself out.
A worked example
Say you sell a hoodie. It comes in three sizes and two colours, and the larger sizes cost a little more. Your feed rows would look roughly like this, simplified:
- id: HOOD-BLK-S, item group id: HOOD-01, colour: Black, size: S, price: £30.00
- id: HOOD-BLK-M, item group id: HOOD-01, colour: Black, size: M, price: £30.00
- id: HOOD-BLK-XL, item group id: HOOD-01, colour: Black, size: XL, price: £35.00
- id: HOOD-GRN-S, item group id: HOOD-01, colour: Green, size: S, price: £30.00
- id: HOOD-GRN-XL, item group id: HOOD-01, colour: Green, size: XL, price: £35.00
Because these all share the item group id HOOD-01 and the prices span £30.00 to £35.00, Google can present the hoodie as a single product with a "£30.00 to £35.00" range. The shopper then picks their size and colour, and the price settles on the exact variant.
If you had left out the item group id, Google would treat all five as unrelated products. You would end up with five near-identical listings competing against each other, which looks messy and splits your data.
Now walk through a couple of edge cases with the same hoodie. Imagine the Green XL sells out. Availability on that row changes to out of stock, and it drops out of the calculation. Because £35.00 was one of the black variants too, the top of the range stays at £35.00, so nothing visible changes. But if the only £35.00 variant had been the Green XL, the displayed range would quietly narrow to a single £30.00 figure until that variant came back into stock. Nothing is broken, it is simply reflecting what is actually available to buy.
Take another case. Suppose you put the whole hoodie group on sale, but only the black variants. The two green rows keep their £30.00 to £35.00 pricing while the black rows show a lower sale price. Google works from the effective selling price of each eligible variant, so your range would move down to reflect the cheapest sale-priced variant at the bottom and the highest standard price at the top. This is why the range can shift during promotions even when you did not touch every product.
Common mistakes that break variant pricing
Missing item group id
The most frequent culprit. Without it, no grouping and no range. Check every variant row carries the same value.
Duplicate ids
Reusing the same id across variants causes rejections and overwrites. Every variant needs its own unique id.
Inconsistent attribute values
"Navy" versus "navy blue" confuses grouping. Standardise your colour and size values across the feed.
Prices not matching the site
If feed prices differ from your landing page, Google may disapprove items and the range collapses to whatever remains eligible.
Variants missing attributes
If some rows have no size or colour, Google cannot tell them apart properly. Populate the differentiating attribute on every row.
Out of stock skewing the range
Availability affects which variants count towards the range. Keep availability accurate so the range reflects reality.
There is a subtler version of the inconsistency problem that trips people up when their feed is built automatically from a shop platform. If your platform exports colours from the product database exactly as they were typed in, and different staff entered "Grey", "grey" and "Charcoal Grey" over the years, your feed inherits all three. Google may still group them if the item group id is right, but your reporting becomes muddled and any colour-based filtering works poorly. The fix is upstream: tidy the values in your product data so the feed inherits clean, consistent attributes rather than trying to patch them in the feed itself.
Price accuracy and disapprovals
Google is strict about price consistency between your feed and your website. If a shopper clicks a variant and the price on your site is higher than the feed said, that is a policy problem and Google can disapprove the item. When variants get disapproved, they drop out of the range calculation, so your displayed range can quietly become wrong.
This is why so many variant pricing headaches trace back to a feed that is not syncing often enough. If you change prices on your website but the feed only refreshes once a day, there is a window where the two disagree. Frequent feed updates, or using the automatic item updates feature, keeps the two in step.
Automatic item updates deserve a word of caution though. It lets Google read structured data on your product pages and correct small price and availability mismatches on its own. That is helpful as a safety net, but it is not a substitute for a properly maintained feed. If your structured data is wrong, automatic updates can push a wrong value with confidence. Treat it as a backstop, not the primary source of truth.
Sale prices deserve a mention too. When you run a sale, put the original price in the price attribute and the discounted figure in the sale price attribute. Google uses the effective selling price for the range, so a mid-sale product will show the sale-adjusted low and high ends. Do not simply overwrite the price attribute with the sale price, because you lose the strike-through display and the sale badge that can lift click-through.
It is also worth using the sale price effective date attribute when you know the start and end of a promotion. This tells Google when the sale runs, so pricing reverts cleanly when it ends and you are not left with a stale sale price lingering in the feed. For seasonal shops that run frequent promotions, getting this habit right saves a great deal of manual correction.
How variant pricing affects your Shopping performance
Getting variants right is not just tidy housekeeping. It affects what shoppers see and how much you pay to show it.
When variants are grouped, your data is consolidated under one product, which usually gives Google cleaner signals to work with. When they are scattered as separate products, your budget and performance history spread thinly across near-duplicates, and your reporting becomes harder to read.
The price range display also sets shopper expectations. If someone sees "£30.00 to £35.00" they know roughly what they are getting into before they click. That tends to attract clicks from people who are comfortable with your pricing, which is what you want. A well structured feed is one of the quiet foundations of profitable Shopping campaigns, and it works hand in hand with the wider account structure you build in Google Ads management.
There is a reporting angle too. When each variant is its own ungrouped product, you might see one size performing well and another poorly, but the picture is fragmented and hard to act on. Grouped variants let you look at the product as a whole while still drilling into individual variants when you need to. That makes decisions about which colours to promote, which sizes to stock more heavily and where your margin actually sits far easier to reach.
If your Shopping performance feels off and you are not sure whether the feed is the cause, a review of the account can pinpoint it quickly. Our guide to auditing your Google Ads account covers the checks worth running, and a free Google Ads audit from us will flag feed and variant issues alongside the rest.
Checklist before you go live
- Every variant has a unique id.
- All variants of a product share one item group id.
- The differentiating attribute (size, colour, etc) is populated on every row.
- Prices are accurate and include VAT.
- Sale prices use the sale price attribute, not overwriting price.
- Availability is correct on each variant.
- Feed prices match the landing page prices.
- The feed refreshes often enough to stay in sync.
Work through that list and the price range will display as intended. If it still does not, the issue is almost always a grouping or approval problem hiding in one of those rows, so recheck the item group id and the disapproval reasons in Merchant Center first.
How to check it is working in Merchant Center
Once your feed is live, you do not have to guess whether the grouping took. Open Merchant Center and look at the products section. Items that share an item group id are recognised as belonging together, and you can inspect an individual product to see its price, availability and approval status. If a variant is disapproved, the reason is listed there, which is usually where you find the price mismatch or missing attribute causing trouble.
It also helps to view your own listings the way a shopper would. Search for the product on the Shopping tab and see whether the range appears as expected. If you see several near-identical listings instead of one grouped product with a range, that is a strong signal the item group id is missing or inconsistent across the rows. Fix the feed, wait for it to reprocess, and check again once the changes have been picked up.
Give changes time to take effect. Feed updates are not always instant, and Google needs to reprocess the data before the display reflects your edits. If you have just corrected a feed, do not panic if the range is still off within the first few hours. Confirm the feed itself is correct, then let it flow through.
What about cost to run all this?
Feed setup is separate from your media spend, but people usually ask about the management side in the same breath. If you are weighing up what professional Shopping management costs, our writing on PPC management pricing in the UK lays out the honest ranges, and our own Google Ads pricing is a fixed transparent monthly fee rather than a percentage that climbs with your spend. That matters for ecommerce, because your budget should go on ads, not on a fee that balloons every time you scale.
It is also worth separating the one-off work from the ongoing work in your own head. Getting the feed structured correctly is largely a setup task, though it needs revisiting whenever you add product lines or change how your shop exports data. The day-to-day management is the ongoing part: watching disapprovals, keeping prices in sync, adjusting bids and budgets, and reacting to what the data shows. A fixed monthly fee covers that ongoing work without punishing you for growing, which is the point.
Getting variant pricing right, without the guesswork
Google Shopping does show a price range for variants, but only when your feed groups them correctly with a shared item group id, unique ids, consistent attributes and accurate prices. Get that structure right and the range appears cleanly, your data consolidates, and shoppers see sensible pricing before they click. Get it wrong and you end up with duplicate listings, disapprovals and a range that does not reflect what you actually sell. If you would rather have this handled properly by people who have done it for 15 years, our Google Shopping management covers your feed, structure and campaigns for a fixed monthly fee, with everything explained in plain English on a video call whenever you need it.
Ready to Get More From Google Ads?
Speak to our team about how we can help your business grow.


