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

# Filters

> A filter hides the rows you do not want to see right now, so you can pull the listings on one account and one region out of your whole table.

A filter narrows a table down to the rows you want to look at. You pick a column, pick a comparison, and give it a value, and the table keeps only the rows that answer. It reads every listing you have and not only the page you can see, so 12 matches out of 40,000 come back together on one page.

Nothing is changed and nothing is deleted, so a filter is safe to try. It decides what you see, and you take it off again whenever you want.

Most people filter to find a problem or to gather a group. Listings with no cost on them, listings that have never been repriced, price changes from one strategy last week. Once the table shows only those rows you can read them, change them all in one pass, or send the list to a teammate as a link.

The Repricer has two kinds of filter, and they work at different sizes. Every table has its own filter panel, which opens from `Filter` in the toolbar directly above the rows. `Home` and `Reports` add a second kind in the header at the top of the screen, and those narrow the whole screen to one integration, one account or one region.

## Before you start

A filter changes no data on its own. What matters first is what happens to the listings it leaves you with.

<Warning>
  On `Listings`, `Select all` picks every listing your filter matched, not only the rows you can see. Read your filter panel before you assign a strategy or pause repricing.
</Warning>

## How to filter a table

<Steps>
  <Step title="Open the table you want to narrow">
    Click `Listings` in the sidebar, or open any other table. Directly above the rows is a toolbar with `Search`, `Columns`, `Filter` and `Density` on it.
  </Step>

  <Step title="Open the filter panel">
    Click `Filter` in that toolbar. A panel opens under it with one empty filter row waiting for you.
  </Step>

  <Step title="Choose the column to narrow on">
    Set `Filter by`, the first dropdown in the row, to a column such as `Buy Box Status`.
  </Step>

  <Step title="Choose a comparison">
    Set `Operator`, the dropdown beside it, to a comparison such as `is`. Which comparisons you get depends on the column you just picked.
  </Step>

  <Step title="Give the comparison a value">
    Type or pick your answer in `Value`, the last box in the row. The table narrows as soon as you do, and clicking anywhere outside the panel closes it again.
  </Step>
</Steps>

That is the whole flow. Your table now shows only the rows that answered, and `Filter` in the toolbar gets a small number beside it for how many filters are on. Your filter is in the address bar too, so what you are looking at is already a link you can bookmark or send.

Everything below explains the toolbar one control at a time, then the header filters, then what goes into the link when you share the result. You do not need any of it to narrow a table.

## Every option in detail

The toolbar is the same above every table in the Repricer. The sections below follow it from left to right, and then move on to your columns and your pages. The header filters come last, because you set those on a screen and not on a table.

### The toolbar above every table

The toolbar is a single row between the page and your first row of data, and you get four controls on it.

| Control | What it does |
| --- | --- |
| `Search` | Narrows the table by matching text, with no column and no comparison to pick |
| `Columns` | Opens the list of columns, so you can hide the ones you are not using |
| `Filter` | Opens the filter panel, where you build a comparison on one column |
| `Density` | Sets how tall the rows are. It is not on the toolbar on a narrow screen |

**`Search` and `Filter` both narrow the table, and they are worth telling apart.** Use `Search` when you roughly know the words you are after. Use `Filter` when your question is exact, and always when you are looking for an absence. No amount of typing into `Search` can ask for a listing with no cost on it.

On `Listings` only, checking a row swaps these four controls for the bulk bar, so `Filter` is not there while you have rows checked. Clear the selection and the toolbar comes back with your filters still on.

### The search box

`Search` looks like a plain word in the toolbar until you click it, and then it turns into a box you type into. The table narrows a moment after you stop typing, and not on every letter. A `Clear` button appears beside the box once there is something in it, and pressing `Esc` empties the box and turns it back into the word.

What the box matches is decided by the table you are on.

| Table | `Search` reads |
| --- | --- |
| `Listings` | The SKU, the product ID, the Amazon FNSKU, the product title, the brand and the product type |
| `Pricing Activity` | The SKU, the product title, the product ID, the strategy name and the reason for the change |
| Every other table | The columns you can see on it |

The first two of those cover fields that are not columns anywhere on the table. That is why your search can find a listing by something you cannot see.

Whatever you type is matched as one phrase and not as separate words. So `blue widget` finds the rows with those two words together, and not every row with `blue` somewhere in it.

There is no minimum length here. A single letter searches, and this box is a different thing from the [search](/repricer/search) in the header, which covers every kind of record you have.

### Building a filter row in the filter panel

Click `Filter` in the toolbar and a panel opens under the button, with one filter row in it. A filter row is three dropdowns side by side and a small × for throwing the row away.

