AstroBaaS

Integrations & channels

Google Shopping Feed

Paid pluginsize Mplanned, not built

Indicative price, not an offer: €19/mo; credential: Google Merchant Center integration, daily feed sync

Generated from docs/plan/paid/google-shopping-feed/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.

Merchants publish an XML feed of products to Google Merchant Center, making them searchable on Google Shopping. The paid pack maintains Google Merchant Center API integration; core owns the XML feed generation and feed scheduling.

The problem

Merchants want to list products on Google Shopping, but creating and maintaining an XML feed requires technical knowledge. Without automation, feed becomes stale when products update.

What it does

  • XML feed generation: products exported to Google Shopping XML format (product ID, title, description, image, price, availability)
  • Daily feed updates: feed is automatically regenerated each day at a scheduled time
  • Direct upload to Google Merchant Center: feed is uploaded to Merchant Center API automatically
  • Product filtering: admin can exclude categories, tags, or status (e.g., hide clearance products)
  • Feed validation: check for missing required fields (title, price, image) before upload
  • Error reporting: if upload fails, admin gets email notification
  • Multiple feeds per merchant: support different feeds per region/currency
  • Test mode: validate feed without uploading to Google

What it deliberately does NOT do

Each boundary carries its reason. A boundary without a reason gets crossed by the next person who reads this.

  • Product reviews sync: Google Shopping shows reviews from Google Customer Reviews; we do not sync customer reviews from AstroBaaS.
  • Ads campaign management: Google Shopping Ads campaigns are managed in Google Ads; we provide feed only.
  • Dynamic pricing: we export current price only; merchant’s Google Ads campaigns can adjust bids.
  • Local inventory ads: we support feed for online sales; local inventory requires store locations, which is out of scope.

Data model

New document: google_feed_config { feedId, name, region, currency, filterRules { excludeCategories, excludeTags, excludeStatus }, lastUploadAt, uploadStatus }.

API

  • POST /api/google-shopping/feed { name, region, currency, filterRules } -> { feedId }
  • GET /api/google-shopping/feed/{feedId}/status -> { lastUploadAt, uploadStatus, itemCount, errorCount }
  • POST /api/google-shopping/feed/{feedId}/upload -> { success, itemsUploaded, errors }
  • GET /api/google-shopping/feed/{feedId}/preview (first 100 items as XML)
  • POST /api/google-shopping/feed/{feedId}/validate -> { valid, errors }

Every route added here must also appear in src/pages/openapi.json.ts — a test fails the build if it does not.

Admin

Admin sees: feed configuration (region, currency, filter rules), feed preview (first 100 items), last upload status, error log, upload schedule.

The seam — why this is paid

Core owns the XML feed generation and scheduling. Paid pack owns: Google Merchant Center API integration, feed validation rules, upload support.

Credential: Google Merchant Center API, feed validation, policy compliance

Dependencies

  • product subsystem (existing)
  • scheduler subsystem (existing)

Acceptance checks

Each of these must be able to fail. Before claiming this is done, break the code deliberately and watch each one go red.

  • Feed is generated daily at 2 AM UTC; timestamp is recorded
  • XML feed includes product ID, title, description, image URL, price, availability
  • Admin filters feed to exclude category ‘clearance’; clearance products are not in feed
  • Validation detects 50 products missing images; admin chooses to exclude them from feed
  • Feed is uploaded to Google Merchant Center; 950 valid items are accepted
  • If upload fails (API error), admin receives email notification with error details
  • Admin can manually regenerate and upload feed from admin UI
  • Multiple feeds can be configured for different regions (US, DE, etc.)

Risks

If required fields (title, price) are missing, Google rejects entire feed. If product images are broken URLs, Google shows placeholder. If feed is not updated after product is deleted in AstroBaaS, Google shows out-of-stock item for weeks. If currency conversion is wrong, prices are incorrect on Google Shopping. If feed upload schedule conflicts with high-traffic hours, customers see stale inventory.

Commercial context

Suggested price€19/mo; credential: Google Merchant Center integration, daily feed sync
Rival anchorGoogle: free (native); Shopify: free (native); custom: €500+

The anchor is what the nearest equivalent charges on Shopify or Magento today. It is context for a pricing decision, not the decision.


Generated from the commerce plan. See docs/COMMERCE-PLAN.md for the full catalogue and ../../AI-GUIDE.md for how to work on this repository.