Skip to main content

Overview

The Sales Channel Module manages different sales channels for your commerce operations. Sales channels allow you to organize products, orders, and inventory across different storefronts, marketplaces, or distribution channels. Key Features:
  • Multiple sales channel support
  • Channel-specific product availability
  • Channel-based order tracking
  • Inventory management per channel
  • Channel metadata and customization

When to Use

Use the Sales Channel Module when you need to:
  • Manage multiple storefronts (web, mobile app, etc.)
  • Sell on different marketplaces
  • Separate B2B and B2C channels
  • Track sales by channel
  • Control product availability per channel
  • Support multi-brand commerce
  • Implement channel-specific pricing or promotions

Data Models

SalesChannel

Represents a sales channel or storefront.
id
string
required
Unique sales channel identifier
name
string
required
Sales channel name
description
string
Sales channel description
is_disabled
boolean
Whether the channel is disabled (default: false)
metadata
object
Additional custom data

Service Interface

The Sales Channel Module service is available at @medusajs/medusa/sales-channel.

Create Sales Channel

Create a new sales channel.
data
CreateSalesChannelDTO | CreateSalesChannelDTO[]
required
Sales channel data
name
string
required
Sales channel name
description
string
Sales channel description
is_disabled
boolean
Whether to disable the channel
metadata
object
Custom metadata
salesChannel
SalesChannelDTO | SalesChannelDTO[]
The created sales channel(s)

Retrieve Sales Channel

Get a sales channel.
salesChannelId
string
required
The ID of the sales channel to retrieve
config
FindConfig
Configuration for the query
salesChannel
SalesChannelDTO
The retrieved sales channel

List Sales Channels

List all sales channels.
filters
FilterableSalesChannelProps
Filters to apply
id
string | string[]
Filter by sales channel IDs
name
string | string[]
Filter by name
is_disabled
boolean
Filter by disabled status
salesChannels
SalesChannelDTO[]
Array of sales channels

Update Sales Channel

Modify a sales channel.
salesChannelId
string
required
ID of the sales channel to update
data
UpdateSalesChannelDTO
required
Fields to update
name
string
Sales channel name
description
string
Description
is_disabled
boolean
Whether to disable

Delete Sales Channel

Remove a sales channel.

Integration Examples

With Product Module

Associate products with sales channels.

With Cart Module

Create carts for specific channels.

With Order Module

Track orders by sales channel.

With Inventory Module

Channel-specific inventory availability.

Common Use Cases

Multi-Storefront

Marketplace Integration

B2B vs B2C

Multi-Brand

Best Practices

  1. Channel Naming: Use clear, descriptive names that identify the channel’s purpose (“Website”, “Mobile App”, “Amazon”, etc.).
  2. Metadata Usage: Store channel-specific configuration in metadata:
    • API credentials for marketplace integrations
    • Channel type (b2b, b2c, marketplace)
    • Brand identifiers
    • Custom settings
  3. Default Channel: Create a default sales channel for your primary storefront during initial setup.
  4. Disabled Channels: Use is_disabled instead of deleting channels to maintain historical data and reporting.
  5. Product Availability: Control which products appear in each channel using product-sales channel links (managed via workflows).
  6. Analytics: Track performance by channel by filtering orders, carts, and sales data by sales_channel_id.
  7. Channel Context: Always include sales_channel_id when:
    • Creating carts
    • Creating orders
    • Checking product availability
    • Calculating prices