Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

At a glance

Total revenue split by the brand field on each catalogue product, ranked descending. The card multi-brand BC merchants live in, for retailers stocking 20+ brands (homewares, beauty, sporting goods, B2B distributors), brand-level revenue is the primary unit of merchandising decision-making.
What it countsSUM(line_item.total_inc_tax) GROUP BY product.brand_id over the period. Each line item’s revenue is attributed to the parent product’s brand; mixed-brand orders contribute to multiple brand totals. Products with brand_id = 0 (no brand assigned) roll up into a synthetic “Unbranded” bucket.
VAT / tax treatmentTax-inclusive (total_inc_tax). Same convention as Total Revenue.
ShippingExcluded at the line-item level. Shipping is order-level in BC, not brand-attributable. The store-wide Total Revenue includes shipping; this card sums only the goods revenue, so the brand totals will sum to less than store revenue by the shipping amount.
DiscountsDeducted at the line-item level. Order-level coupons (e.g. “10% off entire order”) are pro-rated across line items by their pre-discount value.
RefundsNot deducted (gross revenue view). For net brand revenue, pair with Refund Value and the brand-level refund split.
Cancelled / voided ordersIncluded if the order was created in the window. Use the financial-status filter to exclude voids if you want the realised view.
CurrencyMulti-currency without FX conversion. A multi-currency BC store sees brand totals summed naively. Filter by currency for clean per-currency comparisons.
Channels / sourcesAll channels contribute. Web, POS, marketplaces, B2B portal. The brand attribution is product-side (catalogue), so it works identically across all channels.
Brand-attribution gotchaBC’s brand_id is set on the product, not the line item. If you change a product’s brand assignment mid-period (e.g. a private-label SKU gets re-tagged), historical revenue is re-attributed to the new brand on the next index sync. Don’t bulk-edit brand assignments without first exporting historical brand revenue, the historical view will rewrite.
B2B Edition noteB2B portal customers often see different brands than retail (e.g. a wholesale-only line). The brand totals here include all channels’ revenue; for B2B-only brand revenue, filter to the B2B channel.
Time window30D (rolling 30 days, vs prior 30 day comparison)
Alert triggerNone on this card directly. Pair with BC Alert Revenue Drop for store-wide drop alerts; add a brand filter manually for brand-specific alerting.
Rolesowner, marketing

Calculation

Calculated automatically from your BigCommerce 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 UK homewares retailer on BigCommerce Pro stocking 18 brands. 30-day window 14 Apr 26 to 14 May 26.
RankBrandRevenueSharevs prior 30dVerdict
1”Linen & Co.”£142,80028.4%+12.1%Hero brand, growing
2”Hammond Home”£88,42017.6%-3.4%Stable second tier
3”Maple Avenue” (own brand)£74,21014.8%+28.2%Surging, investigate
4”Norwich Linen”£52,90010.5%-19.3%Falling, investigate
5”Brighton Bath”£38,1407.6%+4.1%Stable
6-10(5 mid-tier brands)£74,50014.8%mixedLong tail
11-18(8 tail brands)£30,4006.1%mixedTail
Unbranded(no brand assigned)£1,3100.3%n/aCatalogue gap, fix
Total£502,680100%+5.2% overall
What’s interesting:
  1. The top-3 brands carry 60.8% of revenue. That’s a healthy “Pareto” distribution for multi-brand BC stores; concentration above 75% in top-3 signals brand-supplier risk (one supplier dispute and a third of revenue evaporates). Concentration below 40% signals lack of merchandising focus.
  2. Maple Avenue’s +28% surge is the most actionable signal. Own-brand growth at this rate, especially with healthy margins (own-brand typically carries 50-65% gross margin vs 30-40% for third-party), is exactly what BC Pro retailers should be optimising for. Action: increase own-brand marketing spend, expand Maple Avenue’s catalogue depth, prioritise its placement in collections.
  3. Norwich Linen’s -19% drop is the second priority. Investigate: did inventory go OOS (cross-check BC Channel OOS per Channel)? Did a key SKU get delisted? Did the supplier raise prices and the merchant pause re-buying? A 19% drop on the #4 brand is £10k of monthly revenue; worth a 30-minute audit.
  4. The “Unbranded” bucket at £1,310 is a catalogue-hygiene problem. Products without a brand_id are typically (a) recently uploaded items the merchandiser forgot to tag, or (b) deprecated own-brand items where the brand was deleted. Action: filter Products → View by brand=none and assign correctly; this also improves on-site brand-filter UX.
  5. The tail (8 brands at 6.1% combined) is a focus question. These brands cost storage, supplier-management overhead, and merchandising attention. Either (a) cut the bottom-3 to free up working capital, or (b) commit to growing the most strategic of them. Don’t drift in the middle, low-revenue brands that linger drain margin from the top performers.
