Merchant API migration and Google Shopping feeds 2026 — PPC Rebels blog cover

Merchant API Migration in 2026: What Broke in Your Feed and a Full Audit Checklist

On August 18, 2026, Google shut down the Content API for Shopping for good. Anything that talked to Merchant Center through the old interface stopped delivering product data — integrations go quiet, feeds go stale, and Shopping and Performance Max keep spending on yesterday’s prices and availability. Two more deadlines sit on either side of it: local inventory on by default since August 31, and the 500×500 image requirement landing January 31, 2027. Here’s what actually breaks, how to tell “feed not updating” from “products disapproved,” how Merchant API differs structurally, and a full autumn checklist for your product data.

Three dates worth writing down

Date What happens Who it affects
August 18, 2026 Content API for Shopping fully shut down Every programmatic Merchant Center integration
August 31, 2026 Local inventory enabled by default on Shopping campaigns; the enable_local flag is ignored Retailers with physical stores, and anyone who explicitly disabled the local channel
January 31, 2027 Products with a primary image under 500×500 px get disapproved across all categories Any feed carrying legacy or small imagery

The first deadline has already passed — which is exactly why an autumn feed audit is worth doing even when everything “seems fine.” The API shutdown doesn’t look like an outage: campaigns keep running, ads keep serving, budget keeps spending. Only the product data stops moving.

The real risk in this migration isn’t a crash — it’s silence. A campaign running on yesterday’s prices and yesterday’s stock still generates clicks; it just converts worse and burns customer trust doing it.

Who has to migrate and who doesn’t

Migration is mandatory if:

  • you have a custom Merchant Center integration — an in-house script, a CMS module, an internal service;
  • you push products, prices or inventory programmatically;
  • you use a feed tool or plugin that hits the Content API directly and hasn’t been updated in a while;
  • you pull Merchant Center reports into BI through the API.

You don’t need to migrate if:

  • you upload feed files (XML, CSV) or fetch a scheduled feed from a URL;
  • you use Google Sheets as the feed source;
  • your platform already runs on Merchant API — most major vendors migrated customers automatically, but get that confirmed in writing rather than assumed.

The highest-risk group is stores on custom CMS builds and old plugins installed once and forgotten. Those are the integrations sitting in silent standstill right now.

A ten-minute check: is your feed still updating?

  1. Open Merchant Center → Products / data sources and look at the last successful processing date. Older than your normal refresh cycle means the integration is dead.
  2. Pick three to five SKUs whose price changed recently on your site. Compare the price in Merchant Center against the live page.
  3. Check a product that recently went out of stock. Still showing “in stock” in Merchant Center? The data isn’t arriving.
  4. Chart active product count over the last two months. A count that suddenly flatlines is the classic signature of a frozen integration.
  5. Search your service logs for auth failures or 404s against shoppingcontent endpoints — the old addresses no longer respond as expected.

Don’t conflate two different failure states: “feed not updating” (stale data, products still active) and “products disapproved” (fresh data that fails review). The second one, its diagnosis and its usual causes, is covered separately in Merchant Center product disapprovals and feed diagnostics.

How Merchant API differs from Content API

This isn’t a rename of endpoints — it’s a different architecture. What your developer has to absorb:

Aspect Content API for Shopping Merchant API
Structure One monolithic API Modular sub-APIs: products, accounts, inventory, reports, promotions, reviews
Protocol REST only REST and gRPC; gRPC recommended for bulk work
Price format Decimal value Micro-units (amountMicros) plus currency code
Batching customBatch Async and parallel calls
Page size Up to 250 products per request Up to 1,000 products per request
Versioning Single version for everything Per-sub-API versions, updated independently

The price trap that quietly breaks your numbers

The nastiest detail of this migration is the move from decimals to micro-units. A price of 19.99 becomes 19990000 — not 19.99, not 1999. An order-of-magnitude mistake throws no exception: the API happily accepts a valid integer. The product then goes live at a price a thousand times off. What follows:

  • Too low — CTR spikes, clicks pour in, conversion collapses because the site shows a different price, and you risk disapproval for landing-page price mismatch.
  • Too high — products stop winning auctions and traffic quietly disappears.

Mandatory acceptance step: after the first push, manually compare ten products across different price bands against your live site. An automated “field is not empty” test is useless here — you need value-level verification.

Modularity: a benefit and a source of surprises

Products, accounts, inventory, reports and promotions now live in separate sub-APIs with independent versions. Upside: you can update parts of your integration in isolation. Downside: there’s no single-shot migration anymore — you walk each module you actually use. Teams routinely discover their integration touched promotions or local inventory that nobody remembers building. On the promotions side, Merchant Center promotions and annotations is worth a read while you’re in there.

Local inventory on by default: what it means in practice

