bc-channels · git:20260914.08f85a3 · 2026-09-14 · sha256 17b84fcfc4bda978

bc-channels git:20260914.08f85a3A

Immutable. This exact content is served forever at /api/v1/blob/17b84fcfc4bda978.

---
name: bc-channels
description: Work with BigCommerce multi-channel — channels, multi-storefront, channel-specific catalog, site routing, and channel management API. Use when building multi-storefront solutions or managing channel-specific content.
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, WebSearch, WebFetch
---

# BigCommerce Multi-Channel & Multi-Storefront

## Before writing code

**Fetch live docs**:
1. Fetch `https://docs.bigcommerce.com/developer/docs/admin/multi-storefront/overview` for multi-storefront guide
2. Web-search `site:developer.bigcommerce.com channels api` for Channels API reference
3. Web-search `bigcommerce multi-storefront setup` for configuration patterns

## Channel Architecture

### What Channels Are

Channels represent distinct sales surfaces connected to a single BigCommerce store:
- Each channel can have its own **domain**, **theme**, **currency**, and **locale**
- Products, categories, and content can be **assigned per channel**
- Shared backend: orders, customers, inventory are centralized
- Channel types: `storefront`, `marketplace`, `pos`, `marketing`

### Default Channel

Every BigCommerce store has a default Stencil storefront (Channel ID 1). Additional channels are created for:
- Additional storefronts (B2B + B2C, regional sites)
- Marketplace integrations (Amazon, eBay)
- POS integrations
- Headless storefronts (Catalyst, custom)

## Channels API

### Endpoints

| Endpoint | Methods | Description |
|----------|---------|-------------|
| `/v3/channels` | GET, POST, PUT | Channel CRUD |
| `/v3/channels/{id}/site` | GET, POST, PUT, DELETE | Channel site (domain) |
| `/v3/channels/{id}/active-theme` | GET, PUT | Active theme |
| `/v3/channels/{id}/currency-assignments` | GET, POST, PUT, DELETE | Currency config |
| `/v3/channels/{id}/listings` | GET, POST, PUT | Product listings |

### Creating a Channel

```json
POST /v3/channels
{
  "name": "B2B Storefront",
  "type": "storefront",
  "platform": "catalyst",
  "status": "active",
  "is_listable_from_ui": true,
  "is_visible": true
}
```

### Channel Site

Associate a domain with a channel:
```json
POST /v3/channels/{id}/site
{
  "url": "https://b2b.example.com"
}
```

## Product Channel Assignments

### Assigning Products to Channels

`PUT /v3/catalog/products/channel-assignments`:
```json
[
  {
    "product_id": 111,
    "channel_id": 2
  },
  {
    "product_id": 222,
    "channel_id": 2
  }
]
```

### Querying by Channel

`GET /v3/catalog/products?channel_id:in=2` — products assigned to a specific channel.

### Category Channel Assignments

`PUT /v3/catalog/categories/channel-assignments` — assign categories to channels.

## Channel-Aware APIs

### Storefront API Tokens

Storefront API tokens are **channel-scoped**:
```json
POST /v3/storefront/api-token
{
  "channel_id": 2,
  "expires_at": 1893456000,
  "allowed_cors_origins": ["https://b2b.example.com"]
}
```

### Price Lists

Different pricing per channel:
- Create a Price List with channel-specific prices
- Assign the Price List to a channel
- Customers on that channel see the assigned prices

### Channel-Specific Settings

- Currency per channel
- Theme per channel
- Locale per channel
- Tax settings per channel

## Multi-Storefront Patterns

### B2B + B2C

- Channel 1: B2C storefront (consumer-facing)
- Channel 2: B2B storefront (wholesale pricing, customer groups)
- Same product catalog with different pricing and category visibility

### Regional Storefronts

- Channel per region/country
- Different currencies, locales, and product assortments
- Shared inventory and order management

### Headless + Stencil

- Channel 1: Stencil-powered storefront
- Channel 2: Catalyst (Next.js) headless storefront
- Both pulling from the same catalog

## Best Practices

- Use channels for distinct sales surfaces — not for A/B testing
- Assign products explicitly to channels — don't rely on "all channels" visibility
- Use Price Lists for channel-specific pricing
- Create channel-scoped Storefront API tokens — don't share tokens across channels
- Use channel-aware webhook filters for per-channel event handling
- Plan your channel architecture before building — adding channels later requires product reassignment
- Test each channel independently

Fetch the BigCommerce Multi-Storefront documentation and Channels API reference for exact endpoints, configuration options, and current multi-storefront capabilities before implementing.