B2B Analytics
Overview
Analytics shows how your B2B business is performing across companies, quotes and pricing, in one page with four tabs: Overview, Companies, Quotes and Pricing.
To open it, go to B2B > Analytics in the app menu. Hover any metric's help icon or dotted underline to see what it means and how it is calculated.
To see analytics for one company only, read View analytics for a single Company.
Table of contents
Filters and comparison
The filter bar at the top applies to all four tabs. A line under the filters shows the current scope; click Clear filters to reset.
Filter | Options | What it does |
|---|---|---|
Date range | Last 30 days, Last 3 months, Last 6 months, Last 12 months, Custom range | Limits metrics to orders and quotes in that period. Custom range adds a start and end date. |
Compare to | No comparison, Previous period | Shows a change (▲/▼) next to metrics and a dashed previous-period line on the trend chart. The previous period has the same length as the selected range. |
Company | All companies, or one company | Narrows every tab to one company. Some cards change to fit a single company, for example Active companies becomes Active locations. |

Overview tab
The Overview tab answers "how is B2B doing?" in one screen: sales and profit, who is buying, and what needs your attention. Sales only count completed orders (paid or fulfilled); blocked or unfinished orders are left out.
Key metrics
Metric | What it means | Formula |
|---|---|---|
Net B2B sales | Sales from completed B2B orders in the period, after discounts and returns. | Gross sales − discounts − returns |
Gross profit | What you keep after paying for the products you sold. | Net sales − product costs |
Gross margin | The share of sales you keep as profit. | Gross profit / net sales |
Active companies | Companies with at least one completed order in the period, out of all companies you manage. Shows Active locations when one company is selected. | Count of companies with at least 1 completed order in the period, shown against all managed companies (same logic per location for Active locations) |
Repeat revenue | Share of sales from reorders: every order after a company's first one. | Sales from reorders / net sales |
Orders, Average order value, Units sold | Order count, average value per order and total units in the period. | AOV = net sales / orders |
New buying companies | Companies whose first order falls in the period. Shows New locations when one company is selected. | Count of companies whose first-ever completed order falls in the period (same logic per location for New locations) |

Sales & profit over time
A trend chart of net sales, gross profit or gross margin, grouped by month or day depending on the range. Turn on Compare to: Previous period to see the previous period as a dashed line.

Needs attention
Shown when All companies is selected. Each card links to the tab where you can act.
- Past their normal reorder cycle: companies ordering later than they usually do, with their gross profit from the last 90 days. Opens the Companies tab.
- Current open quote value: the value of quotes still open today. Opens the Quotes tab.
- Gross margin fell for (company name): appears when a company's margin dropped versus the previous period, with the sales affected. Opens the Pricing tab.

Rankings
Top companies: sales, gross profit, margin and share of sales by company. Click a company to filter the page to it.

New vs existing revenue: splits sales between companies that made their first purchase in this period and those that bought before.

Top products: sales, units, orders and margin by product.

Companies tab
The Companies tab shows which companies are buying, how much they are worth to you, and which ones are ordering later than usual.
Summary
- Companies: all companies you manage in the app.
- Active: companies that completed an order in the period.
- New: companies whose first order falls in the period.
- Past buying cycle: companies behind their usual reorder rhythm.

Relationship state
Relationship state compares each company with its own ordering rhythm, not with other companies. It looks at how long it has been since the last order, compared with the company's usual time between orders.
State | Meaning | Time since last order vs usual gap |
|---|---|---|
Healthy | Ordering within its usual rhythm. | Up to 1.25× |
Watch | Slightly overdue. | Up to 1.5× |
At risk | Meaningfully overdue. | Up to 2× |
Inactive | More than twice its usual gap has passed. | Over 2× |
Insufficient history | Not enough orders to know its rhythm. | Needs at least 4 orders |
For example, a company that usually reorders every 20 days and last ordered 28 days ago is at 1.4×, so it shows as Watch. Click a segment in the Relationship state bar to filter the table.

Company performance
A table of every company with sales, gross profit, margin, growth (when comparing), repeat revenue, last order date, typical reorder gap and relationship state. Hover a state to see how overdue the company is. Click Expand for a full-screen view.
You can filter the table by:
- Health: relationship state.
- Lifecycle: No purchase, Recently activated (first order within the last 90 days) or Established (first order more than 90 days ago).
- Pricing: companies with or without B2B pricing.
Sort by health (default), sales, growth, repeat revenue, last order or days overdue.