| Part of the row | What you do with it |
| --- | --- |
| `Filter by` | Pick the column to narrow on |
| `Operator` | Pick the comparison, such as `contains` or `is empty`. The list changes with the column |
| `Value` | Give the comparison its answer. A comparison like `is empty` needs none, so the box is not there |
| The × on the row | Removes that one row and leaves the others alone |

You get two buttons at the bottom of the panel. `Add filter` gives you another row, and `Remove all` clears every row in one click. There is no button that applies your work, because the table narrows while you build.

There is a second way into the same panel. Hover over a column header, click the menu at its right edge, and pick `Filter`. The panel opens with `Filter by` already set to that column, which saves you finding it in a long list.

You can put more than one row on the same column. Two `contains` rows on `Product Title` are allowed. A `greater than (>)` row plus a `less than (<)` row on `Price` is how you ask for a price range.

### Combining two filter rows

Add a second row to the filter panel and a small dropdown appears at the top left of your panel, reading `And`. It is the choice between narrowing and widening, and it applies to every row on the panel and not to one pair of them.

| Setting | A row is kept when |
| --- | --- |
| `And` | It answers every row on the panel |
| `Or` | It answers at least one of them |

`And` is what you want most of the time, because every row you add takes the list further down. Switch to `Or` when you are gathering instead of narrowing. It gives you the listings on `Paused` and the ones on `Not working` in one list, instead of the ones that are somehow both.

You do not get that dropdown on the first row, since a single row has nothing to combine with.

Rows on different columns combine the same way rows on one column do, and they can be of different kinds. So four rows on `And` give you every FBA listing, on one account, losing the Buy Box, with a cost you have not filled in.

### The comparisons you get on each kind of column

`Operator`, the middle dropdown on a filter row, does not give you the same list on every column. A date and a price cannot be asked the same questions, so the list is built from the kind of thing the column has in it.

| The kind of column | What you can ask of it |
| --- | --- |
| Text, like `SKU` or `Product Title` | Whether it contains, starts with, ends with, matches or is missing a piece of text |
| A number, like `Price` or `Stock` | Whether it is equal to, above, below, or has no value at all |
| A date, like `Last Repriced` | Whether it falls on, before or after a moment you pick |
| A fixed list, like `Repricing Status` | Whether it is one value, is not one value, or is any of several |

**A fixed list is a column whose answers the Repricer already knows**, such as `Repricing Status`, `Fulfillment`, `Condition`, `Buy Box Status` or `Integration`. Those are the columns where your `Value` is a dropdown and never a box, and they are also the only ones with no way to ask for an empty cell.

**`is empty` and `is not empty` are the two worth learning first**, since they are the only way to ask for something that is not there. Listings with no cost, listings that have never been repriced, listings with no barcode. Each of those is one row on the panel, and without it you would build the same list by reading the whole table to the end.

<AccordionGroup>
  <Accordion title="Every comparison a text column gives you, in the order they appear">
    `contains`, `does not contain`, `equals`, `does not equal`, `starts with`, `ends with`, `is empty`, `is not empty`, `is any of`.

    `is any of` is the one to know. It lets you enter several answers on one row and keeps a row matching any of them, which saves building three rows and switching the panel to `Or`.
  </Accordion>

  <Accordion title="Every comparison a number column gives you, in the order they appear">
    Six comparisons on the number first: `equals (=)`, `not equal to (≠)`, `greater than (>)`, `greater than or equal to (≥)`, `less than (<)`, `less than or equal to (≤)`. Then `is empty`, `is not empty` and `is any of`.

    Every money column is one of these, so your `Price`, `Cost`, `Min`, `Max`, `Fees` and `Profit` columns all take the same six comparisons.
  </Accordion>

  <Accordion title="Every comparison a date column gives you, in the order they appear">
    `is`, `is not`, `is after`, `is on or after`, `is before`, `is on or before`, `is empty`, `is not empty`.

    `is` and `is not` work to the minute, not to the day, since the picker takes a time as well as a date. To ask for a whole day, use `is on or after` its start and `is before` the next one.
  </Accordion>

  <Accordion title="Every comparison a fixed list gives you">
    `is`, `is not`, `is any of`. You get only three, and none of them asks for an empty cell.

    To gather two answers at once, use `is any of` on one row instead of two `is` rows switched to `Or`.
  </Accordion>
</AccordionGroup>

### What you type into Value

`Value`, the last box on a filter row, is not always a box you type into. It changes with the column, so you are never typing a date yourself or guessing how a status is spelled.

| On this kind of column | `Value` gives you |
| --- | --- |
| Text or a number | A box you type into |
| A date | A picker for the day and the time |
| A fixed list, like `Listing Status` | A dropdown of the values you can pick from |

