Product Feeds

How to Manage Product Variants in Your Google Product Feed

Sizes, colors and materials each need their own product record in Merchant Center, tied together with item_group_id. Here is how to set that up so the feed, the page and the markup agree.

If you sell a T-shirt in three sizes and three colors, Google doesn’t see one T-shirt. It sees nine products, one for each combination a shopper can buy. Each one needs its own ID, its own landing page URL, its own price and stock status, and ideally its own image.

This guide covers how Google expects variants to be submitted, the rules for item_group_id, how variant URLs, images and availability should work, how variant data connects to product structured data, and how to find and fix the variant problems that most often cause disapprovals or mismatches.

Short answer: Submit each variant (every size, color or material combination) as a separate product with its own unique id, then give all variants of the same product the same item_group_id, ideally the parent SKU. Each variant needs a distinct landing page URL that preselects it, matching price, availability and image values, and variant attributes such as color and size.

Key Takeaways

  • Each variant is its own product: 3 sizes x 3 colors = 9 products, each with a unique id.
  • All variants share one item_group_id (Google suggests the parent SKU); don’t submit the parent as a separate product.
  • item_group_id is required for variants in free listings and for Shopping ads in the US, UK, Germany, France, Japan and Brazil.
  • Every variant needs its own landing URL, and the page must show that variant’s title, color, price, availability and image.
  • Don’t use item_group_id for items that aren’t true variants, such as a suit jacket and trousers.

How Google treats variants

Google’s item_group_id documentation defines variants as versions of the same product that differ by attributes such as color, size, material, pattern, age group or gender. Each variant is submitted as a separate product with a unique id, and all of them carry the same item_group_id. Google’s own example: a product sold in 3 sizes and 3 colors becomes 9 products.

The shared group ID tells Google these nine records belong together. That lets Google show the right variant for a search (a shopper looking for a green T-shirt should land on the green one) and understand that the variants are not duplicates of each other.

When item_group_id is required

ProgramRequirement for variants
Free listingsitem_group_id required for variant products
Shopping adsRequired for variants targeting Brazil, France, Germany, Japan, the UK and the US
Apparel productscolor, size, age_group and gender are also required

Even where it isn’t strictly required, grouping variants correctly is good practice. It keeps the catalog clean and reduces the chance that similar records look like duplicates.

item_group_id rules

The rules are short, but each one matters:

RuleWhat it means in practice
1 to 50 charactersLetters, numbers, underscores and dashes
Same value on every variantAll sizes and colors of one product share it
Use the parent SKUGoogle suggests the parent SKU as the group ID
Don’t submit the parentThe parent product is not a separate, buyable product in the feed
Keep it stableDon’t change it when you edit the product
Casing doesn’t make IDs unique“abc123” and “ABC123” are treated as the same value
Only for true variantsNot for items sold together or separately as a set

What not to group

Google gives two examples of products that should not share an item_group_id: a suit jacket and suit trousers, and items in a bath set. They are related products, not variants of one product. If a shopper buys them as separate items, give them separate IDs and no shared group. If they’re sold as one bundle, describe them as a bundle (the is_bundle attribute) instead.

Variant IDs

Each variant’s id follows Google’s ID rules: unique, 1 to 50 characters, ideally the variant SKU, and stable. Don’t reuse a variant’s ID for a different variant or recycle it for a new product, and don’t rely on capitalization to tell two IDs apart. Changing an ID overwrites the product and its history, so a platform migration that renumbers variants is effectively a catalog reset. See how to fix duplicate products if IDs have already been reused.

Attributes that describe each variant

Grouping is only half the job. Each variant also has to say how it differs from its siblings. Google asks you to keep submitting the descriptive attributes even when you use the newer variant attributes:

  • color, size, pattern, material, age_group and gender where they apply (required for apparel: color, size, age_group, gender).
  • item_group_title: the same title for all variants in the group.
  • variant_option: defines which properties identify the variant.
  • size_type and size_system: recommended for apparel sizing.

Titles for variants

Google’s title requirements ask you to distinguish variants in the title as well as in the attributes, for example by including the color or size, or a design element such as flavor. “Organic cotton crew neck T-shirt, green, small” is easier for Google and shoppers to match than the same title repeated nine times. Product titles for Google Shopping covers title structure in more depth.

Identifiers per variant

Each size and color often has its own manufacturer-assigned GTIN, so each variant should carry its own GTIN where one exists. Google says not to copy identifiers from similar products, and that includes copying one variant’s GTIN onto its siblings.

Variant landing page URLs

Each variant needs a distinct landing page URL. Google’s example uses query parameters, such as /t-shirt?color=green&size=small, but a path-based URL works too. When a shopper (or Googlebot) opens that URL, the page should load with that variant already selected.

The landing page has to match the variant’s data. Google lists the values it compares: title, variant_option, color, price, availability and image_link. If the URL for the green small T-shirt opens on the default blue medium, the price, stock status or image Google reads may not match the feed, and that is how variant mismatches start.

Align the group with the variant selector

Google asks that grouping match the variant selector on the page. If one product page offers sizes and colors in its dropdowns, all those combinations belong in one group. If your site splits colors onto separate pages, reflect that structure in the feed rather than inventing a different grouping.

