Integrations & channels
Instagram Shopping
Indicative price, not an offer: €24/mo; credential: Instagram Shop API, product tagging, order sync
Generated from docs/plan/paid/instagram-shopping/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.
Merchants tag products in Instagram posts and Stories, driving social commerce. AstroBaaS product catalog syncs to Instagram Shop automatically; when customers buy via Instagram, orders sync to AstroBaaS. The paid pack maintains Instagram Commerce API integration; core owns the product tagging interface.
The problem
Merchants want to sell directly on Instagram (native checkout is gaining traction), but syncing products and orders manually is error-prone. Instagram Shop and AstroBaaS need to stay in sync.
What it does
- Product catalog sync: AstroBaaS products upload to Instagram Shop daily
- Product tagging in posts: merchants can tag products from AstroBaaS in Instagram posts/Reels/Stories
- Order import: Instagram checkout orders sync to AstroBaaS within 15 minutes
- Inventory sync: stock changes in AstroBaaS update Instagram Shop availability
- Image sync: product images upload to Instagram Shop
- Sync status dashboard: admin sees last sync time, synced item count, sync errors
- Test mode: sync to Instagram sandbox
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.
- Instagram ads integration: we sync catalog only; ads are managed in Instagram Ads Manager.
- Influencer partnerships: we do not manage shoppable posts from influencers (outside scope).
- Reels monetization: Instagram Reels bonuses are for creators; we do not integrate with Reels revenue.
- Story product stickers: While technically possible, advanced Story features are merchant’s responsibility to configure in Instagram.
Data model
New document: instagram_sync_record { productId, instagramProductId, lastSyncAt, syncStatus, error_message }. New setting: instagram_shop_id (string).
API
- POST /api/instagram/sync/start -> { jobId }
- GET /api/instagram/sync/{jobId}/status
- GET /api/instagram/sync/status (admin only)
- POST /api/instagram/sync/product/{productId}
- GET /api/instagram/orders?from=2026-09-01&to=2026-09-03
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: Instagram Shop connection status, last sync time, product sync progress, sync errors, imported orders from Instagram.
The seam — why this is paid
Core owns the product tagging interface and order sync. Paid pack owns: Instagram Commerce API integration, real-time sync scheduler.
Credential: Instagram Commerce API management, product sync, checkout integration
Dependencies
- product subsystem (existing)
- inventory subsystem (existing)
- order 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.
- A product added to AstroBaaS appears in Instagram Shop catalog within 24 hours
- Merchant tags product from AstroBaaS in an Instagram post; tag works correctly
- An order placed via Instagram appears in AstroBaaS within 15 minutes
- Inventory decreases in AstroBaaS; Instagram Shop stock updates within 2 hours
- Admin can manually sync product from product edit page
- Sync error is logged with product, error reason, timestamp
Risks
If order import is delayed, customer doesn’t receive shipping confirmation. If inventory sync is one-way, overselling happens. If product images fail to upload, product appears blank on Instagram. If Instagram API rate limits are hit, sync falls behind. If order deduplication fails, same order is imported twice.
Commercial context
| Suggested price | €24/mo; credential: Instagram Shop API, product tagging, order sync |
| Rival anchor | Shopify: free (native); Instagram: free (with business account); custom: €1000+ |
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.