Catalogue & product data
Product Feed Generation (Google, Meta, TikTok, Pinterest)
Indicative price, not an offer: $25-59/mo per channel or bundled $49-99/mo
Generated from docs/plan/paid/product-feed-generation/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.
A paid module that generates and hosts product feeds in marketplace-specific formats (Google Merchant Center XML, Meta/Facebook CSV, TikTok Shop JSON, Pinterest TSV). Transforms AstroBaaS attributes into each platform’s schema, handles field validation, and deploys feeds to CDN or direct upload. Solves the problem of merchants manually maintaining feeds in spreadsheets and uploading them once a week.
The problem
Every marketplace wants a different feed format. We maintain feeds in Excel, manually sync product changes, and upload to Google Merchant, Meta, and TikTok once a week. Half our listings are stale because we forget to update. We need feeds that automatically sync whenever we update a product.
What it does
- Feed template builder: select marketplace (Google, Meta, TikTok, Pinterest), map AstroBaaS attributes to feed fields (title, description, price, image, category)
- Pre-built feed templates for top 10 marketplaces with auto-mapped common fields
- Feed generation on schedule (hourly, daily, weekly) or on-demand
- Field validation per marketplace (Google requires ‘link’ and ‘image_link’, Meta requires ‘fb_product_category’)
- Feed hosting on CDN with automatic SFTP/API upload to marketplace (if marketplace supports auto-import)
- Feed preview: show sample rows before generation, spot errors before publish
- Exclude products from feed per marketplace (e.g., hide discontinued items, hide low-stock items)
- Feed performance dashboard: impressions, clicks, CTR per marketplace (if marketplace provides reporting API)
- Localized feeds: generate separate feeds for DE, FR, IT regions with currency conversion
- Audit trail: show when feeds were generated, what changed, validation errors
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.
- Marketplace ad campaign management — paid marketplace ads module owns bid strategy and campaign rules; feed generation owns product data only.
- Marketplace inventory sync back to AstroBaaS — paid marketplace sync module owns bidirectional sync; this module is unidirectional (AstroBaaS → marketplace).
- Real-time marketplace click-through attribution — marketplace attribution is paid analytics module; this is feed generation only.
- AI-generated or AI-optimized titles/descriptions — that is paid AI content module; feed generation uses existing titles/descriptions.
- Multi-language translation — that is paid i18n module; this generates feeds in the language attributes are already stored.
- Dynamic pricing based on competitor data — paid pricing intelligence is a separate module; this uses prices as stored in AstroBaaS.
Data model
New FEED_TEMPLATE table (template_id, marketplace_id, attribute_mappings JSON, exclusion_rules JSON, schedule). New FEED_GENERATION_LOG table (feed_id, template_id, generated_at, row_count, validation_errors, upload_status). No migration; new tables only.
API
- POST /admin/feeds/templates (create feed template with marketplace + attribute mappings)
- GET /admin/feeds/templates/:id (fetch feed template and mappings)
- POST /admin/feeds/templates/:id/preview (generate and return first 10 rows for review)
- POST /admin/feeds/templates/:id/generate (full generation and upload)
- GET /admin/feeds/logs (list generation history, errors, upload status)
- GET /feeds/:templateId.xml (public feed endpoint for SFTP/manual fetch)
Every route added here must also appear in src/pages/openapi.json.ts — a test
fails the build if it does not.
Admin
Feed builder UI with marketplace selector, field-mapping UI (drag attribute → marketplace field), preview tab. Schedule setup (cron-like). Upload destination setup (SFTP, API key, webhook). Dashboard showing last generation time, row count, error count. Preview and generate buttons.
The seam — why this is paid
Paid feed module owns marketplace-specific schema transformation, field validation, feed hosting, and upload orchestration. Core provides product attribute API and catalog access. Paid module does not own the products; it consumes them via API and transforms them into feed format. Marketplace account credentials are stored in paid module’s settings, never in core.
Paid module owns channel-specific feed schema, attribute transformation, and feed hosting/CDN; core provides product attribute export only
Dependencies
- flexible-product-attributes (core)
- Product catalog API (core)
- Webhook/event system (optional, for on-product-change triggers)
- Marketplace provider integrations (assumed to exist as paid module sub-integrations)
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 template for Google Merchant Center is created with title, description, price, image_link, link attributes mapped
- Feed preview shows 10 sample rows with correct field names and values transformed per marketplace schema
- Generated feed validates against marketplace schema (no required fields missing, data types correct)
- Feed is published to configured CDN or SFTP endpoint after generation completes
- Excluded products (discontinued=true) do not appear in generated feed
- Generation log records timestamp, row count, and any validation errors; errors are displayed to merchant with field name + row number
- Schedule runs feed generation at configured time without manual intervention
- Localized feed (e.g., DE) generates separate file with prices converted and descriptions in correct language (if language attributes exist)
Risks
If marketplace schema validation is not enforced, feeds are rejected and merchant sees no error until marketplace rejects upload. Mitigate: pre-flight validation and explicit error reporting. If excluded-products filter is applied too broadly, products disappear from listings unintentionally. Mitigate: dry-run preview before generation. If SFTP/API credentials are leaked, attacker can upload malicious feeds. Mitigate: rotate credentials regularly, audit upload logs, alert on credential used outside expected time window. If feed generation is slow (large catalogs), merchants hit marketplace sync delays. Mitigate: incremental generation (only changed products) instead of full regeneration.
Commercial context
| Suggested price | $25-59/mo per channel or bundled $49-99/mo |
| Rival anchor | Gepard, MerchPIM, Quable (PIM apps with integrated feed generation); freemium with paid $30-100/mo |
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.