Catalog
Marketplace Sync: sell on 17 channels from one catalog
Marketplace Sync connects your BirrStore catalog to 17 sales channels — Shopify, WooCommerce, Amazon, eBay, Etsy, Walmart, TikTok Shop, Facebook & Instagram Shop, Google Shopping, Jumia, Konga, Kilimall, noon, Jiji, Temu, AliExpress, and Magento/Adobe Commerce. You keep one catalog here; the sync engine pushes products and stock out and pulls orders back. This page is honest about what is live today, and so is the product: every sync result is logged exactly as it happened. ## How to connect a channel 1. Go to **Apps** and open **Marketplace Sync**. 2. Click the channel you want. Each channel lists its own credential fields — for Shopify that is your shop domain and an Admin API access token; for WooCommerce a store URL, consumer key, and consumer secret; for Jumia, Konga, Kilimall, noon, Jiji, and Temu a seller API base URL plus keys. 3. Paste the credentials and save. They are stored per store and always masked in the interface — you will never see a full secret rendered back. 4. Click **Verify** where the channel supports it (Shopify, WooCommerce, Jumia, noon, and Magento make a real API call; other channels run a completeness check and confirm live access on first sync). 5. Flip the **auto-sync** toggles per connection: products, inventory, and orders can each be on or off. 6. When verification succeeds, an initial sync is queued automatically. ## Price uplift per channel Marketplace fees differ, so each connection has a **price uplift** percentage. Products are pushed at your base price plus that uplift — set 10% on a channel that charges heavy commissions and your margin survives the fee. The CSV export supports the same uplift parameter. ## The CSV bridge Channels whose schemas live behind partner portals are covered by an honest fallback: CSV exports in four templates — **konga**, **jumia**, **google**, and a **generic** format. Pick the format, set an uplift, download, and upload the file to that channel's seller portal. Every export is written to the activity log like any other sync. ## The sync queue and activity log 1. Saving a product (or changing stock) enqueues a sync job in real time for every connected channel with product auto-sync on. 2. Order pulls run on a 5-minute cron tick for channels with order auto-sync on. 3. Jobs retry on failure up to 5 attempts, then mark as dead with the error preserved. 4. The **Sync activity** panel on the app page is the audit trail — click **Refresh** to see every push and pull with its result: "Shopify push: 12 updated/created, 0 errors", a rejection with its HTTP status, or a staged job waiting on a partner endpoint. Each connection also has a **Sync now** button for an immediate run. ## Pulling orders back Orders pulled from connected channels land in the same **Orders** inbox as storefront orders — Shopify orders arrive with SHOP-prefixed order numbers and a marketplace tag, WooCommerce orders with WOO- prefixes — so fulfillment is one workflow, not one per channel. ## What is live today (the honest note) Native, real-time push and pull run for **Shopify and WooCommerce** today. The remaining channels are fully wired — credentials, uplift, queueing, logging, and CSV templates — but their live pushes queue against each partner's endpoint: sellers without a configured API URL have catalogs staged for sync, and channels whose order APIs sit behind partner approval keep inventory syncing while order import waits for that approval. The activity log says exactly which happened; nothing pretends to be synced when it is not. ## FAQ **Do I need my own developer accounts on each marketplace?** For most channels you paste your own seller credentials (keys you generate in that marketplace's seller portal). Where the platform holds a marketplace app, connection is one click. **Will a price change here overwrite my price on the marketplace?** Yes, for channels with live push — that is the point of the uplift setting. Set the uplift so the pushed price is the one you want them to see. **How do I know a sync failed?** Three ways: the connection shows an error state with the last error, the **Sync activity** log records the failed attempt with its HTTP status, and the job retries up to five times before marking dead. Nothing fails silently.