> ## Documentation Index
> Fetch the complete documentation index at: https://docs.readyforcommerce.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Ready for Commerce is an ecosystem that currently contains two products, PIM and Repricer, standing on one shared foundation: one identity, one organization, one team, one bill. Do not call it a platform with features, and never hint at an unreleased product.
> PIM connects to Shopify, Amazon, Square, Google Merchant Center and BigCommerce. Repricer connects to Amazon, Walmart, Shopify, BigCommerce, eBay and Square. The two products do not share one list, and each integration is authorized separately inside each product. The roster grows on purpose, so describe what the product does and let a table carry which integrations do it today, instead of counting them or writing that only one does something.
> Integration is the word this product uses, and it is the default in the documentation: the connection, the account, the Integrations screen, the per-account settings and the sync state are all integrations. Channel is reserved for the narrow sense of a destination where a listing lives, as in a product being live on a channel or archived on the channel.
> Newegg is not a supported channel. Do not describe it.
> On Amazon, PIM manages the offer only: price, availability and condition. It does not publish listing content such as titles, descriptions, images or specifications.
> Sign-in is passwordless: a single-use code emailed to the user, or Google. There are no passwords anywhere, so never describe a password, a sign-up with a password, or an email confirmation link.
> There is no public API for customers and no customer-facing webhooks. There is no organization-wide activity feed and no audit export, but the PIM does keep version history on products, brands, categories, tags and specifications, with who changed what and a restore, so never write that changes are not recorded or that an edit cannot be undone. Do not describe capabilities that are not documented here.
> Never write that the products have no AI, and never write that anything is AI-powered. Both are wrong. The PIM's image Optimizer runs AI-backed transforms the seller starts on purpose: Upscale, Remove background, and the region selection behind Refine. The Repricer reads competitor prices off web pages on the server. No control, badge or tooltip in either product names AI, and the seller never writes a prompt, so describe what the buttons do in the app's own words instead of reaching for the word.
> A PIM product, brand, category or variant can be switched off per connected integration account. Hover the channel badge and the switch is beside the account name in the card that opens. It carries no visible caption, so never call it the Sync switch: Sync is only its accessible name. On a variant-grained provider, Amazon today, the switch moves into the variant editor. On a product it asks whether to delete it from the channel, archive it there, or leave it live. Disabling stops publishing, not reading. There is still no per-field sync toggle.
> The PIM's image Optimizer replaced a feature called Squarify, which no longer exists. It resizes to an aspect ratio or to exact dimensions, removes backgrounds, upscales, trims the transparent margin around a cutout and re-centers it, pads, fills and re-encodes, and it always publishes a new asset instead of changing the original. Nothing crops into the picture: the subject is always contained whole.
> The PIM has no repricing engine and never reacts to a competitor's price. It does build the price it publishes to each integration account from the seller's own fields, configured in that account's settings, so do not write that the PIM has no pricing rules.
> Neither product has an in-app notification center, bell or inbox. Notifications are delivered by email only.
> Billing is per organization and per product, and only the organization owner can see or change it. Team members are free and uncounted, so never describe seats or per-user pricing.
> The seller never picks a plan. Each product has twelve price tiers assigned automatically from usage: the PIM from catalog product count, which includes drafts and archived products, and the Repricer from trailing 30-day sales. Nothing is feature-gated by plan and exceeding a tier never blocks work, so never write that a feature requires a higher plan.
> A subscription that is past due or paused makes the product read-only, which stops repricing and blocks edits without deleting data. Only a canceled subscription locks the seller out. Nothing is ever charged without a payment method on file.
> Pages containing the text 'This page has not been written yet', or its Spanish equivalent 'Esta página todavía no está escrita', are placeholders. Do not treat their headings as documented behavior.

# Units sold report

> How many units you sold over the date range you pick, how that number moved day by day, and which products account for most of it.

The units sold report counts items instead of money. Over a date range you pick, it tells you how many individual items you sold. It also shows how that number moved day by day, and which of your products the sales came from.

Money answers what you took in. This one answers how much you moved. Two months can bring you the same amount while one of them sells four times as many items. So this is the report to open when you want to know what is selling, how steady it is, and which of your products most of it came from.

You find it under `Reports` in the sidebar down the left, on the card named `Units Sold`. Click that card and `Units Sold Report` opens in a dialog over the screen. Inside it are four numbers across the top, a chart of your days, a chart of your regions, and two tables. A report only counts what already happened, so there is nothing here you can break by clicking it.

## Before you start

### What your role lets you do here

`Admin`, `Manager`, `Editor` and `Analyst` all open this report and read every number in it, so whatever your role you get the whole thing. No figure is hidden from a role and none is trimmed for one.

