At a glance
Total revenue split by BigCommerce catalogue category, ranked descending. The merchandising-team workhorse, this is how you decide what to feature on the homepage, where to spend ad budget, and which categories to expand or cut. Multi-category retailers live in this card; single-category brands rarely use it.
| What it counts | SUM(line_item.total_inc_tax) GROUP BY product.category_id over the period. Each line item is attributed to the product’s primary category. The sum across categories equals goods revenue (excluding shipping). |
| VAT / tax treatment | Tax-inclusive (total_inc_tax). |
| Shipping | Excluded (line-item level; shipping is order-level in BC). |
| Discounts | Deducted at the line-item level. Order-level discounts pro-rated. |
| Refunds | Not deducted (gross). |
| Cancelled / voided orders | Included in gross revenue. |
| Currency | Multi-currency without FX. Filter by currency for clean comparison. |
| Channels / sources | All channels contribute. Category attribution is product-side, so it works identically across web, POS, marketplaces, and B2B. |
| Multi-category gotcha | BC products can belong to multiple categories. We attribute each line item to primary_category_id to avoid double-counting; products without a primary category fall back to the first category in category_ids. Set primary categories explicitly in BC for accurate attribution. |
| Category tree depth | The card ranks at leaf-category level by default. Toggle to top-level for the merchandising-overview view. |
| B2B Edition note | B2B portals often expose a different category tree than retail. Filter to a specific channel for B2B-only or retail-only views. |
| Time window | 30D (rolling 30 days, vs prior 30 day comparison) |
| Alert trigger | None on this card directly. |
| Roles | owner, 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 US sporting-goods retailer on BigCommerce Pro, 30-day window 14 Apr 26 to 14 May 26.| Rank | Top-level category | Revenue | Share | vs prior 30d | Sub-category leaders |
|---|---|---|---|---|---|
| 1 | Cycling | $214,800 | 32.1% | +18.4% | Road bikes (41k), apparel ($38k) |
| 2 | Camping | $148,200 | 22.2% | -4.2% | Tents (28k), cookware ($22k) |
| 3 | Running | $96,500 | 14.4% | +6.7% | Shoes (19k), GPS watches ($16k) |
| 4 | Yoga & Fitness | $74,800 | 11.2% | +3.1% | Mats (24k), weights ($14k) |
| 5 | Swimming | $52,100 | 7.8% | -22.5% | Swimsuits (13k), pool toys ($9k) |
| 6 | Hiking | $48,200 | 7.2% | +1.4% | Boots (14k), poles ($6k) |
| 7-12 | (6 tail categories) | $33,400 | 5.0% | mixed | (Skiing, racquet sports, golf, fishing, water sports, other) |
| Total | $668,000 | 100% | +5.8% overall |
- Cycling at +18% growth on a 32% share is the standout signal. The category is both the largest and the fastest-growing; allocate ad budget and homepage real estate accordingly. Within cycling, road bikes ($82k, 38% of cycling revenue) deserve their own deep-dive. The sub-category split prevents “cycling is up” from masking which sub-category is actually driving the lift.
- Swimming at -22% is the urgent investigation. A 22% drop on a 11k of monthly revenue evaporating. Likely causes (in order of probability): (a) seasonality (swimming peaks May-July; this is mid-April so April-May lift may not be in yet); (b) inventory issues (top swimsuit SKUs OOS, cross-check BC Channel OOS per Channel); (c) a competitor running aggressive pricing on goggles or pool gear. Run the diagnosis before assuming seasonality.
- Camping at -4% is acceptable seasonal drift. Camping peaks May-September; April is shoulder season. The -4% is within normal noise.
- The tail (6 categories at 5% combined) is a focus question for the merchandising team. Skiing in April is correctly low (post-season); golf and fishing should be growing. Investigate whether tail categories are losing share because of catalogue gaps or because they were never strategic.
- Compounding effect on cycling. A 32% share growing at 18% means cycling alone added $33k of incremental revenue this month. Doubling down on cycling is likely 3-4× more leveraged than trying to revive swimming.
- Diagnose swimming -22% drop today. 1-hour audit: stock, ads, pricing, competition.
- Plan a cycling expansion this week, more SKUs, more featured placement, brief the ads team.
- Set per-category alerts via Vortex Mind for any category >5% of revenue dropping >15% week-over-week.
- Quarterly: review the bottom-3 tail categories for cut-or-commit decision.
- Audit primary-category assignments, ensure no products are silently miscategorised, the leaf-level rankings are only as good as the BC catalogue hygiene.
Sibling cards merchants should reference together
| Card | Why pair it with Revenue by Category |
|---|---|
| BC Revenue by Brand | Brand × category cross-tabs reveal which brands dominate which categories, and where to expand. |
| Top Products | The SKU-level zoom. Drill into the top category to see which SKUs drive its revenue. |
| Bottom Products | The flip view: which categories are dominated by tail SKUs that should be cut. |
| Total Revenue | The denominator. The sum across categories equals goods revenue (ex-shipping). |
| BC Top SKUs | The unit-volume view; a category with high revenue but low unit volume is a premium-price category. |
| BC Revenue by Channel | Category × channel cross-tabs reveal which categories sell best on which channels (cycling indexes higher on web; camping on Amazon, often). |
| Refund Rate | A category growing in revenue but with rising refund rate is a quality crisis in the making. |
shopify.collection_health | Cross-platform peer (Shopify uses collections; semantically equivalent to BC categories for merchandising). |
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 Category” view. Pick the same date range; totals should match within ±2-3% (rounding plus the multi-category attribution differences). For source-of-truth catalogue assignments, Products → Categories lists the category tree. Why our number may legitimately differ from BC:| Reason | Direction |
|---|---|
| Multi-category attribution. BC’s Sales by Category report attributes a multi-category product’s revenue to every assigned category (a product in 3 categories shows revenue 3 times). We attribute to primary category only (no double-counting). | Vortex IQ LOWER per category, equal in total; BC double-counts |
| Shipping exclusion. We exclude shipping; BC report includes pro-rated shipping per category. | Vortex IQ LOWER |
| Category reassignment mid-period. If a product moved categories, BC may attribute orders to whichever category was assigned at order time; we attribute to current assignment on next index sync. | Either direction |
Custom-category fields. Some BC stores use custom fields for sub-categorisation; we index category_id only. | Vortex IQ may MISS sub-categorisation |
| Time-zone and boundary days. BC uses store time zone; we use UTC. | Boundary differences |
| Multi-currency. BC converts to store currency; we don’t. | Either direction |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_ads.ga_revenue_by_category_label | Category-targeted ad spend should track category revenue here within ±20%. | Ads attribution windows; this card is order-source-of-truth. |
google_analytics.ga_revenue_by_item_category | GA4’s item_category should match within ±15%. | GA4 misses 10-25% to ad blockers. |
facebook.fb_catalog_category_performance | Facebook catalog feed category should align with BC categories if mapped correctly. | Facebook category mapping is independent of BC; mismatches mean the feed mapping needs review. |
collection_health and Adobe Commerce’s category attribution; the field shape differs but the merchant-facing semantics are equivalent.
Known limitations / merchant FAQs
My category totals don’t add up to store revenue, why? Two reasons: (1) shipping is excluded (line-item revenue ≠ order revenue); (2) products without a primary category fall into a “Uncategorised” bucket. Sum of all categories + Uncategorised + shipping = store total. If your Uncategorised bucket is large, fix it in BC’s bulk product editor. Should I rank by leaf category or top-level? Both, depending on the question. Top-level (e.g. “Cycling”) for strategic merchandising and budget allocation. Leaf level (e.g. “Cycling > Road Bikes > Carbon Frames”) for SKU-level investigation. Use the depth toggle. A product is in 3 categories, where does its revenue go? To theprimary_category_id only. If no primary is set, fallback to the first category in category_ids. Set primaries explicitly in BC for accurate attribution. Bulk-set primaries via Products → bulk edit → primary category.
Why does BC’s Sales by Category report show higher totals?
BC’s report attributes multi-category products to every assigned category (double, triple counts). The sum across categories there exceeds store revenue. Our card uses primary-category attribution only, so the sum equals goods revenue. Both views are valid for different questions; we prefer the no-double-count view for clean ranking.
My category tree is 5 levels deep, which level does the card rank by default?
Leaf level (deepest). For 5-level trees this can be very granular (“apparel > women > tops > t-shirts > graphic tees”). Use the depth toggle to roll up to a strategic level (typically level 2 or 3).
A category surged 50% week-over-week, real?
Check order count and AOV simultaneously. A 50% revenue surge with stable order count = AOV moved (a wholesale order, a high-value SKU); 50% surge with proportional order growth = real demand lift. For categories with <50 orders/month, week-over-week swings of 30-50% are within noise; require multi-week trends.
Can I exclude seasonal categories from the headline view?
Yes, configure a saved view “Year-round only” excluding categories tagged seasonal (skiing, swimming, holiday-specific). Keep the seasonal view as a separate dashboard for the categories that should be evaluated against year-over-year, not month-over-month.
My B2B portal has different categories than retail, can I see them separately?
Yes. Filter the card to the B2B channel (channel_id = <your B2B portal id>). The B2B category tree on BC Enterprise is often more practical (case-quantity based) than retail (lifestyle based); the B2B-only view supports B2B-specific decisions.
Should I cut a category below X% of revenue?
Generally yes for categories below 1% of revenue with no growth trajectory and no strategic role (e.g. lifestyle anchor, customer-acquisition gateway). Cutting tail categories simplifies merchandising and frees working capital. Exceptions: gateway categories (low revenue but bring new customers who buy from other categories) deserve to stay even when small.
A category with high revenue has high refund rate, what do I do?
Investigate the SKU mix within the category. Often one or two bad SKUs drive most of the refund volume; fix those rather than treating the whole category as broken. Cross-reference BC Refunded Products filtered to the category.
Multi-currency BC store, do categories sum correctly?
Without a currency filter, no, the sum is meaningless across mixed currencies. Apply a currency filter for clean per-currency category rankings.