Since August 31, 2026, the local channel is enabled automatically on Shopping campaigns and the explicit opt-out flag is ignored. For retailers with physical stores this is mostly a gift — more surface with no extra configuration. For online-only sellers it’s a potential source of reporting noise.

What to do:

  • No physical stores? There’s no local inventory data to serve, so nothing appears on that channel. Still worth confirming via the channel breakdown in your reports.
  • Stores exist but you deliberately don’t want local listings? Filter campaigns to the Online channel in the inventory settings.
  • Rebuild reporting: online and local blended into one row makes period-over-period comparison meaningless. See custom columns and the report editor for splitting them cleanly.

Why the 500×500 rule is an autumn job, not a January one

From January 31, 2027, products whose primary image is smaller than 500×500 pixels get disapproved across every category and channel. The deadline looks distant. Two reasons to start now.

First, the workload is routinely underestimated. Small images almost always belong to legacy SKUs with no higher-resolution source files. AI upscaling produces mush that hurts CTR even when it technically passes review — so you’re looking at re-shoots or supplier requests, which take weeks.

Second, this disapproval switches a product off completely rather than ranking it lower. If 5% of your catalogue is at risk and those happen to be your best sellers, January gets expensive.

Practical plan: export the feed, chart SKU distribution by primary image resolution, sort the at-risk set by trailing 12-month revenue, and work top-down. General product data hygiene and feed structure are covered in the Google Shopping product feeds guide.

Migration and autumn audit checklist

Block 1. Diagnosis (1–2 hours)

  1. Last successful processing date for every data source.
  2. Manual price and availability comparison on 10 SKUs: site vs. Merchant Center.
  3. Active product count trend over 60 days.
  4. Inventory of every integration that writes to Merchant Center, forgotten scripts included.
  5. Written confirmation from your feed vendor that your merchant ID runs on Merchant API.

Block 2. Migration (if required)

  1. Inventory the old API methods you actually call — from logs, not from memory.
  2. Map each method to its Merchant API sub-product.
  3. Convert prices to micro-units and pass the currency code explicitly.
  4. Replace customBatch with async and parallel calls.
  5. Raise page size toward 1,000 where it speeds up full syncs.
  6. Test run on a sub-account or a limited SKU set.
  7. Manual price acceptance across ten products in different bands.
  8. Monitoring: alert when a data source hasn’t refreshed in N hours.

Block 3. Data hygiene for 2027

  1. Primary image resolution audit, prioritised by revenue.
  2. Landing page price vs. feed price consistency check (a common disapproval cause).
  3. GTIN and identifier check on products that recently lost visibility.
  4. Channel configuration (online / local) matched to your actual business model.

Recovery order when the feed has already frozen

Suppose the check confirms the worst: nothing has updated since August. The instinct is to push the full catalogue and restore normal service. That works, but it isn’t optimal — a mass upload after a long standstill often triggers a wave of disapprovals, leaving you with a second problem stacked on the first. A saner order:

  1. Stop spending on knowingly bad inventory first. If a meaningful share of products currently carries wrong prices or doesn’t exist, pausing Shopping campaigns for a day is cheaper than paying for clicks on offers you can’t fulfil.
  2. Push a small sample. 50–100 SKUs across categories and price bands. Wait for full processing, then read the statuses.
  3. Verify prices manually. This is the step that catches the micro-unit error before it reaches the whole catalogue.
  4. Upload the rest in batches. Not one giant request — chunks, with status checks between them, so a problem stays localised.
  5. Let it settle for a day. Product statuses don’t update instantly; judging results immediately after upload tells you nothing.
  6. Only then re-enable campaigns. And leave bid targets alone for a week — the model has to relearn on an accurate catalogue.

One reporting note: flag the standstill period as anomalous in your analytics. Otherwise those weeks quietly enter your seasonal baselines a quarter from now and distort planning.

How this shows up in campaigns

A stale feed doesn’t only hurt Shopping. Performance Max builds much of its work around product data, and a frozen feed means the algorithm optimises toward a catalogue that no longer exists — pushing out-of-stock items and ignoring new arrivals it never learned about. On the surface this reads as “PMax dipped for some reason,” and the investigation goes into campaign settings instead of the data source. How to separate the two is covered in the complete Performance Max guide.

The second effect hits bidding. Smart Bidding learns from conversions, and if a share of clicks lands on unavailable products you’re paying to train the model on garbage. After you fix the feed, resist the urge to immediately retune targets — let the strategy relearn, roughly one to two weeks or one full conversion cycle; see the Smart Bidding learning period. If the cleanup also involves consolidating campaigns and budgets, portfolio bid strategies and shared budgets covers what that does to pacing.

When somebody else built the integration

