← All resourcesFeeds

Why your catalog ads show the wrong price and how to fix it

FeedForce Team · 4 min read
Why your catalog ads show the wrong price and how to fix it

Few things erode trust in a catalog ad faster than a price that is wrong. A shopper clicks an ad for a jacket at $39, lands on a page showing $59, and leaves. You paid for the click, lost the sale, and taught that shopper to distrust your ads. At catalog scale, a systematic pricing gap quietly taxes the whole account.

The frustrating part is that the price in your store is correct. The wrong number is living somewhere between your store and the ad. This guide explains exactly where, and how to close the gap.

The root cause: the ad does not read your website

The single idea that explains every wrong-price problem is this: the platform does not serve ads from your live website. It serves from its own stored copy of your feed.

When a shopper sees a catalog ad, the price, image and title come from the version of your catalog the platform last fetched and cached, not from your product page in that moment. Your website is the truth; the platform's copy is a snapshot. A wrong price is always a stale snapshot, and there are two separate places the staleness creeps in.

Cause one: the feed has not re-synced yet

The first gap is data. You change a price in Shopify. Your store is instantly correct. But the platform only learns about the change when the feed re-syncs and it re-fetches, and that happens on a schedule.

Meta fetches a scheduled feed at most once per hour. Google lets you set a fetch schedule but does not publish a maximum frequency for standard product feeds. Either way, a scheduled fetch is a floor, not a ceiling: between the change and the next fetch, the platform is serving the old price because it genuinely does not know yet.

The fix: update faster than the schedule

For prices that change slowly, the scheduled fetch is fine. For flash sales, frequent repricing or fast-moving stock, waiting for the next fetch is too slow, and the answer is to push updates instead of waiting to be pulled.

Meta exposes a batch update API (items_batch) that updates price and availability directly, without waiting for the next scheduled feed. On Google, small supplemental updates for price and availability propagate faster than a full feed re-process. The principle is the same on both: for time-sensitive changes, use an API, not a scheduled file fetch. We cover the feed and its refresh mechanics in the product feed guide.

Cause two: the image is cached

The second gap is sneakier. Even after the feed data updates, the ad can still show the old price, because the price is often baked into a cached image.

Platforms and their CDNs cache product images aggressively. If your creative displays the price and you changed it, but the image URL stayed the same, the platform has no reason to fetch a new file. It keeps serving the cached one, old price and all, sometimes for days after the data behind it changed.

The fix: cache-busting URLs

The solution is to change the image URL whenever the creative changes. A unique URL per version forces the platform to treat it as a new file and fetch it, so an updated price or a sold-out badge actually reaches the viewer. This is called cache-busting, and it is the difference between "the feed says $39" and "the shopper sees $39." It is also one of the levers in five ways to lift your catalog ad performance, because stale creative and stale prices are the same problem wearing two hats.

Why this is worse than lost sales

A wrong price is not only a conversion problem. On Google, it is a compliance problem. Google compares your feed price against your landing page and, when they disagree, applies a preemptive item disapproval under the issue named "mismatched product price." The product does not underperform; it stops serving entirely until the values match.

So a pricing gap costs you three ways at once: wasted clicks, lost trust, and disapproved products that disappear from your ads. That is why closing it is worth engineering properly rather than tolerating.

Keeping price honest at scale

Doing all of this by hand, watching sync timing, pushing batch updates, versioning image URLs across a whole catalog, does not scale past a small store. It needs to be automatic, per product, every time something changes.

That is part of what FeedForce handles for Meta catalog ads: creatives refresh automatically when price, stock or imagery changes, and cache-busting is built in so platforms cannot keep serving an outdated image. The price your shopper sees stays the price in your store, across thousands of SKUs, without anyone watching the clock.

Frequently asked questions

Why does my catalog ad show a different price than my website?

Because the platform serves from its own stored copy of your feed, not your live site. When your price changes, there is a gap until the feed re-syncs and the platform re-fetches the image. During that gap the ad shows the old price. Cached images can extend the gap even after the feed updates.

How do I stop platforms from showing a stale price?

Two fixes work together: update the feed faster (a batch API rather than waiting for a scheduled fetch) and use cache-busting image URLs so the platform is forced to fetch the new creative instead of serving a cached one. The first fixes the data, the second fixes the image.

Can a wrong price get my products disapproved?

Yes. Google compares your feed price against your landing page and applies a preemptive item disapproval when they disagree, under the issue named mismatched product price. The product stops serving entirely until the values match, so a price mismatch is a hard stop, not a warning.

What is cache-busting and why does it matter for ads?

Cache-busting means generating a unique image URL whenever the creative changes, so platforms and CDNs cannot keep serving an old cached version. It matters because platforms aggressively cache product images, and without it a price or stock change may not reach the viewer for days.

Turn your feed into on-brand catalog ads.

Get Started
Contact me