The `SKU` column in the `Products` table opens one of your listings. What you can change there is what your role lets you change anywhere else. Roles are set in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### Your sales are a couple of hours behind

Every number here is built from the orders the Repricer reads out of your seller accounts. It reads your accounts again every 2 hours. So the last hour or two of selling is usually not counted yet, and a range ending today comes out a little short. [What Repricer reads](/repricer/integrations/pull) has the rest of that schedule.

## How to read the units sold report

<Steps>
  <Step title="Open the report">
    Click `Reports` in the sidebar down the left, then click the card named `Units Sold`. The report opens in a dialog over the screen under the title `Units Sold Report`.
  </Step>

  <Step title="Pick the period you want counted">
    In the bar across the top of the dialog is a dropdown reading `Last 30 days`. Open it and pick another period from the list. You can also pick a start date and an end date of your own on the calendar beside it.
  </Step>

  <Step title="Read the four numbers">
    Under the heading `Overview` are `Total Units Sold`, `Avg Units / Day`, `Peak Daily Units` and `Avg Order Size`. Hover the small info icon beside any of them and you get a sentence saying what it counts.
  </Step>

  <Step title="Scroll to your products">
    `Products` is the table at the bottom of the dialog. It opens with your best seller in the top row, sorted by its `Units` column with the highest first.
  </Step>
</Steps>

That is the whole report. Close the dialog with the × at the top of it, with the Escape key, or by clicking outside it. You come back to the six cards with your date range as you left it.

Everything below explains one piece at a time. You do not need any of it to read a number. The section after that one is worth your time on the day your products do not add up to your total.

## Every option in detail

The dialog is one column you read from the top down: `Overview`, `Units Trend`, `Units by Region`, `Daily Breakdown` and `Products`. The sections below follow that order.

The date range and the `Integration`, `Account` and `Region` dropdowns are in the bar across the top of the dialog. They narrow all five parts of your report at once. [Reports](/repricer/reports) covers what each of those does.

### The four numbers at the top

`Overview` is the heading over the row of numbers at the top of the report dialog. Each one is a label, a figure and a small info icon you can hover.

| Number | What it counts |
| --- | --- |
| `Total Units Sold` | Every individual item you sold over your date range |
| `Avg Units / Day` | That total divided by the days it has sales for, rounded to a whole number |
| `Peak Daily Units` | The most you sold on any one day of your range |
| `Avg Order Size` | That total divided by your orders, written as `2.4 units` |

**These count items and not orders.** One order for 3 of the same thing is 3 units. That is the whole difference between what you read here and the money on the [sales report](/repricer/reports/sales).

It is also why you should read `Avg Order Size`. A number near 1 means your customers buy one thing at a time. A number well above it means they fill a basket before they check out.

**`Avg Units / Day` is not your total divided by the days you picked.** It divides by the days it has sales for inside your range. Days with nothing recorded on them are left out of the division, and there is a section on that further down.

A total for your orders is not on this report. The `Daily Breakdown` table does give you an `Orders` column for each day. `Total Orders` over your whole range is on the [sales report](/repricer/reports/sales).

### Reading the units trend chart

`Units Trend` is the chart under the four numbers at the top of the report dialog. The line under its heading reads `Units sold each day`.

It has one point for every day in your range, oldest day at the left and today at the right. A line that rises to the right means you sold more as the period went on. Hover any point, or tap it on a phone, and you get that day and the units on it.

Every day of your range is a point, including the days you sold nothing. Those days read zero instead of being left out, so your line stays continuous.

Read the chart for the shape. Read `Daily Breakdown` underneath when you want the number itself.

### Reading units by region

