Skip to content

Google Merchant API Sync changelog

All notable changes to Google Merchant API Sync (kv_google_merchant) are documented here. The format follows Keep a Changelog and the project uses Semantic Versioning.

Release-gate fixes before the first release (audit 2026-11-07, all closed in 1.0.0):

  • Developer registration of the Cloud project (registerGcp) with a “Register API access” block, status check and clear 401 messages on the Connection page; documented that test accounts cannot register.
  • A refused login (token endpoint 400 / 401) stops the sync as a connection problem instead of marking every product as an error; a deleted data source is created again.
  • Links are always https on the target’s host, independent of the cron context; Ultimate targets use their storefront’s domain and include shared products.
  • availabilityDate for pre-order (and backorder with a date); backorder without a date is sent as out of stock by default.
  • Offer ids with /, % or ~ use the unpadded base64url identifier in get and delete.
  • “Remove all from Google”, removal queue for deleted targets and changed identities, Offer ID prefix and a warning when a file feed add-on is active.
  • Smaller fixes: quota back-off until 12:00 UTC with no push pile-up, lost-update guard, API-only data source adoption, upper-case feed labels, 50 character offer ids, item group id for variations, currency parameter on landing pages, PKCE, Ultimate storefront admins cannot manage the shared connection.
  • Initial release: product sync to Google Merchant Center through the Merchant API v1 (productInputs insert and delete), replacing the Content API for Shopping.
  • Connection with the merchant’s own Google Cloud project: OAuth 2.0 (refresh token) or service account (JWT); secrets stored encrypted.
  • Targets (API data sources) per country and language, with currency, tax percent, shipping hint, category, vendor (Multi-Vendor) and storefront (Ultimate) filters.
  • Full sync and incremental sync on product save, stock movement, disable and delete; unchanged products are skipped by hash and refreshed after 25 days.
  • Idempotent sends: a retry after a timeout replaces the same offer; a data source is adopted before it is created; 404 on delete counts as done.
  • Job queue with back-off (5 min to 12 h), quota aware (HTTP 429), cron by command line and secret address, log with CSV export.
  • Attribute mapping (GTIN, MPN, brand, condition, colour, size, gender, age group) and Google product category per category, per storefront.
  • Google status and item level issues read back and shown with filters and help links.