Both can scope a Price, but that is not the distinction
- A Channel binds to the Store. Attach a distribution Channel to a Store, and every Business Unit that resolves to that Store has the Channel available in its commercial context. Product browsing uses that Channel as
priceChannel, and Cart Line Items use it asdistributionChannelfor price selection. - A Customer Group binds to the buyer. A Customer Group is resolved from the
customerGroupon the Cart or thecustomerGroupAssignmentson the Customer. There is no link from a Store to a Customer Group. So to price by Customer Group, the storefront or middleware must establish that group context on every Cart.
That single difference is the whole argument. With Channels, the Store you already designed in Module 1 supplies the valid pricing Channel for the buyer context. With Customer Groups, you take on responsibility for setting the right group on every buyer interaction. For negotiated per-company pricing (where the company already maps cleanly to a Store), Channels are simpler, more reliable, and the recommended default.
When to use which
Use this division when you evaluate a B2B pricing or discount requirement:
- Negotiated contract price for a company → a distribution Channel on that company's Store, carrying Channel-scoped Standalone Prices. This is the primary B2B pattern.
- Volume break on a negotiated price → a native Price tier on the Channel-scoped Standalone Price (from company-specific pricing). Still a Price concern, not a discount.
- A discount applied on top of the agreed price (a temporary promotion, a campaign, a conditional reduction) → a Customer Group with Cart or Product Discounts targeting it.
In practice, discounts are comparatively rare in B2B because the negotiated price already reflects the commercial agreement. When a discount genuinely applies, the Customer Group is the right home for it, which is what Customer Groups are well suited to.
Why not model negotiated price as a Customer Group?
- Every Cart must resolve the correct Customer Group for the buyer, because nothing on the Store does it for you.
- A Customer-Group-scoped Price outranks a Channel-scoped Price in price selection. If you use Channels for negotiated price and Customer Groups for discounts on the same buyer, an accidentally Customer-Group-scoped Price can silently override the negotiated rate.
Worked example: classifying Atlas Corporate requirements
Atlas Corporate Solutions brings a mixed set of requirements. Classify each as a Price concern or a discount concern, then assign the mechanism.
| Requirement | Concern | Mechanism |
|---|---|---|
| Atlas's APAC division pays its negotiated contract rate on the full catalog | Price | Distribution Channel on the APAC Store + Channel-scoped Standalone Prices |
| Unit price drops above 50 units on bulk consumables | Price | Price tier on the relevant Standalone Prices |
| A one-quarter 5% promotion on a product category to encourage trial | Discount | Customer Group for the promotion + a Cart or Product Discount targeting it |
| Atlas's EU division pays a different negotiated rate than APAC | Price | A separate distribution Channel on the EU Store |
Notice that three of the four are Price concerns solved with Channels and tiers, and only the genuinely promotional requirement is a discount. That ratio is typical of B2B: the negotiated price carries most of the commercial logic, and Customer Groups handle the occasional discount on top.
Key takeaways
- Both Channels and Customer Groups can scope a Price; the real difference is what they bind to.
- A Channel binds to the Store, so a Business Unit resolves the pricing context from its Store, the recommended pattern for B2B negotiated pricing.
- A Customer Group binds to the buyer (Cart or Customer), with no Store link, so it requires group context on every Cart.
- A Customer-Group-scoped Price outranks a Channel-scoped Price in price selection, so mixing the two scopes for one buyer needs care.
- Treat negotiated price as a Channel concern and discounts as a Customer Group concern; in B2B, discounts are the exception, not the mechanism.