The Sales Channel module is a multi-marketplace sync layer. The Storefront module is the system of record. Sales Channel pushes catalog and inventory out to external marketplaces and pulls orders back into a unified order list. Channel-specific differences (FBA, item conditions, store domains, plugin compatibility) live behind a per-provider abstraction.
Supported channels
The module ships providers for marketplaces, shopping engines, social commerce, and own-store platforms.
| Channel | Type | Inventory | Orders | Pricing | Fulfillment |
|---|---|---|---|---|---|
| Amazon | marketplace | yes | yes | yes | FBA |
| eBay | marketplace | yes | yes | yes | seller-managed |
| Walmart Marketplace | marketplace | yes | yes | yes | WFS |
| Etsy | marketplace | yes | yes | yes | seller-managed |
| Shopify | own_store | yes | yes | yes | yes |
| WooCommerce | own_store | yes | yes | yes | seller-managed |
| Google Merchant Center | shopping | yes | no | yes | n/a |
| Microsoft Merchant Center | shopping | yes | no | yes | n/a |
| Facebook / Instagram Shop | social | yes | yes | yes | seller-managed |
| TikTok Shop | social | yes | yes | yes | yes |
| Pinterest Shopping | social | yes | no | yes | n/a |
The full feature matrix is in src/sales-channel/constants/channels.constant.ts.
What the module does
- Channel onboarding — OAuth and credential storage per channel.
- Inventory sync — A master inventory in Storefront pushes to each channel; channels pull-in too. Reservations protect against overselling during checkout.
- Order aggregation — Polls (or webhook-receives) orders from every connected channel into a unified
aggregated_ordercollection. Status writeback closes the loop on fulfillment. - Pricing rules — Per-channel markup, promotions, and competitor-based dynamic pricing.
- Listing optimization — Channel-specific product transformation (Amazon ASIN handling, eBay item-condition fields, Shopify variant IDs).
- Channel mappings — Map your category and attribute taxonomy to the channel's required terms once; reuse on every push.
- Channel templates — Reusable listing templates for bulk operations.
Module surface
/sales-channel/channelsJWT/sales-channel/channels/configuredJWT/sales-channel/channels/:channelId/enableJWT/sales-channel/channels/:channelId/disableJWT/sales-channel/channels/statusJWT/sales-channel/channels/:channelId/executeJWT/sales-channel/channels/bulk-executeJWT/sales-channel/sync/historyJWTSub-controllers cover specific concerns: /sales-channel/inventory/*, /sales-channel/orders/*, /sales-channel/pricing/*, /sales-channel/mappings/*, /sales-channel/analytics/*, /sales-channel/listings/*.
Where each piece lives
| Topic | Page |
|---|---|
| Connect and authenticate | Setup and OAuth |
| Sync stock levels | Inventory sync |
| Pull and unify orders | Order aggregation |
| Per-channel pricing | Pricing rules |
| Provider quirks | Amazon, eBay, Shopify, WooCommerce |
Cross-module wiring
- Storefront is the source of truth for products and master inventory.
- Upstream stores the OAuth credentials for each channel.
- Sync queues background sync jobs.
- Automation can trigger on order arrival from any channel and route fulfillment.
You don't need Sales Channel to use Storefront. Plug in a single channel only when you start selling on a marketplace. Each channel can be enabled and disabled independently.