NextWoo
Paid traffic

Your Shopping campaign is only as good as your product data

Disapprovals, mismatched prices and vague titles quietly cap your reach long before bidding does. Fix the data, then spend.

WooCommerce product cards prepared for a Google Shopping feed

When a Shopping campaign underperforms, the first instinct is to touch bids, budgets or the campaign type. Most of the time the constraint sits earlier: Merchant Center is reading a product feed that is incomplete, stale or contradicted by the landing page, and the auction is quietly showing fewer of your products than you assume. Nothing in the Ads interface makes that obvious. This page walks through how a feed is produced from WooCommerce, which attributes Merchant Center actually expects, why items get disapproved, and which of those fixes belong on the storefront rather than in a plugin setting.

01

The auction reads your data before it reads your bid

A Shopping ad is assembled from your feed, not from ad copy someone wrote. The title, image, price and availability shown in the auction come straight from the attributes you send, and matching is driven by what that text says rather than by keywords you picked. That has two consequences. First, a product with a thin or generic title competes for the wrong queries and loses the ones it should win. Second, a product that fails validation does not compete at all — it is simply absent, while the campaign keeps spending its budget on whatever remains eligible. Raising a bid on a disapproved catalogue changes nothing. Opening the diagnostics view and counting how many items are genuinely active is the first honest measurement any Shopping account deserves.

02

What Merchant Center expects from every product

Google's Merchant Center product data specification defines the contract. Every item needs a stable id, a title, a description, a link to the landing page, an image_link, availability and price, plus — for most retail categories — brand and either GTIN or MPN. Condition matters for refurbished and used goods. Shipping and tax are configured either in the feed or in account settings, and US accounts need tax handled correctly before ads serve. Two rules cause most of the pain: IDs must never be recycled between products, because review status and performance history attach to them, and every value you send must be true on the landing page at the moment Google checks. The same data also powers free listings in the Shopping tab, so a clean feed earns unpaid placement whether or not you are bidding.

  • id, title, description, link and image_link as the non-negotiable core
  • availability and price that match the landing page exactly
  • brand plus GTIN or MPN across most retail categories
  • condition, shipping and tax settled before anything serves
03

The disapprovals that actually happen

Rejection reasons cluster into a short list, and each has a different fix. A price or availability mismatch means the crawler read a different number on the page than the feed sent — usually a sale price the feed does not know about, a tax or currency display difference, or a page that renders price only after JavaScript runs. Missing GTIN blocks items in categories where Google expects a barcode; the fix is to collect real ones from the supplier, never to fabricate them. Promotional overlay text burned into the image file, a SALE badge or watermark, is rejected on sight, so the feed should point at a clean product photo rather than the merchandised version used on site. Policy issues in restricted categories need the account fixed, not the feed. And an unverified or unclaimed domain silently stops everything, which is worth checking before anyone debugs a single product.

  • Price or availability mismatch: align the page, not just the file
  • Missing GTIN: source real barcodes from suppliers
  • Image with overlay text: submit a clean product photo
  • Unverified or unclaimed domain: fix the account first
04

The title is the strongest relevance signal in the feed, and it is what most WooCommerce catalogues get wrong, because the product name in WordPress was written for someone already browsing your category. A shopper in Google rarely types your internal name. They type a brand, a product type, and the attribute that decides the purchase — size, colour, capacity, compatibility. A structure that survives truncation puts brand first, then the product name, then that deciding attribute, because the visible portion of the title is short. Resist stuffing: repeated keywords do not improve matching and read badly in the ad. This is a mapping exercise rather than a rewrite of your site, since the feed title is allowed to differ from the heading on the page, and for many catalogues it should.

05

Variants, parent products and supplemental feeds

Variable products create the most common structural mistake. Submitting the parent as a single item hides the fact that only two of nine sizes are in stock, and it sends a price that may not match the variation the shopper lands on. In most catalogues each purchasable variation should be its own item, sharing an item_group_id so Google understands they belong together, with size, colour and other variant attributes populated. Where a variation has its own photo, send it. Supplemental feeds are the pragmatic tool for everything the plugin cannot express: a second file that overrides titles for your worst performers, adds GTINs gathered from suppliers, or excludes products you do not want advertised — all without editing the underlying WooCommerce data or fighting the primary feed generator.

