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

# Variants

> A product you sell in several sizes or colors comes in as one listing per variant, and this tab shows you the others so you can compare their prices.

A variant is one version of a product you sell, like the shirt in large and blue. On the Repricer every one of your variants is a [listing](/repricer/listings) of its own, with its own SKU, its own price, its own cost and its own strategy. A shirt in 3 sizes and 2 colors gives you 6 listings on that account, and each one is priced on its own.

If you use the PIM as well, this is the other way around from what you know there. A PIM product has its variants inside it, and you open the product to work on all of them at once. Here there is no product to open, because each of your variants came in from the channel as a listing of its own. See [variants in the PIM](/pim/catalog/variants) for that side.

The `Variants` tab is where you get them back together on one screen. It gathers the other variants of the listing you have open into one table. You get what each one is charging, how much stock the channel says you have, and whether repricing is running on it.

You come here when a product stops behaving the same way all the way across. One of your sizes is priced and the rest are not, one color stopped repricing, one variant is the only one still on sale. Those are hard to see in a listings table of thousands of rows, and easy to see with your product's variants side by side.

To open it, click `Listings` in the sidebar, click a row to open the listing, and click `Variants` in the row of tabs at the top of the dialog. Not every listing has that tab.

## Before you start

### What your role lets you do

Every role can read this tab, and you cannot edit anything in the table, because these numbers come from the channel and from each variant's own fields.

What your role decides is what you can do once you move into a variant. Filling in a cost or a price limit needs the `Editor` role, and changing a strategy or pausing repricing needs the `Manager` role. Roles are set in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### Which listings have a `Variants` tab

Two things decide whether you get one, and both have to be true. The listing has to be on a store of your own, and the product has to have more than one variant on that store.

| Where the listing is | Whether you get the tab |
| --- | --- |
| Your own store, on Shopify, BigCommerce, eBay or Square | On a product that has more than one variant on the channel |
| Amazon or Walmart | No tab. A marketplace listing is your offer on one item, and the item has no versions to group |

A product you sell as one thing never has the tab, whichever channel it is on. So the tab being there at all tells you the product has other variants.

## How to compare a product's variants

<Steps>
  <Step title="Open one of the variants">
    Click `Listings` in the sidebar, then click the product title on any row for the product you want. It does not matter which variant you start from. The listing opens in a dialog over the table.
  </Step>

  <Step title="Open the other variants">
    Click `Variants` in the row of tabs across the top of that dialog, before `Sync`.
  </Step>

  <Step title="Find the one you are after">
    One row is one variant, sorted by SKU. A `Current` badge beside a SKU marks the variant you came in on. The columns named after your options, such as `Color` and `Size`, tell you which row is which.
  </Step>

  <Step title="Move into the one you want to work on">
    Click its row. The dialog switches to that variant with the `Variants` tab still open, and `Pricing` is one tab away.
  </Step>
</Steps>

That is the whole tab. It only shows you things, so there is nothing to save and nothing to undo, and it reads the latest numbers every time you open it.

Everything below explains the columns one at a time, then which variants the table gathers and how you move between them. You do not need any of it to read the table.

## Every option in detail

### The columns in the variants table

One row on the `Variants` tab is one variant, the one you came in on included. Directly above the rows is the same toolbar every table in the Repricer has, with `Search`, `Columns`, `Filter` and `Density` on it. See [filters](/repricer/filters) for what each one does. Rows are sorted by `SKU` from A to Z when you arrive, and clicking a column header sorts by that column instead.

| Column | What it shows |
| --- | --- |
| `SKU` | Your own code for that variant on the channel. A `Current` badge beside it marks the variant you have open |
| One column per option, named after the option itself, such as `Color` or `Size` | Which version of your product that variant is |
| `Price` | What that variant is selling for on the channel right now, with the currency code in front of the number, as in `USD$29.99` |
| `Stock` | How many units the channel says you have. A zero is grayed out |
| `Status` | `Active`, `Inactive` or `Error`, which is the channel's own answer about that variant |
| `Repricing` | `Working`, `Manual`, `Paused` or `Not working`. Hover it for a line on what it means, or for the list of what that variant is waiting on |

A dash in a cell means the channel did not send you that detail for that variant.