Most stores didn’t write their own integration — an agency, a contractor or a theme developer did, and that person may not answer email anymore. It’s the riskiest configuration, because ownership is diffuse and the symptom is silence. Practical sequence:

  1. Identify who actually owns it. In Merchant Center, list the apps and service accounts with access to your merchant ID. That’s a concrete list, not guesswork.
  2. Ask the vendor one precise question. Not “do you support Merchant API,” but “is my merchant ID switched to Merchant API, and what’s the last successful sync timestamp.” The first phrasing invites a vague answer; the second doesn’t.
  3. Verify independently. Processing date plus a manual price comparison takes five minutes and needs no access to anyone’s code.
  4. Revoke unused access. Dormant service accounts from a contractor who left two years ago are both a security exposure and a source of duplicate feed writes.
  5. Put ownership in writing. Name who fixes the feed if it stops on a Saturday. Without that, diagnosis takes days instead of hours.

Monitoring that catches silent failures

The lesson of the Content API story: what matters most is noticing the absence of movement where movement should be. A minimal alert set that covers roughly 90% of scenarios:

Alert Trigger Usual meaning
Stale data source No successful processing for N hours (N = 2× your normal cycle) Integration has stopped
Active product count jump Change over 10–15% in 24 hours Mass disapproval or export failure
Price mismatch Automated sample check: feed vs. site Conversion error or sync drift
Shopping impression collapse Day-over-day drop above 30% Feed issue or category-level disapproval
Out-of-stock share spike Jump against the weekly norm Inventory data isn’t arriving

The first two are covered by native Merchant Center notifications and account rules; the third needs a small script on your side, and it’s the one that catches the micro-unit trap. If you already export data to a warehouse, build all of this there — setup is covered in Google Ads BigQuery data transfer and reporting.

Common migration mistakes

  • Migrating from the docs without reading your logs. Nearly every integration calls methods the team has forgotten about. Inventory from actual traffic.
  • Skipping the manual price check. The micro-unit trap doesn’t throw errors — it produces wrong numbers.
  • Migrating the whole catalogue at once. A 50–100 SKU test run surfaces 90% of the problems at a fraction of the cost.
  • Assuming the vendor handled it. “We support Merchant API” doesn’t mean your specific account is switched. Ask for confirmation against your merchant ID.
  • Not adding monitoring. The lesson of this whole episode: a silent failure is more dangerous than a loud one. A staleness alert is not optional.

FAQ

Is the Content API shutdown final, or will there be an extension?

It happened on August 18, 2026, with no extension announced. The old endpoints no longer serve product operations.

Do I need to migrate if I upload feed files?

No. File uploads, scheduled fetches and Google Sheets are unaffected — this only concerns programmatic API access.

What’s the fastest way to tell my integration is dead?

Check the last successful processing date on your data source and manually compare a couple of prices against your site. Stale date plus diverging prices equals a stopped integration.

What are micro-units and why the change?

Prices are stored in millionths of a currency unit: 19.99 becomes 19990000. It eliminates floating-point rounding errors, but demands careful conversion on your side.

What happens if I get the price conversion wrong?

The API accepts it — the value is valid. Products go live at the wrong price, which either floods you with unqualified clicks and landing-page mismatch disapprovals, or silently kills your impressions.

Do I have to move to gRPC?

No, REST remains available. gRPC is recommended for large catalogues and bulk operations where sync speed matters.

I have no physical stores but local inventory was force-enabled. What now?

Practically nothing changes — with no local inventory data there’s nothing to serve. Confirm via the channel breakdown in your reports.

Does the 500×500 rule apply to every category?

Yes. From January 31, 2027 it’s a blanket requirement for the primary image across all categories and channels.

Can I just upscale the old images?

Technically yes, but a soft, upscaled image lowers CTR and conversion. For your revenue-driving SKUs, re-shoot or request source files from the supplier.

How does a frozen feed affect Performance Max?

The algorithm optimises against an outdated catalogue: it promotes items you don’t have and never sees new arrivals. The dip looks like a campaign problem when the cause is upstream.

Should I adjust bids right after fixing the feed?

No. Let the strategy relearn on accurate data — roughly one to two weeks or one full conversion cycle — before touching targets.

What monitoring prevents a repeat?

Two alerts at minimum: “data source hasn’t refreshed in N hours” and “active product count moved more than X% in 24 hours.” Both catch silent failures before sales notices.

Bottom line

The Content API shutdown is a rare case where a major technical change produces no error message anywhere in the ads interface. Campaigns run, budget spends, dashboards look normal, and product data quietly ages. The autumn review takes a couple of hours: processing dates, ten manual price checks, an integration inventory, a staleness alert. Then move on to images for the 2027 requirement, starting with the SKUs that actually make money.

If your product feed is the backbone of your traffic, keep auditing it on a schedule instead of reacting to dips. More Merchant Center, Shopping and infrastructure breakdowns are in the PPC Rebels blog; account and service terms are on the Google Ads agency accounts and services pages.

Similar Posts