06

Keeping price and stock honest between updates

A feed is a snapshot, and the gap between snapshots is where mismatches are born. There are three mechanisms and they are not equivalent. A scheduled fetch pulls your generated file once or a few times a day, which is fine for a stable catalogue and dangerous during a flash sale. Google's crawler independently reads the landing page and compares it against what you sent, so a disagreeing page creates a disapproval even when the file itself is valid. The Content API pushes changes as they happen and is the right answer for stores with frequent price moves or thin stock. Whichever you pick, decide deliberately what happens to out-of-stock items — quietly leaving them marked as available is the fastest route to an account-level warning. A second opinion on that setup is a reasonable thing to bring to a call.

  • Scheduled fetch: simple, but stale between runs
  • Crawler comparison: the page is the source Google trusts
  • Content API: near real-time, worth it for volatile pricing
  • Out-of-stock rule agreed before the sale, not during it
07

Where the storefront does the work

This is the line between the shop and the shopfront. WooCommerce stays the system of record: products, variations, stock levels, prices, tax rules, coupons and orders never leave it, and the feed generator keeps reading from that same data. What changes is the page the crawler lands on. If price and availability appear only after client-side JavaScript, or if the page is slow enough that the crawler gives up, the comparison fails and items are suspended for reasons that look like a feed bug but are not. A server-rendered product page puts price, currency and availability in the HTML, backed by Product structured data stating the same numbers the feed claims. That consistency is not decoration; it is the mechanism that keeps items approved. It is also the same work that improves product page performance and organic visibility.

08

Fix the data before you raise the budget

There is a version of this where you should not hire anyone. If Merchant Center already shows most of your catalogue active and your titles carry brand and attribute, the problem is probably in the account — negatives, product segmentation, margin per order — and no amount of feed work will move it. If you run a few hundred products, a well-configured free feed plugin plus an afternoon of manual GTIN entry gets you most of the way, and that is cheaper than any engagement. And if the campaign is unprofitable because your margin cannot support the click price in your category, better data only makes you lose money more efficiently. Work here starts at $1,999 and earns its keep when the storefront itself is causing the mismatch; pricing sets out what that covers. Otherwise, spend the afternoon in Merchant Center first.

Frequently asked questions

Still have questions?

Reach out and we'll get back to you within 24 hours.

Contact us
How much does fixing a product feed cost?

Engagements start at $1,999, which covers an audit of the feed against Merchant Center's specification and the storefront changes that keep the landing page consistent with it. If the fix is purely a plugin setting or a handful of missing GTINs, we will tell you that instead of billing for it.

Will you change anything inside my WooCommerce admin?

Products, prices, stock, tax rules and orders stay exactly where they are and keep being edited the same way. Feed corrections happen either in the generator's mapping or in a supplemental feed layered on top. The storefront work touches how the product page renders, not what it sells.

How long before disapproved products come back?

Once the underlying cause is fixed, Merchant Center needs to recrawl or refetch before the status changes, which usually takes a few days rather than hours. Account-level issues like domain verification clear faster; image and policy rejections need a full review cycle.

Do I need the Content API, or is a scheduled fetch enough?

A scheduled fetch is enough for catalogues with stable prices and deep stock. If you run frequent promotions, thin inventory, or dynamic pricing, the delay between fetches is what creates mismatch disapprovals, and the Content API removes it. Choose based on how often your prices actually move.

Terms used on this page
Related reading
  • Google Ads not profitable

    Ad spend climbing and orders flat? Work through the unit economics, tracking, message match and landing page speed that decide whether paid clicks can pay.

  • WooCommerce SEO migration

    Move your WooCommerce frontend with URL parity, metadata checks, schema, redirects and Search Console monitoring before launch.

  • Product page optimization

    Turn product pages into answer machines: imagery, variants, honest stock, sizing help, delivery and returns that settle doubt before the add-to-cart tap.

  • Instagram and TikTok selling

    Social selling is a product-data problem before it is a content problem. How catalogue sync, checkout ownership and attribution really work for a store.

See how many sales your store is losing

Start with a free speed audit. You'll get your store's real numbers and an honest recommendation — even if it's "you don't need us".

No sales call — you'll get a written report with your store's numbers. Privacy policy