A product feed rules engine lets you transform any field in your product data before it reaches Google Shopping. But with unlimited flexibility comes the question: which rules actually move the needle on performance, and which are satisfying to configure but don't materially impact results?

After working across hundreds of UK ecommerce feeds, these are the eight rules with consistent, measurable impact on Shopping ROAS.

Rule 1: Prepend brand to title

The single highest-impact title rule. Google Shopping matches products to brand + product queries (the most common Shopping query pattern — "Barbour jacket", "Nike Air Max", "Le Creuset casserole"). If the brand name isn't in the title, your product doesn't appear for brand searches even if you have the exact product.

IF title NOT STARTS WITH vendor THEN title = vendor + " " + title

This rule applies universally to all products where the brand (vendor in Shopify, brand in WooCommerce) isn't already in the title. It runs on every feed refresh — so if you add a new product without the brand in the title, it's fixed automatically.

Rule 2: Append colour and size from variants

Buyers searching for specific variants ("navy blue XL") or browsing Shopping's colour and size filters both benefit from explicit colour and size in the title. This is particularly high-impact for apparel, footwear, and anything with significant variant-level search demand.

IF color IS NOT EMPTY AND title NOT CONTAINS color THEN title = title + " " + color IF size IS NOT EMPTY AND title NOT CONTAINS size THEN title = title + " " + size

Applies to the feed title only — your Shopify or WooCommerce product names stay exactly as written. Your website shows "Barbour Beaufort Jacket"; your Shopping feed shows "Barbour Beaufort Jacket — Navy — XL".

Rule 3: Strip HTML from descriptions

WooCommerce and Magento descriptions frequently contain HTML markup — bold tags, paragraph tags, bullet list markup, even inline styles. Google's Shopping description field is plain text only. HTML in descriptions doesn't cause a disapproval but it does mean your description quality is degraded — Google sees "<p><strong>Features:</strong></p><ul><li>" rather than readable product copy.

APPLY strip_html TO description APPLY trim_whitespace TO description APPLY max_length(5000) TO description

This rule is especially important for ChatGPT Shopping feeds, which reject HTML in descriptions entirely — a single HTML tag causes the product row to fail validation. Trajekt applies HTML stripping as a default pre-processing step for ChatGPT JSONL output.

Rule 4: Map product categories to GPC numeric IDs

Most ecommerce platforms let you define your own category hierarchy (product_type in Google Shopping terms). This is valuable for campaign segmentation but doesn't help Google understand what category your product is in. The google_product_category field does that — and it needs to use Google's official taxonomy IDs, not your own category names.

IF product_type CONTAINS "Jackets" THEN google_product_category = 5697 IF product_type CONTAINS "Running Shoes" THEN google_product_category = 187 IF product_type CONTAINS "Sofas" THEN google_product_category = 4045

One rule per product category maps your entire catalogue. New products added to an existing category automatically get the correct GPC assignment on the next feed refresh.

Rule 5: Set identifier_exists for own-brand products

Own-brand and handmade products don't have manufacturer GTINs. Submitting them without a GTIN generates a "missing GTIN" warning in Merchant Center. Setting identifier_exists: no tells Google explicitly that no GTIN exists for this product — suppressing the warning and preventing any negative quality signal.

IF gtin IS EMPTY AND vendor = "[Your Brand Name]" THEN identifier_exists = "no"

Rule 6: Exclude out-of-stock products below minimum stock threshold

This goes beyond setting availability: out_of_stock. Excluding products with fewer than a minimum stock quantity (say, 2 units) prevents Shopping from driving traffic to products you're about to run out of. If a product has 1 unit and generates 10 clicks before selling, you've paid for 9 wasted clicks to a product page showing sold out.

IF inventory_quantity < 2 THEN excluded_destination = "Shopping"

The threshold depends on your fulfilment speed. For next-day dispatch operations, 2 units minimum is reasonable. For made-to-order products, the threshold might be 0 (never exclude). For products with high demand variability, a higher threshold reduces the risk of selling out during active Shopping impressions.

Rule 7: Custom label by season/collection

Seasonal labels enable bid adjustments aligned to your trading calendar. Increasing bids on current-season stock and reducing them on clearance or off-season products is one of the most consistent profitability improvements available in Shopping campaigns.

# Using Shopify collections as signal IF collection CONTAINS "AW26" THEN custom_label_1 = "aw26-current" IF collection CONTAINS "Clearance" THEN custom_label_1 = "clearance" IF collection CONTAINS "New In" THEN custom_label_1 = "new-arrival"

Rule 8: Remove promotional language from titles

Google Shopping policy prohibits promotional language in titles ("Sale", "Free shipping", "Best price", "% off"). These phrases occasionally appear in product titles imported from external sources or when merchants copy website banner language into product names. Google may disapprove or reduce visibility of products with promotional titles.

APPLY remove("SALE", "Sale", "FREE", "Free", "% off", "£ off") TO title

This is a defensive rule rather than an offensive optimisation — it prevents a specific class of policy violation rather than actively improving performance. But it's easy to configure and runs silently on every refresh, catching any promotional titles that come in from product imports or untrained data entry.

The compounding effect

These eight rules work independently, but their effect is compounding. A product with the brand added to its title, the correct GPC category, explicit colour and size attributes, and a margin-based custom label will outperform an otherwise identical product with none of these rules applied — at the same bid level, because its relevance score and match quality are higher. Feed quality reduces the bid you need to achieve a given ROAS target. That's the leverage point of the rules engine.

🌎
Trajekt Editorial
Product Feed & Ecommerce Specialists

Trajekt is a UK-built product feed management platform. Our editorial team covers feed optimisation, Google Shopping strategy, ChatGPT commerce, and ecommerce channel management for UK merchants and agencies.

Share: X / Twitter LinkedIn