Action priority order:
  1. Investigate Norwich Linen drop today. 30-minute root-cause check.
  2. Plan a Maple Avenue expansion this week, brief merchandising and marketing teams.
  3. Audit and fix the Unbranded bucket this week, 1-2 hour catalogue task.
  4. Quarterly: review the bottom-3 brands for cut-or-commit decision.
  5. Set per-brand revenue alerts via Vortex Mind for any brand >5% of revenue dropping >15% week-over-week.

Sibling cards merchants should reference together

CardWhy pair it with Revenue by Brand
BC Margin by BrandRevenue is only half the story. A brand with high revenue and low margin (typical for premium third-party brands at distributor pricing) deserves different attention than a high-revenue / high-margin own brand.
BC Revenue by CategoryThe orthogonal cut. Brand × category cross-tabs reveal where to expand (a strong brand under-represented in a hot category) or contract (a weak brand bloating a tail category).
Total RevenueThe denominator. The brand totals here sum to less than store revenue because shipping is excluded; this card explains the goods-revenue split.
BC Top SKUs RevenueThe SKU-level zoom. Drill into the top brand to see which SKUs drive its revenue.
Products by VendorThe vendor-side view (vendor ≠ brand on BC; a single vendor can supply multiple brands and vice versa). Useful for supplier consolidation analysis.
BC Revenue by ChannelBrand × channel cross-tabs reveal where each brand sells best (some brands index 2× on Amazon vs web; allocate marketplace inventory accordingly).
Refund RateA brand growing in revenue but with high refund rate is a quality crisis in the making. Cross-reference.
shopify.products_by_vendorCross-platform peer (Shopify uses vendor instead of brand_id; semantically equivalent for brand attribution).

Reconciling against the vendor’s own dashboard

Where to look in BigCommerce Control Panel: Analytics → Reports → Sales on Plus / Pro / Enterprise plans includes a “Sales by Brand” view. Pick the same date range; the totals should match within ±1-2% (rounding). For the source-of-truth catalogue assignments, Products → Brands lists every brand and its product count. For diagnosis on a specific brand: click the brand name in BC’s Brands view to see the products assigned to it. If a brand looks under-counted in this card, it’s almost always because newly-uploaded products haven’t had a brand assigned yet (the “Unbranded” bucket). Why our number may legitimately differ from BC:
ReasonDirection
Shipping exclusion. BC’s “Sales by Brand” report includes a pro-rated shipping allocation per brand; we exclude shipping entirely from brand totals. Our number runs ~5-10% lower than BC’s.Vortex IQ LOWER
Brand reassignment mid-period. If a product was reassigned from Brand A to Brand B, BC’s report attributes orders to whichever brand was assigned at order time; we attribute to the current brand assignment on next index sync.Either direction
Refunds. Some BC plans show net-of-refunds in the Sales by Brand view; this card is gross.BC LOWER if BC view is netted
Custom-fields-based brand. Some BC stores use a custom field rather than brand_id for brand. We index brand_id only; custom-field brand assignments are invisible to this card. Configure your BC catalogue to use the native brand field.Vortex IQ may MISS brands
Time-zone and boundary days. BC reports use store time zone; this card uses UTC for the rolling 30-day window.Boundary-day differences
Multi-currency. BC’s report converts to store currency; we don’t FX-convert. Multi-currency stores will see materially different totals; filter by currency.Either direction
Cross-connector reconciliation (when ad and analytics integrations are connected):
CardExpected relationshipWhat causes legitimate divergence
google_ads.ga_revenue_by_brand_labelIf you use brand-level ad campaigns and tag them with a brand custom label, ad-attributed revenue per brand should track the brand-level revenue here, modulo attribution windows.Ads attribution is multi-touch; this card is order-source-of-truth. Expect ±20% gap.
google_analytics.ga_revenue_by_item_brandGA4’s item_brand parameter on purchase events should match the brand totals here within ±15%.GA4 misses 10-25% of orders to ad blockers / cookie rejection.
amazon_sp.amazon_revenue_by_brandThe Amazon-channel slice of this card should match Amazon SP-API per-brand revenue within ±5%.Amazon’s brand attribution uses Brand Registry; mismatches mean your BC brand assignments don’t match Amazon Brand Registry.
The brand-revenue split is BC-aligned with Shopify’s products_by_vendor (semantically the brand split) and Adobe Commerce’s manufacturer attribute revenue split; the field shape differs but the merchant-facing semantics are equivalent.

