OpenSearch sum(grand_total) GROUP BY customer_group_id, partitioned into B2C (group 0/1) vs B2B (other groups). Adobe-only signal, surfaces channel-mix shift before the merchant feels it.
At a glance
Splits trailing 30-day revenue between B2B and B2C, expressed as percentage of total. Adobe Commerce merchants commonly run a mixed book; the share number tells leadership which side of the business is driving growth (or decline) and shapes hiring, marketing, and inventory decisions. A shift in mix often precedes a strategic question that the founder hasn’t yet asked.
Calculation
Calculated automatically from your Adobe Commerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A homewares brand on Adobe Commerce 2.4.6, B2B Companies module enabled. Sells to consumers via the main storefront and to interior-design firms and small hospitality buyers via a B2B portal. Snapshot taken Monday 4 May 26. Trailing 30-day revenue:
Prior 30-day:
Delta:
What this is telling leadership:
- B2B share crossed 50% for the first time. A psychological milestone. The business is now majority B2B by revenue.
- B2B revenue grew 18.7% MoM (462k). Order count up 6.7% (386 to 412), AOV up 11.3% (1,121). Both volume and ticket size growing, healthy.
- B2C revenue contracted 5.1% (416k). Order count flat (6,910 to 6,840). AOV down 5.4% (60.88). Smaller baskets on similar volume.
- The strategic question this surfaces: should the merchant continue investing in DTC marketing at current rates? Marketing spend is currently 70/30 in favour of consumer (roughly proportional to last quarter’s revenue mix). With B2B now majority, the spend mix is misaligned. Likely actions in the next quarterly plan: shift some performance-marketing budget toward B2B account-based campaigns, hire a B2B sales rep, prioritise B2B portal UX features.
- Inventory implications: B2B orders skew toward case-pack and hospitality SKUs (commercial-grade kettles, large dinnerware sets); B2C skews toward decorative and gift items. A mix shift toward B2B implies the warehouse should hold proportionally more case-pack stock; the current PO cadence may be misaligned.
- Hosting / performance: Adobe Commerce B2B portal traffic patterns differ from consumer (steady weekday volume rather than weekend spikes). If the merchant runs Adobe Commerce Cloud, instance sizing should be reviewed; the workload is becoming weekday-heavy.
- Cross-check with B2B AOV Delta: B2B AOV is up 11%, accounts are buying larger. Cross-check with B2B Accounts Gone Quiet: silence count is normal. The B2B growth is genuine, not concentrated in a few accounts.
Sibling cards merchants should reference together
B2B revenue share is the strategic dashboard surface; pair with operational cards for action.Reconciling against the vendor’s own dashboard
Where to look in Adobe Commerce Admin: For B2B-specific (Adobe Commerce paid edition with Companies module):Reports > Sales > Orders filtered by Customer Group; or use Customers > Companies > export. Adobe does not natively render a B2B-vs-B2C share chart, you must compute the share manually after exporting filtered totals.For Customer Group comparisons (works on both editions):
Reports > Sales > Orders with the Customer Group filter set to your B2B group(s). The report’s Total column is your B2B revenue numerator; subtract from the unfiltered total to get B2C.For Multi-Store-View merchants:
Reports > Sales > Orders scoped to the B2B Store View, then to the consumer Store View; sum each. This is the cleanest approach when B2B has its own Store View.Other Adobe Commerce Admin views that look relevant but are not:
- Dashboard > Revenue: blended only.
- Reports > Sales > Best Sellers: SKU level, not segment.
- Reports > Customers > Customers by Orders Total: lifetime per-customer, not segment-share.
Cross-connector reconciliation (when these connectors are connected for this merchant):
Known limitations / merchant FAQs
My B2B share looks high but most of my customers are consumers, is the calculation right? Yes. Adobe Commerce B2B economics often have 100x to 1,000x fewer accounts than B2C but contribute 30 to 60% of revenue. A handful of large Companies dominates the dollar-weighted view even though the customer-count view is overwhelmingly consumer. Both views are correct; this card uses dollar-weighting because revenue mix is the strategic question, not customer count. For customer count by segment see Customer Segments. Adobe Commerce vs Magento Open Source: how does this card differ between editions? On Adobe Commerce paid edition, the B2B Companies module gives explicit Company entities; orders link to Companies viaextension_attributes.company_attributes.company_id. On Magento Open Source, no Companies concept exists; B2B classification relies on Customer Groups, Store View routing, or custom attributes. The card supports both; configure the manifest to match your installation.
Why does the share calculation include pending_payment orders?
B2B accounts on net-30 terms have orders sitting in pending_payment while AP processes the invoice. This is genuine pipeline; excluding it would understate B2B share by 10 to 30% depending on net-30 prevalence. The trade-off: if your B2B has a chronic gateway-callback issue, pending_payment orders that never resolve are still counted, slightly overstating B2B. Cross-check with Order State Distribution for stuck-pending volume.
My multi-store Adobe Commerce, can I see per-region B2B share?
Yes, configure per-Store-View variants. Useful for merchants with multiple regional B2B portals (UK B2B, US B2B, EU B2B). The per-region share often differs materially: UK B2B may be 70% of UK revenue while US B2B is 30% of US revenue, even on the same merchant.
Is the grand_total comparison fair given B2B is tax-exempt and B2C is tax-inclusive?
Strictly no, the comparison overstates B2C by the embedded tax. The card defaults to grand_total because most merchants want the cash-share view (what’s actually in the bank). For pure mix comparison, configure subtotal. The strategic question being asked usually doesn’t change conclusion either way; a 50/50 cash split represents a roughly 55/45 unit-economics split if B2C is tax-inclusive at 20% VAT. Choose the view that matches your strategic question.
A new B2B contract win shifted share by 5 points overnight, is the alert appropriate?
Yes; share shifts of that magnitude warrant strategic attention regardless of whether they’re “good” (a contract win) or “bad” (a churn). Both deserve a leadership conversation about resource allocation. Configure the alert threshold to 3-5 points for active monitoring; lower thresholds will fire on routine seasonal variance.
Why doesn’t this card have a default alert trigger?
Because the right action depends on context. A B2B share rising 5 points in a quarter is great news but worth a conversation; a B2B share falling 5 points is a warning. Different actions, different stakeholders. Most merchants configure their own alert thresholds depending on the direction they care about; the card defaults to monitoring rather than alarming.
My B2B customers buy via marketplace (Amazon Business, Faire), not the Adobe portal directly, are they counted?
No. The card sees only orders placed through Adobe Commerce. Marketplace orders that are imported into Adobe via integration may or may not be classified as B2B (depends on how the integration tags them). For Amazon Business orders specifically, configure the import integration to assign them to a B2B Customer Group; otherwise they fall into B2C.
The card defines B2B as “Customer Group OR Company entity”; what if my installation uses neither?
Two scenarios. (a) You only use a custom attribute (e.g. is_wholesale = 1 on the customer entity): configure the manifest to use that attribute as the segmentation dimension. (b) You have no formal B2B classification: the card cannot segment. Add the classification first (the simplest path: create a Customer Group called “B2B” and migrate known wholesale customers via mass-action) before relying on this card.
Does the share calculation handle multi-currency stores correctly?
Yes, via base_grand_total (FX-converted at order time). The aggregate share number is roll-up-correct. Per-currency breakdown is also available for merchants who want to see “GBP B2B share is 60%, USD B2B share is 40%” for example. Configure the display in the manifest.
How do I act on a 5-point share shift in 30 days?
The card flags the shift; the action depends on direction and cause. (a) B2B share rising due to B2B growth: review marketing-mix allocation, hire B2B sales support, ensure inventory mix matches, review B2B portal UX investment. (b) B2B share rising due to B2C contraction: investigate B2C funnel for issues; the share-shift is a co-symptom, not the headline. (c) B2B share falling due to B2B contraction: cross-check B2B Accounts Gone Quiet and B2B AOV Delta for whether it’s accounts churning, accounts shrinking POs, or both. Act on the underlying signal.