> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.omegatheme.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# 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](/en/article/REPLACE-WITH-SLUG/).

**Table of contents**

1. [Filters and comparison](#2-filters-and-comparison)
2. [Overview tab](#2-overview-tab)
3. [Companies tab](#2-companies-tab)
4. [Quotes tab](#2-quotes-tab)
5. [Pricing tab](#2-pricing-tab)
6. [FAQ](#2-faq)

## 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. |

![Analytics page with the filter bar](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/analytics-overview-fake-data1x_7ztjaf.png)

|| A few metrics are a snapshot of today and ignore the date range. These say so in their note, for example **Current open quote value**.

## 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) |

|| Gross profit and margin need product costs. If some products have no cost, the card notes how much of your sales is covered, for example "92% of sales have cost data".

![Overview key metrics](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/overview-key-metrics1x_1qv96sx.png)

### 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.

![Sales and profit over time chart](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/overview-sales-profit-over-tim_1th0m4f.png)

### 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.

![Needs attention cards](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/overview-needs-attention1x_1jehgzo.png)

### Rankings

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

![Top companies table](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/overview-top-companies1x_nuly9y.png)

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

![New vs existing revenue](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/overview-new-vs-existing-reven_1yoyy8e.png)

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

![Top products table](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/overview-top-products1x_m298g5.png)

## 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.

![Companies summary](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/companies-summary1x_1k2aqcg.png)

### 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.

![Relationship state bar](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/companies-relationship-state2x_tdpjln.png)

### 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.

![Company performance table](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/companies-company-performance1_1nk5klm.png)

## 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) |

![Quotes key metrics](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-key-metrics1x_1lrmhxg.png)

### 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.

![Open quote aging chart](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-open-quote-aging2x_1cogwl4.png)

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

![Quote status distribution](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-quote-status-distributi_1vwy1ql.png)

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

![Median time to decision](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-median-time-to-decision_1ocxjrw.png)

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

![Quote detail list](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-quote-detail1x_13asabk.png)

### Advanced quote analysis

These cards show patterns in won and lost quotes.

| Small samples can be noisy, and a pattern does not prove cause and effect.

**Win rate by company**: quotes, quoted value, open value, win rate by count and value, and first response time per company.

![Win rate by company](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-advanced-win-rate-by-co_11jstdg.png)

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

![Win rate by deal size](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-win-rate-by-deal-size2x_1j14au0.png)

**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.

![Win rate by discount](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-win-rate-by-discount2x_1ikoekt.png)

**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.

![Quoted price vs company pricing](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-quoted-price-vs-company_sejp8r.png)

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

![Win rate with vs without company pricing](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/quotes-win-rate-with-vs-withou_1f7fm8.png)

## Pricing tab

The Pricing tab shows whether your B2B pricing is being used and whether it protects your margin.

|| Margins here use the prices and product costs at the time each order was placed. Later refunds, returns or price changes are not included.

### 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 key metrics](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/pricing-key-metrics1x_139zn5a.png)

### Pricing breakdowns

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

![Order value by pricing source](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/pricing-order-value-by-pricing_pdsgre.png)

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

![Margin by pricing source](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/pricing-margin-by-pricing-sour_18546rt.png)

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

![Pricing performance table](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/pricing-pricing-performance1x_eoebuk.png)

### 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.

![Quantity pricing effectiveness](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/pricing-quantity-pricing-effec_1bfi8tg.png)

### 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).

| This is a before-and-after comparison; other factors can also affect the result.

![Pricing change outcomes](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/pricing-advanced-pricing-chang_40g9ki.png)

## 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.

![Analytics empty state](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/faq-why-is-analytics-empty1x_1oxpuxy.png)

**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.

![Metric showing a dash](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/faq-why-does-a-metric-show-1x_18c6xyh.png)

**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.

![Cost data coverage note](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/faq-gross-profit-based-on-part_t3wlzw.png)

**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.

![New vs Recently activated](https://storage.crisp.chat/users/helpdesk/website/-/8/3/8/3/8383e5404a31c000/faq-new-vs-recently-activated2_vvkd41.png)

**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.