Known limitations / merchant FAQs

My biggest brand has 60% of revenue, is that risky? Yes, depending on the brand. A 60% own-brand share is healthy concentration; it means you control supply, margin, and roadmap. A 60% third-party brand share is supplier risk; one supplier dispute, price hike, or stock-out and a third of revenue evaporates. Diversify away from third-party concentration above 40%. My “Unbranded” bucket is large, what’s wrong? Three common causes: (1) recently uploaded products without a brand assignment yet (fix in Products → bulk edit → assign brand); (2) a deleted brand left orphaned products (fix the same way); (3) the merchant uses a custom field for brand instead of BC’s native brand_id (configure the catalogue to use native; this card cannot index custom fields). The Unbranded bucket above 5% of revenue is a catalogue-hygiene problem worth fixing. Why does my BC Sales by Brand report show different numbers? Most commonly because BC’s report includes a pro-rated shipping allocation per brand; this card excludes shipping. Other reasons: brand reassignment mid-period, refund netting, time-zone differences, multi-currency FX. See the reconcile section above. The two views should agree to within ±10%; larger gaps signal a configuration mismatch. A brand surged 50% week-over-week, real or noise? Check the order count. A 50% revenue surge with stable order count means a high-value SKU shipped (a wholesale order, a B2B portal pickup, a viral premium item). A 50% surge with proportional order growth is genuine demand. For brands with <50 orders/month, week-over-week swings of 30-50% are within normal noise range; require multi-week trends before reacting. Can I exclude my own brand from the third-party brand competition view? Yes, the card supports filters on brand IDs. Configure a saved view “Third-party brands only” excluding your own brand IDs. This makes the relative competition between third-party suppliers clearer. My BC catalogue uses categories instead of brands, can I still use this card? Use BC Revenue by Category instead. Brand-based merchandising suits multi-supplier retailers (homewares, beauty, sporting goods); category-based merchandising suits single-brand stores (fashion DTC, niche own-brand). Use whichever matches your merchandising model. Why does the brand revenue total differ from store revenue? Two reasons: (1) shipping is excluded at the line-item level (line items have no shipping; shipping is order-level in BC); (2) the “Unbranded” bucket sweeps up products without a brand assignment but they still contribute to store revenue. The sum of brand revenue + Unbranded should equal store goods revenue (i.e. revenue excluding shipping); add shipping to reconcile to total store revenue. Multi-currency BC store, how do I read this card? Apply a currency filter. Without filtering, the card sums revenue across currencies naively, producing meaningless totals. With a currency filter (“show only USD orders”), the brand totals are clean and comparable. Set up one saved view per currency. Should I cut a brand below X% of revenue? Generally yes for brands below 1.5% of revenue with margin under 30%, the working capital tied up, the supplier relationship overhead, and the merchandising attention rarely justify the contribution. Exceptions: niche brands that draw specific customer cohorts (cult brands, exclusive partnerships) can be worth keeping for the audience even if the revenue is small. Cross-reference BC Margin by Brand before any cut decision. My B2B portal sells different brands, can I see B2B-only brand revenue? Yes. Filter the card to the B2B channel (channel_id = <your B2B portal id>). The B2B brand mix is usually different from retail (often skewing to high-volume practical brands rather than aspirational ones). Use the B2B-specific view for procurement-side decisions. A brand grew 30% but its order count is flat, what changed? AOV grew. Either (a) the merchant raised prices on a hero SKU; (b) customers shifted to higher-priced items within the brand (mix shift); (c) a B2B / wholesale order skewed the average. Cross-reference with BC Revenue by Category (within the brand) and BC Top SKUs for the brand to identify the mix-shift cause.

Tracked live in Vortex IQ Nerve Centre

Revenue by Brand is one of hundreds of KPI pulses Vortex IQ tracks across BigCommerce 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.