Quotes tab
The Quotes tab shows how much quote value is waiting on you, how fast you respond, and how often you win. A quote counts as won when its status is Deal Closed and lost when it is Deal Rejected; any other quote that isn't trashed is open.
Key metrics
Metric | What it means | Formula |
|---|---|---|
Open quote value | Total value of quotes still open today. Not limited to the date range. | Sum of quoted value of all open quotes, where quoted value = Σ (quoted price × quantity) across the quote's lines |
Win rate by value | Share of won value among all value won or lost in the period. | Won value / (won value + lost value) |
Stale quote value | Value of open quotes with no activity for more than 10 days. | Sum of quoted value of open quotes whose last buyer or merchant activity was more than 10 days ago |
First response time | Typical time from a quote coming in until you first price or send it. | Median of (first priced or sent − created) |
Quotes created, Total quoted value, Average quote value | Count and value of quotes created in the period. | Average = total quoted value / quotes created |
Won quotes, Lost quotes, Win rate by count | Quotes won or lost in the period. | Won / (won + lost) |

Charts
Open quote aging: open quote value grouped by age: under 3 days, 3–7, 8–14 and 15+ days. Bars show value, not the number of quotes.

Quote status distribution: quotes split into Received (not yet priced or sent), Negotiating (priced or sent), Won and Lost. Switch between count and value.

Median time to decision: typical time from a quote coming in until it is won or lost.

Quote detail: the underlying quote list, shown when one company is selected.

Advanced quote analysis
These cards show patterns in won and lost quotes.
Win rate by company: quotes, quoted value, open value, win rate by count and value, and first response time per company.

Win rate by deal size: win rate for quotes under $2k, $2k–$10k, $10k–$50k and $50k+.

Win rate by discount: win rate by how far the quote is below your Shopify price (0–5%, 5–10%, 10–15%, 15%+), plus the average discount.

Quoted price vs company pricing: how quoted prices compare with the B2B pricing already assigned to each company, and the win rate at each level.

Win rate with vs without company pricing: win rate for companies with their own pricing compared with companies quoted from your regular Shopify prices.

Pricing tab
The Pricing tab shows whether your B2B pricing is being used and whether it protects your margin.
Key metrics
Metric | What it means | Formula |
|---|---|---|
B2B price vs Shopify | How your B2B prices compare with your regular Shopify prices on items sold at B2B prices. | (B2B price − Shopify price) / Shopify price |
Margin at order creation | The share of order value you keep as profit, at the moment each order was placed. | (Order value − product cost) / order value |
Orders using B2B pricing | Share of orders with at least one item sold at B2B pricing. | Orders with a B2B-priced item / orders |
Order value below margin threshold | Value of items sold below the margin you pick (15%, 20%, 25% or 30%). Items without a cost are not included. | Sum of value of items whose margin at order creation is below the threshold; item margin = (item value − item cost) / item value |
Active pricing agreements | B2B pricing agreements that are active now. | Count of B2B pricing agreements not set to Inactive. Covers the whole store; the Company filter and date range don't change it |
Companies with pricing | Companies that currently have B2B pricing from the app. | Count of companies with at least one base price or quantity pricing assigned today; the date range doesn't change it |
Order value using B2B pricing | Value of items sold at B2B pricing, and its share of all order value. | Sum of value of items priced by B2B pricing when the order was created; share = that value / total order value. Measured at order creation, so it won't match Net B2B sales |

Pricing breakdowns
Order value by pricing source: how order value splits between items sold at B2B pricing and items sold at other prices.

Margin by pricing source: margin on B2B-priced items compared with items at other prices.

Pricing performance: a table per B2B pricing with order value, gross profit, margin, difference vs Shopify, orders and companies.

Quantity pricing effectiveness
Shows whether buyers buy enough to reach your quantity tiers.
- Tier reach rate: share of eligible purchases that reached a tier (purchases that reached a tier / eligible purchases).
- Order value at reached tiers: order value from purchases that reached a tier.
- Average tier discount: average discount buyers got by reaching a tier. Bigger purchases count more.
A table breaks these down per quantity pricing.

Pricing change outcomes
Under Advanced pricing analysis, each pricing change is listed with sales, average order value and price vs Shopify for equal periods before and after the change (for example 30 days each side).

FAQ
Why is Analytics empty?
Analytics fills in once you have B2B orders or quotes. Until then, the page shows a notice and the filters are turned off.

Why does a metric show "—"?
There isn't enough data to calculate it in the selected period, for example no won or lost quotes for a win rate. Next to a change indicator, "—" means there is no data in the previous period to compare with.

Why are gross profit and margin based on only part of my sales?
They need a product cost. Products without a cost in Shopify are left out, and the card shows the share of sales that has cost data. Add costs to your products in Shopify to improve coverage.

Which orders are counted in sales?
Only completed B2B orders (paid or fulfilled). Orders still waiting for approval or blocked are not counted.
What is the difference between "New" and "Recently activated"?
"New" means the company made its first purchase inside the selected period. "Recently activated" is a lifecycle label for companies whose first order was within the last 90 days, whatever period you select.

Do the win-rate and pricing-change reports show what caused a result?
No. They show patterns and before-and-after comparisons. Use them to spot where to look, not as proof of cause and effect.
Updated on: 08/10/2026
Thank you!