**Type a price the way the column shows it.** The money columns want the amount you would read off the row. Type `24.99` and not the number of cents, and the Repricer converts it for you.

**A dropdown never gives you the same value twice on one column.** Pick `Active` on one row, then add a second `is` row on `Listing Status`. `Active` has dropped out of its list, so you cannot build two rows that ask the same thing.

### Narrowing a whole screen with the header filters

`Home` and `Reports` have a second kind of filter, and it is not in the table toolbar. You find it in the header at the top of the screen, to the right of the page title. It narrows everything under it at once: every card, every chart and every table you can see.

| Filter | What it narrows to |
| --- | --- |
| `Integration` | One integration, such as Amazon or Shopify |
| `Account` | One connected account inside that integration |
| `Region` | One region inside that account |
| The date range | The period the numbers cover. `Reports` only |

**The three selects cascade, which means each one is built from the one above it.** Pick Amazon under `Integration` and `Account` then offers your Amazon accounts and nothing else. Pick one of those and `Region` then offers that account's regions and nothing else. Change the integration and the two under it go back to `All Accounts` and `All Regions`, because the answers you had picked are no longer on offer.

**A select you never touched shows everything.** Each one starts on `All Integrations`, `All Accounts` or `All Regions`, and each of those is the same as no filter at all.

You never see a select with only one answer in it. If your organization has one integration, there is no `Integration` select in the header, and the same goes for accounts and for regions. So the header can have three of these, two, one or none, and it changes as you connect more accounts.

`Reports` adds a date range beside your selects. Click it and a calendar opens, with a list of ready-made periods down the left. Those are `Today`, `Yesterday`, `Last 7 days`, `Last 14 days`, `Last 30 days`, `Last 90 days`, `Month to date`, `Quarter to date`, `Year to date` and `All time`. Pick one of them, or pick your own `From` and `To` days on the calendar. `Home` has no date range, and the periods its cards cover are explained in [the dashboard](/repricer/dashboard).

Open one of the six reports and its dialog has the same selects again, plus a date range of its own. You narrow that one report without changing the screen behind it.

These filters are in your address bar as well. A `Reports` page narrowed to one account and the last 30 days is a link you can send.

### Sorting your rows

A filter decides which rows you get and a sort decides the order they come in. Click a column header once to sort it going up, and again to turn it around. Clicking never gets you back to no order at all, so for that, open the menu at the right edge of the column header and pick `Unsort`.

Keep `Shift` held while you click a second column header and both sorts apply, with the one you set first breaking the ties.

### Choosing which columns you see

`Columns` in the toolbar opens the list of every column you can turn off, each with a checkbox beside it. You can also open the same list from `Manage columns`, in the menu at the right edge of a column header.

Hiding a column does not take it out of `Filter by`. You can narrow on a column you cannot see, which is worth knowing on `Listings`, where there are more than 30 columns and most of them start off screen.

### Moving, resizing and pinning a column

The column headers are the top row of the table. Drag one sideways to move your column, and drag the line between two headers to make one wider or narrower, up to 400 pixels, and double-click that same line to fit the column to whatever is in it.

Pinning keeps a column still while the rest scroll under it, which is how you keep a SKU in view while reading columns off the far right. Open the menu at the right edge of the column header and pick `Pin to left` or `Pin to right`. You get 3 per side, and a fourth is rejected with `You can pin up to 3 columns per side`.

### Setting the row height and the page size

`Density` in the toolbar gives you three heights: `Compact`, `Standard` and `Comfortable`. Pick `Compact` when you want as many rows on screen as you can get, and `Comfortable` when you are reading them one at a time instead of scanning.

At the bottom right of the table you choose how many rows a page shows: 25, 50 or 100. Your `Listings`, `Strategies` and `Pricing Activity` tables open at 50, and the upload and report tables open at 25.

Changing a filter or a sort puts you back on page 1, because the page you were on may have nothing on it under the new filter.

### Filtering on a phone

On a narrow screen your toolbar keeps `Search`, `Columns` and `Filter` and drops `Density`. The filter panel stops floating beside its button and slides up from the bottom of the screen instead, over the table, and you tap outside it to close it.

The header filters move too. Instead of a row beside the page title, you get one `Filters` button. It opens a sheet from the bottom, with `Integration`, `Account`, `Region` and the date range labeled inside it, and it takes a number for how many you have set. Where only one of them would be shown, you get that one control on its own and no button.

### Limits

