IVAN CAPPONI.NET/C# · Microsoft Azure

Feed · Google · Azure

Google Merchant Center: sync the product feed from ERP on Azure

Last updated: June 202610 min readIntermediate

Product feed synchronisation from ERP to Google Merchant Center on Azure
From the ERP catalog to Google Shopping: feed generation, validation and publication on Azure.

Google Merchant Center is the gateway to Google Shopping and product ads. For anyone whose catalog is managed in an ERP, the challenge is not uploading a file once, but keeping the feed in sync with real prices and availability. Let's see how to do it with a scheduled architecture on Microsoft Azure.

Two ways to feed Merchant Center

MethodWhen to use it
Feed file (XML/TSV)Medium catalogs, scheduled periodic updates
Content API for ShoppingTargeted, near-real-time price/stock updates

Often the best solution is hybrid: a periodic full feed as the baseline and the Content API for fast updates of the most volatile fields.

The attributes you cannot miss

  • id, title, description;
  • link and image_link;
  • availability and price;
  • brand and identifiers (gtin or mpn);
  • condition and google_product_category.

The quality of these fields directly affects product approval and visibility.

The synchronisation pipeline

  1. Extraction: read products from the ERP/PIM with up-to-date prices and stock;
  2. Transformation: map internal fields onto Merchant Center attributes;
  3. Validation: check required fields, formats and consistency before sending;
  4. Publication: generate the feed or call the Content API;
  5. Monitoring: read product status and fix disapprovals.

Scheduled architecture on Azure

A typical pipeline on Microsoft Azure includes:

  • Azure Functions with a timer trigger for scheduled cycles;
  • a transformation and validation step;
  • Blob Storage to host the feed file (a URL Google can fetch);
  • Content API for targeted price and availability updates;
  • logs and alerts to catch disapproved products or feed errors.

Real example of a validated TSV row

Before publishing I always generate a control file with a few sample rows: one valid row, one without GTIN, one discounted and one unavailable. It verifies encoding, separators and transformations before the full feed.

id	title	description	link	image_link	availability	price	brand	gtin	condition
ERP-12345	Men running shoe	Lightweight training shoe	https://shop.example.com/p/erp-12345	https://cdn.example.com/p/erp-12345.jpg	in_stock	79.90 EUR	Example	8051234567890	new

If the page price changes faster than the full feed, I use an API delta only for price and availability. The nightly feed remains the source for the full product sheet; the delta avoids temporary price-mismatch suspensions.

Operational anti-disapproval checklist

  • compare feed price vs page price for at least top SKUs before publication;
  • validate image URL with HTTP 200 and correct MIME type;
  • normalize availability: in_stock, out_of_stock, preorder;
  • daily report of disapproved items, grouped by reason and ERP category;
  • alert if disapprovals exceed a percentage threshold of submitted items.

Handling disapprovals

Merchant Center reports issues at the product level: wrong identifiers, prices inconsistent with the page, invalid images. It pays to periodically read product status via API and surface errors where they can be fixed at the source (in the ERP/PIM), instead of "patching the feed".

Common mistakes

  • feed updated too rarely compared to real prices and stock;
  • prices in the feed different from the landing page (a cause of suspension);
  • missing or wrong product identifiers;
  • no monitoring of disapprovals.

Conclusion

Syncing Google Merchant Center from the ERP is a data-pipeline problem, not a file problem: extraction, transformation, validation and scheduled publication, with the Content API for fast updates. On Azure this pipeline is simple to automate and monitor. Official reference: Google Merchant Center Help.