Case study — a premium homeware omni-channel retailer
Catching product-feed problems before they cost a month
Product disapprovals, demotions and price-competitiveness shifts now surface as daily alerts instead of end-of-month surprises.
- Google Merchant Center API
- Python
- SQLite
- launchd
The challenge
For an e-commerce retailer running Shopping campaigns, the product feed silently decides how much of the catalogue can compete. Products get disapproved or demoted, prices drift out of competitiveness, and by the time it shows up in revenue reporting, weeks of spend have underperformed.
What we did
We built a monitoring service on the Google Merchant Center reporting APIs that runs on a daily schedule: tracking product approval status, demotions, price competitiveness against the market, best-seller coverage and performance trends. Every run is stored in a local history database so changes are detected against yesterday — not against memory — and meaningful shifts trigger an email alert the same day.
The outcome
Feed regressions that previously surfaced in month-end reviews now arrive as same-day alerts with the affected products attached. Daily monitoring gives the team earlier visibility of disapprovals, demotions and price-competitiveness shifts, and pricing decisions are informed by a current view of where the catalogue stands against the market — rather than one reconstructed weeks later.
Synthetic example
Repair runway
- 18 Missing identifiers Now
- 11 Price mismatch Next
- 7 Image policy Watch
- Safe repair
- 9
- Read-back
- 9
- Checkpoint
- OPEN
No customer data. Figures and products are deterministic fictional examples.
How to read this. Read-back proves the repair landed, not that it created sales; contribution remains UNKNOWN without a holdout.
Working in omni channel retail? Let’s talk.