| What | Limit |
| --- | --- |
| Rows on a page | 25, 50 or 100 |
| Filter rows on one table | No limit |
| Filter rows on one column | No limit |
| Pinned columns | 3 per side |
| How wide you can drag a column | 400 pixels |
| Checked rows one link can include | 200 |

### What filters cannot do

| You cannot | Do this instead |
| --- | --- |
| Keep a filter without giving it a name | Save it as a [saved view](/repricer/saved-views), which works on three tables |
| Send the filter on your table into an export | Build it again in the [export dialog](/repricer/uploads/exports), which keeps filters of its own |
| Ask a fixed list for an empty cell | Filter on a column beside it, such as a date or a number |
| Narrow the cards on `Home` to a date range | Read the range each card covers on [the dashboard](/repricer/dashboard) |
| Build a filter row on the listing table inside `Profitability Report` | Use its `Search` box, which is the only way that table narrows |
| Undo one change at a time from the panel | Use your browser's back button, since every change is a step in the address |

## What goes into the link when you share a table

Everything you set on a table goes into the address, which makes the table you are looking at a link. Copy it out of the address bar, send it, and whoever opens it gets your filters, your sort, your search and your page.

Not all of it goes in, though, and the split is worth reading before you send one.

### What goes into the link

| Goes into the link | Stays on your own computer |
| --- | --- |
| Every row on the filter panel | Which columns you have showing |
| Whether they combine with `And` or with `Or` | How tall your rows are |
| Whatever is in the search box | How wide each column is |
| The sort, including a second one | The order you dragged the columns into |
| The page you are on, and how many rows it shows | Which columns you pinned |
| The rows you have checked | |

The left column is about which rows you are looking at and the right column is about how they are laid out. So a teammate opening your link reads exactly your rows, laid out in their own columns and not in yours.

Everything on the right is kept on your own browser, per table. That is why the same table can look one way on your laptop and another way on your phone, with nothing wrong in either.

### Sending someone a selection

The rows you check with the checkbox at the left of each row go into the link too, up to 200 of them. Past 200 the checked rows stay on your screen and never get into the address, and nothing says so. You keep your selection, and the person you sent the link to opens the same table with nothing checked.

The checkbox in the header row above them is different. That one goes with `Select all` in the bulk bar, which covers every listing your filter matched, however many there are. It does go in, because what the link stores is the filter and not the list of rows.

### Keeping a filter you build often

A link is right for sending something once. For the filter you rebuild every Monday, [saved views](/repricer/saved-views) is the control that keeps it under a name you choose, and it is in the header bar above the table. It works on `Listings`, `Strategies` and `Pricing Activity`, and not on the other tables.

A filter is also what a bulk change runs on, so [bulk actions](/repricer/bulk-actions) and the filter panel are usually used one after the other.

## When something goes wrong

### Your table came back empty

| What you see | What it means |
| --- | --- |
| `No results found`, with `Try adjusting your search or filter criteria` under it | Your filters are sound and no row answers them. Loosen one, or switch the panel to `Or` |
| `No data to display` | Nothing was filtered out. The table itself is empty, so this is the message you get before your first sync |

### A filter you forgot you set

The `Filter` button in the toolbar shows a small number beside it for how many of your filters are on. A table that looks wrong to you is usually a table with a filter you left behind. Click `Filter` and read the rows, then use `Remove all` at the bottom of the panel to clear them all at once.

That number only counts a row you finished. A row where you picked a column and stopped is not in the count, even though it is still on the panel.

### A row you only half filled in

A filter row whose comparison needs a value and does not have one narrows nothing, and the table does not tell you. It also does not disappear. Click `Filter` in the toolbar, look for a row whose `Value` is empty, and either finish it or remove it with the × on that row.

### A table with no Filter button

One table leaves `Filter` out of the toolbar: the listing table inside `Profitability Report`. It keeps `Search`, `Columns` and `Density`, so you narrow that one by typing instead of by building a row.

The preview inside the strategy wizard has no toolbar at all, because it is a sample of what a strategy would do and not a table you work in.

Everywhere else, a missing `Filter` means you have rows checked on `Listings`. Clear your selection and it comes back.

## Where to go next

<Columns cols={2}>
  <Card title="Saved views" icon="bookmark" href="/repricer/saved-views">
    Keeping a filter under a name instead of rebuilding it every week.
  </Card>

  <Card title="Bulk actions" icon="list-checks" href="/repricer/bulk-actions">
    What you can do to the listings a filter left you with.
  </Card>

  <Card title="Listings" icon="table" href="/repricer/listings">
    The biggest table, and what every column on it means.
  </Card>

  <Card title="Search" icon="search" href="/repricer/search">
    The other search, the one in the header that covers every kind of record.
  </Card>
</Columns>