**An option is a question about your product, and its values are the answers**, such as a `Size` with `S`, `M` and `L` in it. Your store keeps those on the product, the Repricer reads them in with each listing, and each one gets a column of its own here. So a shirt you sell in sizes and colors gives you a `Size` column and a `Color` column, and that pair is how you tell one row from another.

<AccordionGroup>
  <Accordion title="Why an option you use is not one of the columns">
    A column appears only for an option that tells your variants apart. When every variant of your product has the same value for an option, that option gets no column.

    On eBay there is a second rule. Your store marks which details an item varies by, and only those get a column. Everything else eBay has on the item, such as the brand or the manufacturer part number, is the same on every one of your variants and stays out.
  </Accordion>

  <Accordion title="Why a Square product's variants have no option columns">
    Square sends the Repricer the price, the stock and the name of each variation, and no separate option names and values to go with them. So a Square product gets no option column at all, and you get a table with `SKU`, `Price`, `Stock`, `Status` and `Repricing` on it.

    You tell those rows apart by their SKU. The variation name is already part of the product title on your listings table, as in `Cold Brew - Large`.
  </Accordion>
</AccordionGroup>

### Which variants the table gathers

The `Variants` tab gathers the listings your channel keeps under the same product as the one you have open, on the same account and in the same region as that listing.

So a product you sell on two connected accounts does not come together on this tab. Each account has its own listings for it, and opening one of those gives you a `Variants` tab with only that account's variants on it. Two regions of one account work the same way. To see both accounts at once, type the product title into `Search` in the toolbar above your listings table. See [filters](/repricer/filters) for what that box matches.

### Moving to another variant

On the `Variants` tab, click any row except the one with the `Current` badge, and the dialog switches to that variant. You stay on the `Variants` tab, so you can go across a product one row at a time.

The address changes to the variant you moved to, and that does two things for you. The browser back button takes you to the variant you came from, and the link in your address bar opens the one you are on now.

The top of the dialog changes with you. The picture, the title, the badges and the prices are the new variant's. `Pricing` is where you type its cost and its price limits. See [pricing on a listing](/repricer/listings/pricing) for every field on that tab.

### What the Variants tab cannot do

| You cannot | Do this instead |
| --- | --- |
| Change a price, a cost or a strategy from this table | Click the row and use the `Pricing` tab on that variant |
| Select several variants here and change them together | Filter your listings table down to them and use a [bulk action](/repricer/bulk-actions) |
| Copy a cost or a price limit from one variant onto the others | Set up a [sync link](/repricer/listings/sync-links), or send the numbers in with an [import](/repricer/uploads/imports) |
| See a variant of the same product on another account | Open that account's own listing for it from your listings table |
| Add a variant, or take one off this list | Change the product on the channel, and the next sync brings your new list over |

## When something goes wrong

### An empty tab on a product that has variants

An empty `Variants` tab reads `No Variants Found`, with `No other variants were found for this product.` under it.

The tab only appears on a product that has more than one variant, so an empty one usually means your other variants could not be read this time. Leave the tab and open it again to read them fresh. If it stays empty, open the product on the channel and check that your other variants are still on it.

### A variant reads Not working and you did not stop it

A variant whose `Status` is anything other than `Active` reads `Not working` in the `Repricing` column of the `Variants` tab, whatever you set on that variant. The Repricer does not price a listing the channel is not selling, so this column gives you the same answer on all of them.

So you can get two answers on one screen. The variant you have open can read `Paused` on the badge at the top of the dialog and `Not working` on its own row in this table. Both of those are about that one variant. Put it back on sale on the channel and the column reports what you set again.

Hover the `Repricing` cell either way and you get the list of what that variant is waiting on. See [listing and repricing status](/repricer/listings/statuses#every-repricing-issue-and-what-it-needs-from-you) for every value and every item in that list.

## Where to go next

<Columns cols={2}>
  <Card title="Pricing on a listing" icon="tag" href="/repricer/listings/pricing">
    The cost and the price limits you set on each variant, one variant at a time.
  </Card>

  <Card title="Sync links" icon="link" href="/repricer/listings/sync-links">
    Copying a cost and a price limit from one variant onto another.
  </Card>

  <Card title="Listing and repricing status" icon="signal" href="/repricer/listings/statuses">
    What `Not working` is waiting on, and every value the status columns take.
  </Card>

  <Card title="Variants in the PIM" icon="layers" href="/pim/catalog/variants">
    The other side of the same product, where you build your options and variants.
  </Card>
</Columns>