URL checks

  • Open a sample of variant URLs in a private window and confirm the right option is preselected without a click.
  • Confirm the price in the server-rendered HTML changes for variants with different prices (Google crawls the HTML the server returns).
  • Keep redirects to a minimum; Google’s product page unavailable guide says to keep to two redirects or fewer.
  • Make sure variant URLs use the domain you verified and claimed in Merchant Center.

If your theme switches variants only with JavaScript and never changes the URL or the server-rendered price, Google may read the default variant’s values for every variant. Test this before blaming the feed.

Images for each variant

Google’s image_link guidance recommends a unique image for each variant that shows the exact color or finish, with one variant per image. A green T-shirt should be submitted with a photo of the green T-shirt, not the blue one used as the product’s hero image.

Reusing one photo across distinct products is listed among the causes of image disapprovals. For variants, the practical risk is also a mismatch: the shopper sees a blue shirt in the ad, clicks, and lands on a green one.

  • Map each variant’s own image to its image_link; use additional_image_link for extra angles.
  • Make sure the image on the variant’s landing page is the same variant shown in the feed.
  • For customized items, show the customization.

For image size and format rules, see how to fix product image issues.

Availability and price per variant

Stock is tracked per variant, so availability must be too. Google’s availability documentation says variant availability must match per variant. If the small green shirt is sold out but other sizes are in stock, only the small green record should be out_of_stock.

On the page, Google asks you to disable variant options that are out of stock and show “sold out” text or a disabled buy button when the selected variant isn’t available. A page that lets shoppers select and add a sold-out size to the cart looks “in stock” to Google, which creates a mismatch.

Prices follow the same logic. If larger sizes cost more, each variant’s price must match what its URL shows. See fixing availability mismatches if those errors are already showing, and managing out-of-stock products for stock handling in general.

Variants in product structured data

Google Search Central’s merchant listing structured data guidance applies to pages focused on a single product or its variants. The schema.org properties that mirror your feed’s variant attributes are:

Feed attributeStructured data property
item_group_idinProductGroupWithID (on the Product) or productGroupId (on a ProductGroup)
idsku
color, size, material, patterncolor, size, material, pattern
Variant relationshipisVariantOf (recommended)
price, availabilityoffers.price, offers.availability

Google also has a dedicated Search Central document on product variant structured data and URL structure, which the item_group_id article points to. The principle is the same as for the feed: each variant’s markup should describe the variant the URL preselects, with the same price and availability you submit. Put Product structured data in the initial HTML; Google notes that markup generated by JavaScript can make Shopping crawls less frequent and less reliable.

For how markup and feeds work together, see how product structured data supports Shopping.

Platform notes: Shopify and WooCommerce

Most stores don’t write variant records by hand; a platform app builds them. That makes the app’s behavior the thing to check.

Shopify

The Google & YouTube app syncs products from Shopify, including their variants. Check in Merchant Center that each variant appears as its own product, that they share one group ID, and that the variant URLs open on the right option. If your theme or a variant app changes how variants load, re-check a sample afterward. More in Shopify Merchant Center troubleshooting.

WooCommerce

Variable products in WooCommerce map naturally to item groups. Whether you use the official Google for WooCommerce extension or another feed plugin, confirm that each variation has its own SKU, price, stock status and image set in WooCommerce, because the feed can only send what the product holds. Variations left without their own image often fall back to the parent image. See WooCommerce product feed errors for common plugin issues.

Variant audit checklist

  1. Pick five products with variants, including one with different prices per size.
  2. In Merchant Center, confirm each variant is a separate product with a unique ID and the same item_group_id.
  3. Check that no parent product is submitted on its own.
  4. Open each variant’s link; confirm it preselects that variant and shows the same title details, price, availability and image.
  5. Check color, size and other variant attributes are filled per variant (and age_group and gender for apparel).
  6. View the page source or use the URL Inspection Tool to confirm structured data describes the selected variant.
  7. Review Products > Needs attention for mismatch or image issues on variants.

When to get help

Variant problems usually come from the theme, the platform app and the feed disagreeing about which variant a URL represents. If you’ve checked the basics and mismatches keep returning, or a large catalog needs regrouping, our product feed optimization service can audit variant data end to end, and our technical SEO service can fix variant URLs and markup on the site side.

Frequently asked questions

Should each size and color be a separate product in Merchant Center?

Yes. Google treats each variant as a separate product with its own unique id, grouped with the others through the same item_group_id.

What should I use as the item_group_id?

Google suggests using the parent SKU. It must be 1 to 50 characters, the same for every variant of the product, and stable over time.

Do I submit the parent product too?

No. Google says not to submit the parent as a separate product; submit only the buyable variants.

Do variants need different URLs?

Yes. Each variant needs a distinct landing page URL, for example using query parameters, that opens with that variant selected and shows its values.

Can different variants have different prices?

Yes. Each variant’s price must match what its own landing page shows, so a larger size priced higher should carry that higher price in the feed.

Is item_group_id required in the US?

Yes, for variant products in Shopping ads targeting the US, and for variants in free listings generally.

Variant data out of sync?

We check how your variants are grouped, linked and marked up, then fix the source so feed and site agree.

Sources

Last reviewed October 10, 2026 against the official documentation listed above. Google changes Merchant Center features and policies regularly — always confirm details in your own account.

Similar Posts