Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform
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.
What it countsSUM(grand_total) GROUP BY segment / SUM(grand_total). Segments: B2B = orders from customers in a B2B-tagged Customer Group (or attached to a Company entity in Adobe Commerce B2B module); B2C = everyone else. Returns three numbers: B2B revenue, B2C revenue, B2B share %. Compared against the prior period for delta.
API fieldgrand_total, customer_group_id, extension_attributes.company_attributes.company_id from GET /rest/V1/orders.
VAT / tax treatmentTax-inclusive on B2C, typically tax-exclusive on B2B. The card uses grand_total as-reported, so the share calculation has a slight tax-induced bias (B2C is overstated by the VAT/sales-tax share). For pure mix comparison, configure the card to use subtotal. Most merchants want the cash-share view, which is what grand_total delivers.
Shipping inclusionIncluded on both.
DiscountsDeducted (post-promotion). B2B tier pricing applied as customer_group_price is already in grand_total.
Credit Memo refund treatmentNOT subtracted. Gross-share view. For net-share, look at the Credit Memo per-segment breakdown in Refund Value.
state machine inclusionAll states except canceled. pending_payment is included for both segments because B2B net-30 orders intentionally sit there until AP approval.
pending_payment quirkIncluded. B2B net-30 inflates pending_payment volume; this is genuine pipeline. Distinguished from broken-gateway pending_payment by tracking the rate of state transition; check Order State Distribution.
Multi-currency grand_total vs base_grand_totalUses base_grand_total so multi-currency stores have a clean roll-up.
Store View scope (store_id)All Store Views by default. For merchants whose B2B portal is a separate Store View, Store View routing is the most reliable classification (more so than customer_group_id). Configure the manifest accordingly.
Time window30D vsP (trailing 30 days vs prior 30 days).
Alert triggerNone by default. The card is intended as a monitoring surface, not an alarm. Configure a manifest variant with a delta threshold (e.g. “>5pt B2B share shift in 30 days”) if you want active alerting on mix change.
Rolesowner, finance, marketing

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:
SegmentOrdersbase_grand_totalShare
B2B (Companies)412$462,00052.6%
B2C (consumer)6,840$416,40047.4%
Total7,252$878,400100%
Prior 30-day:
SegmentOrdersbase_grand_totalShare
B2B386$389,20047.0%
B2C6,910$438,80053.0%
Total7,296$828,000100%
Delta:
SegmentCurrent sharePrior shareChange
B2B52.6%47.0%+5.6 pts
B2C47.4%53.0%-5.6 pts
What this is telling leadership:
  1. B2B share crossed 50% for the first time. A psychological milestone. The business is now majority B2B by revenue.
  2. B2B revenue grew 18.7% MoM (389kto389k to 462k). Order count up 6.7% (386 to 412), AOV up 11.3% (1,008to1,008 to 1,121). Both volume and ticket size growing, healthy.
  3. B2C revenue contracted 5.1% (438kto438k to 416k). Order count flat (6,910 to 6,840). AOV down 5.4% (63.50to63.50 to 60.88). Smaller baskets on similar volume.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
The point of this card: a 5.6 pt share shift in 30 days is the kind of strategic signal that quarterly board decks pick up 60 to 90 days late. Surfacing it monthly enables faster strategic response.

Sibling cards merchants should reference together

B2B revenue share is the strategic dashboard surface; pair with operational cards for action.
CardWhy pair it with B2B Revenue Share
B2B AOV vs B2C AOVThe “is the share shift quality or quantity?” question. AOV up + count up = healthy growth; AOV down + count up = race-to-the-bottom.
B2B Accounts Gone QuietThe “is the B2B growth genuine or concentrated in a few accounts?” question. Silence count rising while share rises means concentration risk.
Customer CountActive customer count by segment. New B2B accounts are leading indicator of share growth.
Total RevenueThe denominator. A share shift doesn’t say whether the pie is growing or shrinking.
AOVThe blended view. If blended AOV is rising, that’s evidence of B2B mix shift, even before the share number ticks.
Customer SegmentsPer-segment cohort revenue. Adds count and frequency dimensions.
Repeat Customer RateB2B repeat is normally near 100%; if B2B share is rising and B2B repeat is falling, you have churn-with-acquisition (a churning business that grew through new logos, fragile).
shopify.shopify_b2b_revenue_shareCross-platform peer for agencies.

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.
Why our number may legitimately differ from a manual Admin computation:
ReasonDirection of divergence
Time-zone. Admin in Store View timezone; card runs UTC. 30-day window boundaries differ.±1 day on inclusion
Currency. Card uses base_grand_total. Admin defaults to per-Store-View base currency. Multi-currency merchants comparing a single Store View admin report to the card see FX differences.Material on multi-currency mixes
canceled exclusion. Card excludes; Admin Reports > Sales include unless filtered.Card share slightly higher on B2B if cancellations skew B2C
Customer Group definition. Card respects whichever groups you mark as B2B in the manifest. If your Open Source installation lacks the Companies module and uses ad-hoc tagging, configure carefully.Misclassification material if not configured
Sync lag. Card uses OpenSearch sync (5-15 min); Admin live.Negligible at 30D
Cross-connector reconciliation (when these connectors are connected for this merchant):
PairExpected relationshipWhat divergence tells you
ERP / accounting per-segment revenueShould match within sync lagMaterial divergence usually means off-platform B2B orders (phone-in POs, EDI orders) recorded in ERP but not Adobe.
stripe.stripe_total_revenueStripe sees Stripe-paid orders only; net-30 invoice payment doesn’t touch StripeThe Stripe view of B2B is a subset; do not try to reconcile B2B share through Stripe.
google_analytics.ga_revenueGA4 has no native B2B/B2C dimensionWithout a custom dimension, GA4 cannot reconcile share. With a custom dimension, GA4 will undercount by 10-25% but the share ratio should match.

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 via extension_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.

Tracked live in Vortex IQ Nerve Centre

B2B Revenue Share is one of hundreds of KPI pulses Vortex IQ tracks across Adobe Commerce and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.