`Units by Region` is the bar chart under `Units Trend`. A region is one place a seller account sells, so one of your Amazon accounts selling in two countries is two bars here. [Accounts and regions](/repricer/integrations/accounts#where-your-regions-come-from) covers where your regions come from.

You get one bar per region, longest first. The region's name is at the left of the bar and its units are at the right, so this is a chart you can read a figure off.

Units are the only thing this report splits up by region. How many orders each region brought you is not on this chart, and not anywhere else in this report.

When nothing sold anywhere in your range, the panel reads `No regional data available` instead of drawing bars.

### Reading the daily breakdown table

`Daily Breakdown` is the first of the two tables in the report dialog, under `Units by Region`. It is where you get the exact numbers.

| Column | What it shows |
| --- | --- |
| `Date` | One day of your range |
| `Units` | How many individual items that day's orders were for |
| `Orders` | How many of your orders came in that day |
| `Units / Order` | That day's units divided by that day's orders, to one decimal |

The table opens with your newest day first. Click any column heading to sort by that column instead. Above the rows is the same toolbar every other table in the Repricer gives you, with `Search`, `Columns`, `Filter` and `Density` on it. [Filters](/repricer/filters) covers what those four do.

**This table has no pages.** Every day of your range is on screen at once, one under the other. So `Last 7 days` gives you 7 rows, and `All time` on a long history gives you a very long list. Scroll it, or pick closer dates.

### Finding the products that sold

`Products` is the last section in the report dialog, under `Daily Breakdown`. It is one row per SKU, not one row per listing. So the same SKU selling on two of your accounts is one row here, with both accounts added together.

| Column | What it shows |
| --- | --- |
| `Product` | The title of the listing that SKU is on |
| `SKU` | The SKU your channel put on the order |
| `Units` | How many of that SKU you sold over your date range |
| `% of Total` | That SKU's share of every unit in this table, to one decimal |
| `Revenue` | What those units came to, in US dollars |
| `Last Sale` | The last day inside your range that it sold |

It opens sorted by `Units` with the highest first, so your best seller is the top row. Read the ranking straight down the table.

**`Last Sale` is the last day inside your range, not the last sale ever.** Ask for `Last 7 days` and the newest date you can see is today. The same row under `All time` can show you a date from two years ago. That is the version you want when you are looking for products that have stopped moving.

**`% of Total` is a share of this table, not of the report.** Its total is the units in the rows the table is showing you. So the percentages add up to 100 down the whole table. It is also the one column with no sorting and no filtering, because it is calculated from the rows themselves.

**`Revenue` is in US dollars whatever currency the sale was in.** It is the one money figure on `Reports` that does not come out in your organization's currency. So do not read it beside a total from another report and expect the two to match.

Hover a row and you get the same figure in the currency it sold in, as long as that row sold in one currency. A SKU that sold in two gets nothing on hover, because two currencies do not add up.

A small warning triangle beside a figure in `Revenue` means part of your money is not in dollars yet. What you are reading is short by whatever is missing, and the rest is added later without you doing anything. The `Units` on that row are never affected.

### Narrowing the products table

`Products` comes to you a page at a time, so a search or a filter here works on all of your products and not only on the rows you can see. That changes two things about how it behaves.

**`Search`, in the toolbar above the `Products` rows, looks in `Product` and `SKU`, and nowhere else.** Type part of a title or part of a SKU and the rows that match stay. Accents are ignored, so `cafe` finds `Café`.

**Searching or filtering also moves `% of Total`.** The percentages are a share of what is left after you narrow. Filter down to your top 10 and you get 10 rows adding up to 100%. Clear the search to get your whole picture back.

You can sort and filter on `Product`, `SKU`, `Units`, `Revenue` and `Last Sale`. Building a filter row works the same here as on any other table, and [filters](/repricer/filters#building-a-filter-row-in-the-filter-panel) covers it control by control.

The table shows you 25 rows a page to start with. `25`, `50` and `100` are your choices in the footer under it. Changing your date range or one of the three dropdowns sends it back to the first page, because the rows have just been counted again.

### Opening a listing from the products table

Every `SKU` in `Products` that still has one of your listings behind it is a link. Click it and that listing opens in a dialog on top of the report, on its `Insights` tab. That tab is where one listing's own sales and price history are, and [insights](/repricer/listings/insights) covers what you get on it.

Close that dialog with the × at its top. You are back on the report, on the same page of the same table.

A row stays after you delete its listing, because a sale is recorded against the SKU and not against the listing. When that happens the `Product` column reads `Not linked to a listing`, and the `SKU` beside it is plain text you cannot click. The units and the revenue on that row are counted like any other.

### Limits

| What | Limit |
| --- | --- |
| Rows `Products` shows you at once | 25, 50 or 100 |
| Filter rows on the `Products` table | 20 |
| Columns in `Products` you can sort by | 5 |

### What this report cannot do

| You cannot | Do this instead |
| --- | --- |
| Download, print or email it | Build a spreadsheet of your listings under `Uploads`, which [exports](/repricer/uploads/exports) covers |
| See a total for your orders | Read `Total Orders` on the [sales report](/repricer/reports/sales) |
| Take returns off your unit count | Nothing on `Reports` subtracts them, so take them off yourself |
| Sort or filter by `% of Total` | Sort by `Units`, which puts your rows in the same order |
| See how many orders each region brought you | Read the `Orders` column in `Daily Breakdown`, which is by day and not by region |
| Follow one product across the days | Open its listing from the `SKU` column and use the `Insights` tab |
| Put two periods next to each other | Read one, change your date range, read the other |

## What the numbers count

Three things about these numbers surprise people the first time. All three are worth knowing before you take a figure off this report and use it somewhere else.

### Your units are counted before any refund

A unit here is a unit ordered. Nothing on this report takes a refund or a return back off your count. So an item somebody bought and sent back a week later is still counted on the day they bought it.

That is the same number the [sales report](/repricer/reports/sales) shows you as `Units Sold`, counted from the same orders over the same range. Those two never disagree.

Money is the one that moves. Your revenue on that report does come down for a refund, on the integrations that report one.

### Why your daily average is not your total divided by your days

`Avg Units / Day`, the second of the four numbers at the top of the report dialog, divides `Total Units Sold` by the days it has sales data for inside your range. It then rounds the answer to a whole number. It does not divide by the number of days you asked for.

Days from before your first sync went back have nothing recorded on them at all, so they are not in the division. Picking `All time` therefore does not spread your sales across the whole life of your business. It spreads them across the stretch of history the Repricer has for you, which [what Repricer reads](/repricer/integrations/pull) puts a number on.

The trend chart does not work this way. It draws a zero for every day of your range with no sales in it. So you can see empty days on the chart that the average never divided by.

### Why the products table does not add up to your total

The four numbers, both charts and `Daily Breakdown` all count your orders. `Products` counts the lines inside those orders, which is a second reading of the same sales. So adding up its `Units` column does not always give you `Total Units Sold`.

Two things cause most of the gap.

| What happened | What it does |
| --- | --- |
| Your channel reported an order line with no SKU on it | It counts in your total, and a table built by SKU has no row to put it in |
| An order line came in a different currency from the rest of that day | It counts in your total and is left out of your per-product figures |

<Accordion title="Why a SKU in the Products table can be a string you do not recognize">
  Square does not put a SKU on an order line. The Repricer matches what Square does send against the listings you have, and uses the SKU it finds.

  When nothing matches, the row shows Square's own id for the item instead. The row is real and its units are in your total. The `Product` column beside it usually reads `Not linked to a listing`.
</Accordion>

So use `Total Units Sold` when you need the number, and `Products` when you need to know which items it came from. The ranking down that table is right even on a day its sum is a little under your total.

## When something goes wrong

Every message that can appear instead of this report is on [reports](/repricer/reports), with what to do about each one. The three below are the ones this report has of its own.

### Every number reads zero

This report does not tell you it found nothing. A range with nothing in it gives you zeros in the four numbers and a flat line on the chart. Under `Units by Region` you get `No regional data available`, `Daily Breakdown` fills with rows of zeros, and `Products` reads `No data to display`.

Three things to check, in this order:

| What to check | What to do |
| --- | --- |
| Your date range | Open the dropdown at the top of the dialog and pick `All time`. Anything at all in your history shows up |
| The `Integration`, `Account` and `Region` dropdowns | Set all three back to `All`. One of them may be on an account that sold nothing in that period |
| Whether anything has come in yet | An account you connected today has nothing until its first read finishes, which [what Repricer reads](/repricer/integrations/pull) covers |

### The products table came back empty on its own

`Products` counts separately from everything above it. So it can come back empty or broken while your four numbers are fine.

| What you see | What it means | What clears it |
| --- | --- | --- |
| `No results found` | Your search or your filter matched none of your products | Clear the search box, or remove the filter row |
| `No data to display` | Nothing sold in your range at all | Widen your date range, or set the three dropdowns back to `All` |
| A message with a `Retry` button under it | The table could not be counted. Nothing was changed and nothing was lost | Click `Retry`. The rest of your report stays where it is |

### A SKU you cannot open

| What you see | What to do |
| --- | --- |
| `Not linked to a listing` in `Product`, and a `SKU` that is not a link | Nothing. That SKU sold, the listing it sold under is gone, and its units are still counted |
| `Listing not found` after you click a `SKU` | The listing was deleted since your report was counted. Open the report again and that row loses its link |
| `Failed to load listing details` after you click a `SKU` | Click the same `SKU` again |

## Where to go next

<Columns cols={2}>
  <Card title="Sales" icon="dollar-sign" href="/repricer/reports/sales">
    The same days and the same orders counted in money, with your order total on it.
  </Card>

  <Card title="Reports" icon="chart-bar" href="/repricer/reports">
    The date range, the three dropdowns and the currency, which all six reports share.
  </Card>

  <Card title="Insights" icon="chart-line" href="/repricer/listings/insights">
    One listing's own sales and price history, which is where a `SKU` takes you.
  </Card>

  <Card title="What Repricer reads" icon="download" href="/repricer/integrations/pull">
    How often your sales are read, and how far back the first reading goes.
  </Card>
</Columns>
