In Shopping and Performance Max campaigns there are no keywords to bid on. Google reads your product feed to decide which searches each product can show for, what the ad looks like and how you can group products for bidding. That is why better titles, complete attributes and margin-based custom labels usually do more for ROAS than another round of bid changes.
Why the product feed drives Shopping performance
The feed controls four things before any bid strategy gets involved:
- Eligibility. A disapproved product never enters the auction, whatever the budget.
- Relevance. Google matches queries against the title, description, product type, category and attributes. Terms that appear nowhere in the feed are much harder to show for.
- Click appeal. The shopper decides from the image, title, price and ratings, all pulled from the feed and Merchant Center.
- Segmentation. Campaigns and Performance Max listing groups can only split products by attributes the feed contains: brand, category, product type, condition, item ID and custom labels.
Bidding algorithms optimize within those limits. If a bestseller’s title never mentions the term people search, no target ROAS setting will reliably find that traffic. When I audit a Shopping account, I compare the search terms report with the feed before looking at bids.
Title structure by product category
The title is the strongest matching signal you control. Three rules apply everywhere:
- Front-load. Put the product type and the deciding attribute in the first few words, since most placements truncate the rest.
- Use shopper vocabulary. “Running shoes,” not “The Aspen.” Pull the words from your search terms report, Search Console queries and on-site search.
- No promotional text. Phrases like “free shipping” or “sale” and all-caps emphasis break Merchant Center’s editorial requirements.
Order the rest by how people search your category. These are my working formulas; the brands in the examples are made up.
| Category | Formula | Example |
|---|---|---|
| Apparel | Brand + gender + product type + material + color + size | Northfield Women’s Merino Crew Sweater, Oatmeal, M |
| Beauty and consumables | Brand + product type + key ingredient or benefit + size or count | Brightleaf Vitamin C Face Serum, Fragrance-Free, 1 fl oz |
| Electronics | Brand + product type + key spec + model number | Voltra 65W USB-C Charger, 3-Port, VC-65 |
| Home and furniture | Product type + material + dimensions + color + brand | Solid Walnut Dining Table, 72 x 36 in, Natural – Oakline |
| Replacement parts | Part type + compatible model + brand + part number | Water Filter for Frostline FX200 Fridge – Purelink PL-44 |
Notice that brand moves. Lead with it when people actually search that brand name, as with well-known labels you resell; a young DTC brand usually does better with product type first and brand last.
Common mistakes: internal product names, synonym stuffing, and identical titles across variants so size and color never appear.
Attributes that affect matching: GTIN, brand, color and size
Attributes decide whether Google understands what you sell and which filters you appear under.
| Attribute | What it does | Common mistake |
|---|---|---|
gtin | Links your offer to Google’s product catalog so it can match specific product searches and comparisons | Missing on products that have barcodes, or invented GTINs |
brand | Matches brand searches and powers brand filters | Spelled three different ways across the catalog |
color | Required for apparel in several major markets; drives color filters | Marketing names like “Midnight 04” instead of “Navy” |
size, gender, age_group | Required for apparel in the same markets; used for filtering | Left blank on accessories or kids’ items where they apply |
item_group_id | Groups variants of one product | Missing, so variants look like duplicates |
product_type | Your own category path; useful for campaign structure | Copied from store navigation (“New In > Summer Edit”) |
google_product_category | Google’s taxonomy; assigned automatically if you leave it out | Not corrected when the automatic category is wrong |
description | Secondary matching text; specs and use cases help | Brand story with no specifications |
If a product has a manufacturer-assigned barcode, submit it. If it genuinely has none, as with handmade goods, submit brand and MPN where you have them and set identifier_exists to no. Merchant Center usually flags missing identifiers as a “limited performance” issue rather than a disapproval, so the problem can go unnoticed for months.
For colors, map creative names to plain ones (“Moss” to “Green”). Multicolor items can list up to three colors separated by a slash.
Images and Merchant Center disapprovals
The image often decides the click. Google’s image rules are strict: the product must be clearly shown, with no promotional overlays, watermarks, borders or placeholder images. A clean main image on a plain background is safe for most categories. Add angles and lifestyle shots with additional_image_link.
Most disapprovals I see come from a short list:
- Price mismatch between the feed and the landing page, often from sales that update the site but not the feed
- Availability mismatch, where the feed says in stock and the page says sold out
- Image policy, usually a “sale” badge or logo baked into the main image
- Missing or incomplete shipping settings in Merchant Center
- Broken or redirecting landing pages after a URL change
- Account-level misrepresentation, which usually points to missing contact details, return policy or clear business information on the site
Fix causes at the source. Product pages should carry structured data with the same price and availability as the feed, and feed fetches should keep up with price changes. Automatic item updates can correct price and availability from your pages, but treat that as a safety net. Check diagnostics weekly, because warnings cost reach without showing as disapprovals.
Custom labels for margin, bestsellers and seasonality
You get five custom label slots, custom_label_0 to custom_label_4. Shoppers never see them; they exist so you can group products for bidding and reporting. Give each slot one fixed purpose and a small set of values.
| Slot | Purpose | Example values | Refresh |
|---|---|---|---|
| 0 | Margin tier | margin_high, margin_mid, margin_low | Monthly |
| 1 | Sales performance | bestseller, steady, zombie, new | Weekly |
| 2 | Season | evergreen, summer, holiday | Each season |
| 3 | Price band | under_30, 30_to_80, over_80 | When prices change |
| 4 | Promotion or stock | on_sale, clearance, low_stock | Daily |
Margin is the label that changes results most. Every product has its own break-even ROAS: 1 divided by its contribution margin, calculated with the per-order cost model in contribution margin for DTC. In a hypothetical catalog, a product with 55% contribution margin breaks even at a ROAS of about 1.8, while one at 25% needs 4.0. Put both under one target ROAS and the campaign overspends on the thin-margin product and holds back the one that can afford to grow. Target ROAS is set per campaign, so split margin tiers into separate campaigns and give each its own target.
The performance label solves a different problem. Smart bidding tends to concentrate spend on a few proven products, leaving much of the catalog with few impressions. Tagging those “zombie” products lets you give them their own budget or exclude them deliberately. The Performance Max guide covers when to split campaigns by these labels and when to use listing groups inside one campaign so each keeps enough data to learn.
Supplemental feeds and feed rules
Your primary feed usually comes from the store platform’s Google integration. You rarely want to rename store products to suit Shopping, so do feed-specific work in two layers on top.
Supplemental feeds add or override attributes for products already in the primary feed. A Google Sheet with an id column plus the changed attributes is enough. It’s the right home for labels calculated elsewhere, such as margin tiers from a cost sheet. Two cautions: IDs must match the primary feed exactly, including any country or variant codes the platform adds, and a supplemental feed can’t create new products.
Feed rules in Merchant Center transform values as they come in. Typical uses:
- Build titles from attributes, such as product type + material + color + size
- Map creative color names to plain ones
- Strip promotional words from titles
- Fill
product_typefrom a collection or tag field
Decide which layer owns each attribute and write it down. When a title can come from the store, a rule or a sheet, nobody knows which edit actually shipped.
Testing feed changes
There’s no clean built-in A/B test for feed titles, so use matched groups:
- Pick comparable products, such as one category with steady volume, and split them into a test group and a control group. Save both as item ID lists for reporting.
- Record a baseline of two to four weeks per group: impressions, click-through rate, clicks, conversions and conversion value.
- Change one thing on the test group only, for example the title formula. Leave bids, budgets and ROAS targets alone for the whole test.
- Run for two to four weeks, longer for low-volume products.
- Compare the change in each group, not the raw numbers, so seasonality and account-wide shifts cancel out.
- Check the search terms report for queries the test group didn’t match before.
Read the metrics in order. Impressions tell you whether matching improved, click-through rate tells you whether the title and image got more appealing, and conversion rate mostly reflects price and landing page. A title change that lifts impressions but lowers conversion rate may be matching the wrong searches.
Before shipping any feed change, check:
- The change appears in the Merchant Center preview for a sample of products
- No new disapprovals or warnings after the next feed fetch
- Test and control item lists are saved in a reporting view
- No bid, budget or structure changes scheduled in the same window
- Baseline numbers recorded before the change goes live
This is the order I work in on performance marketing engagements for ecommerce: feed first, campaign structure second, bids last.
Get it built
If Shopping or Performance Max spend keeps rising and ROAS doesn’t, the feed is usually the first place to look. The Growth Audit covers feed quality, campaign structure and margin-based targets for $1,500 fixed, credited if we continue. See pricing or get in touch.