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

> If a shirt comes in three sizes and two colors, the shirt is your product and each size and color you sell is a variant with its own SKU and price.

A variant is one version of a product that you sell. If a shirt comes in 3 sizes and 2 colors, the shirt is one product, and each size and color you sell is a variant of it. You describe the shirt once, and each variant has what makes it different: its own SKU, its own prices and costs, its own stock, and its own dimensions.

You build variants from options. An option is a question about your product, like Size or Color, and its values are the answers, like S, M, and L. You type the options and their values, and the PIM creates one variant for every combination. The names you pick mean nothing to the PIM, so a `Size` with `S`, `M`, and `L` in it is treated exactly like a `Voltage` with `110V` and `220V`.

Give your product options when each version needs its own SKU, its own price, or its own stock count. Leave it without options when it is one thing. You then edit its SKU, prices, and stock right in the product editor, and you see all of them at once. Two conditions are never two variants: `Condition` is a field on the product, so you keep a `New` copy and a `Used - Good` copy as two products.

You do everything on this page inside the product editor. Open [products](/pim/catalog/products), click a product, and scroll to its `Variants` section. You see a table of the product's variants, and above it a `Manage` button that opens the dialog over the page where you build options.

## Before you start

### What your role lets you do

Whatever your role, you can open a product, read its variants, and create, edit and delete them. Nothing on this page is above your level. Roles are set in [team, roles and permissions](/team#what-each-pim-role-can-do).

### Nothing is real until you save the product

<Warning>
  Every change you make here waits in the product editor as a draft. Save the product and everything applies at once, deletions included, and there is no trash. Discard the editor instead and you undo the whole session.
</Warning>

### Your product's own numbers do not move into its first variants

<Warning>
  The first time you give a product options, its SKU, prices, costs, stock, and dimensions are not copied into the new variants. They are dropped. Write them down before you start, or discard the editor to get them back.
</Warning>

## How to give a product its first options

<Steps>
  <Step title="Open the Manage Variants dialog">
    From [products](/pim/catalog/products), open your product and scroll to the `Variants` section. Click `Manage` above the table. A dialog called `Manage Variants` opens, with one empty option already started for you.
  </Step>

  <Step title="Name the option">
    In the `Options` list on the left, click the pencil icon on the row called `Option 1` and type a name, like Size. On a phone, type into the `Option name` box on the right instead.
  </Step>

  <Step title="Type its values">
    On the right, under `Values`, type your first value, like S, into the empty `Option value` box. A fresh empty box appears under it for the next value, and pressing Enter jumps you into it.
  </Step>

  <Step title="Add another option if you need one">
    Click `Add option` at the bottom of the list, name it, and fill its values the same way. One option is enough for many products, so skip this step freely.
  </Step>

  <Step title="Finish, then save the product">
    Click `Done`. The dialog closes and you get one row per combination in the `Variants` table. Click `Update` at the bottom of the product editor to save it all.
  </Step>
</Steps>

That is the whole flow. Every variant the PIM just created is empty. Your real work starts now: click each row and give it a SKU, a price, and stock. [Identifiers](/pim/catalog/identifiers), [pricing](/pim/catalog/pricing), and [inventory](/pim/catalog/inventory) explain those fields.

Everything below explains the table and the three dialogs one at a time. You do not need any of it to set up your first options.

## Every option in detail

### Reading the variants table

The `Variants` section of the product editor shows you 10 variants per page, and the control at the bottom of the table raises that to 25 or 50. Click a row and you are editing that variant.

| Column | What it shows |
| --- | --- |
| `Image` | The variant's own image. A variant never borrows the product photo, so this cell is empty until you add one |
| `Variant` | The variant's name, built from its option values |
| `Identifiers` | Its SKU and its other identifiers |
| `Stock` and `Cost` | The effective numbers, the ones the PIM actually uses. An `Untracked` badge appears when the variant does not track stock |
| `Price`, `Compare`, `MAP`, `MSRP` | Its four prices |
| `Dimensions` | Product and shipping measurements together |
| `Created at`, `Created by`, `Updated at`, `Updated by` | Who made the variant and who changed it last |

Three more columns start hidden for you: `On-hand stock`, `Supplier stock`, and `Fallback stock`, the physical numbers behind the effective one. You switch them on with `Columns`, in the toolbar above the table. [Inventory](/pim/catalog/inventory) explains how the effective number is picked.

<AccordionGroup>
  <Accordion title="How a variant gets its name">
    A variant has no name of its own. Its label is its option values joined with a slash, in the order you list the options, so a shirt's variant reads `Red / M`. Drag `Size` above `Color` in `Manage Variants` and that same variant reads `M / Red`: reordering options renames every variant of your product at once and changes nothing else.
  </Accordion>

  <Accordion title="Where a product with no options keeps these fields">
    Under it, every product has one variant row, because that row is where your SKU, prices, and stock are stored. On a product with no options you never see it: those fields are in the product editor, and the `Variants` table stays empty. The PIM never counts it either, so `Total Variants` on your [products](/pim/catalog/products#reading-the-products-table) table reads 0. When you filter `Has Variants` to `No`, you get the same products, because both read the same count.
  </Accordion>
</AccordionGroup>

### Building and changing options in Manage Variants

`Manage`, above the variants table, opens a dialog called `Manage Variants`, and that dialog is the only place you can create, rename, reorder, or remove options. Your options are listed on the left, and the selected option's values are on the right. On a phone you pick the option from a dropdown called `Current option` instead.

| What you see | What it does |
| --- | --- |
| The pencil icon on an option | Renames the option. Enter keeps the name, Escape cancels |
| The trash icon on an option | Removes the option. Removing the last one asks `Remove all variants?` first |
| A drag handle at the left of a row | Reorders options, or values. It appears once there are 2 or more |
| The empty `Option value` box at the end of the list | Type into it to add a value. A fresh empty box appears below it |
| The trash icon on a value | Removes the value |
| `Add option`, at the bottom of the list | Starts another option. It stays gray while any option still has a problem |
| A red bar on an option | That option has a problem: no name, a name another option already uses, no values, or a repeated value |
| `Done` | Sends the result to the product editor. It stays gray while anything is wrong or nothing changed |

You get up to 150 characters for an option name and for a value, with a counter under the box. Two of your options cannot share a name, and one option cannot have the same value twice. Capitalization does not make values different, so `red` and `Red` count as the same value, and the repeated one shows `Duplicate value` under its box.

**Nothing in the dialog counts until you click `Done`**, and even `Done` only updates the product editor, which still has to be saved. `Cancel`, the X, clicking outside, or pressing Escape asks `Discard changes?` whenever you changed anything, with `Discard` and `Keep editing` as the answers.

### What a change does to your existing variants

Once a product already has variants, changing its options rewrites the variant list the moment you click `Done`, without asking. What happens depends on the change you make:

| You | Your variants |
| --- | --- |
| Add an option | Every existing variant keeps its data and takes the new option's first value. Each further value adds an empty copy of every existing variant |
| Add a value to an option | One empty variant appears for each existing combination of the other options |
| Remove a value | Every variant using it is removed with it |
| Remove an option | Variants that become identical without it merge into the first of each group |

An empty variant has no identifiers, no prices, no costs, no dimensions, and no images. It starts with `Track Inventory` on and stock at 0, so it reads as out of stock until you fill it in. Nothing fills a variant in for you.

A combination you deleted stays deleted. Growing the options only creates combinations that have never existed, so nothing you removed earlier comes back on its own. Add it yourself with the `Add variant` button above the variants table if you want it again.

Deleting goes the other way and tidies up after you. A value that none of your variants uses any longer is dropped from its option, and an option that loses its last value is dropped entirely. Delete every `Red` variant and `Red` stops appearing.

One caution before you add values freely: the variant count is the multiplication of the value counts. Three options with 5, 6, and 4 values are 120 variants, and you type a SKU, a price, and stock into each one before it is worth publishing. Add the values you actually sell, not every value that exists.

### Adding one variant at a time

`Add variant` is next to `Manage` above the variants table, and it appears once your product has 2 or more options. With one option, one more variant is one more value, so you add the value in `Manage Variants` and the PIM creates its variant when you click `Done`.

The `Add variant` dialog shows you one box per option. Each box takes an existing value, or a brand-new one you type. A new one is added to the option when you save. A value that would repeat a combination you already have is grayed out, with `Already used` next to it. When the whole combination already exists, `Save` turns gray, with a message telling you to pick a different one. A `Preview:` line shows you the name the new variant will have. `Cancel` throws away the values you typed along with the variant.

### Editing a variant

Click any row of the variants table and a dialog called `Edit Variant` opens. Inside it you find exactly the sections the product editor gives up when a product gains options, plus the variant's own images: `Identifiers`, `Assets`, `Pricing`, `Inventory`, `Product Dimensions`, `Shipping Dimensions`, and `Customs`. [Identifiers](/pim/catalog/identifiers), [pricing](/pim/catalog/pricing), and [inventory](/pim/catalog/inventory) explain their fields.

The combination itself is fixed: nothing in this dialog lets you change which option values the variant is. To turn your `Red / M` into a `Red / L`, you delete it and add the one you want.

In the header, a dropdown next to the title switches you to any other variant without closing the dialog, and asks whether to discard your unsaved edits first. The integration logos there only show you where this variant is published. A `Data Sources` button appears when a supplier feed writes to this variant, and the menu at the right gives you `Duplicate` and `Delete`.

**`Update` stays gray until it can act.** You need to have changed something, and every identifier has to be valid and not already in use elsewhere in your catalog. The button also stays gray while the check on an identifier you just typed runs, while a price breaks a blocking rule, and while an amount is too large to store. A warning, like a price under your MAP, never blocks the button.

**Images are the one field you rarely retype.** In the image picker, the `From product` switch narrows the library to the images already on the product. A photo you attached once can then be pointed at every variant that needs it.

Every message in this dialog tells you the same thing: save the product. `Update` only writes the variant into the product editor's draft, and saving the product is what makes your changes real and what sends the product to your connected integrations. On Amazon a variant goes out as your offer: its condition, its price, and the link between your SKU and the ASIN on the first push. Its quantity goes too when you ship orders yourself, and it never goes out as images or text, which [integrations](/pim/integrations) explains.

### Duplicating a variant

`Duplicate`, in the `Edit Variant` menu, copies the last saved state of the variant, and asks to discard your unsaved edits first. The copy keeps your costs, prices, stock, dimensions, and customs values. It arrives without identifiers, because a SKU is unique across your catalog, without images, and without option values.

That last gap is a trap. No dialog lets you give the copy its option values after that. The `Variants` section shows a red line naming the variant that is missing a value for every option, and the product's `Update` button stays gray until you delete the copy. `Add variant` is the dependable way to create a variant, because it asks you for the combination first.

### Deleting variants

You can delete from two places, and both wait for you to save the product.

In the variants table, check the box on each row you want gone, and a bar appears above the table with `Delete` in it. Clicking it asks `Delete selected variants?` and reminds you the deletion takes effect when you save the product. Inside `Edit Variant`, the menu's `Delete` asks you `Delete this variant?` with the same reminder, then closes the dialog.

Select every row and delete, and you are removing the options along with the variants, so you get the bigger question from the next section instead.

### Removing every option and going back to a plain product

Two routes take you to the same place: removing the last option in `Manage Variants`, and selecting every row of the variants table and deleting. Both ask you `Remove all variants?`, warning that variant data, identifiers, listings, and images go for good.

<Danger>
  Going back to a plain product empties the fields that return to the product editor. You lose your identifiers, prices, costs, stock, dimensions, and images. `Country of Origin` and `Harmonized System (HS) code` are the only two you keep.
</Danger>

Like everything else here, nothing is written until you save the product, so closing the editor and discarding brings the variants back. Once you save, they are gone for good, along with their identifiers and their listings on your integrations.

### Limits

| What | Limit |
| --- | --- |
| An option name | 150 characters |
| An option value | 150 characters |
| Options per product | No limit in the PIM |
| Values per option | No limit in the PIM |
| Variants per product | No limit in the PIM |

Your integrations set their own limits, so a product the PIM accepts can still be rejected on the way out. You will find those rejections under When something goes wrong below.

### What a variant cannot do

| You cannot | Do this instead |
| --- | --- |
| Give a variant its own title, description, or specifications | Write them on the product. Every variant shares them |
| Give one variant a different `Condition` or `Status` | Create a second product. Both fields are on the product |
| Attach a manual or a document to one variant | Use the product's `Resources` area |
| Stop publishing one variant to an integration | Use the product's `Sync` switch, which covers the whole product, described in [products](/pim/catalog/products) |
| Change a variant's option values after it is created | Delete the variant and add the combination you want |
| Bring back a deleted variant after saving | Add it again and retype its data |

## What goes on the variant, and what stays on the product

Once your product has options, six sections leave the product editor and reappear inside every variant. The rule behind the split: you write anything that describes the thing you sell once, on the product. Anything that identifies, prices, or counts one sellable unit goes on each variant.

| Information | Where it is kept |
| --- | --- |
| Identifiers: SKU, barcode, part number, ISBN, ASIN, custom | Each variant |
| Prices: `Price`, `Compare Price`, `MAP`, `MSRP` | Each variant |
| Costs: `On-hand Cost`, `Supplier Cost`, `Fallback Cost`, `Effective Cost` | Each variant |
| `Track Inventory` and the three stock numbers | Each variant |
| Product and shipping weight, length, width, and height | Each variant |
| Customs: `Country of Origin` and `Harmonized System (HS) code` | Each variant |
| Title, description, and the feature bullets | The product |
| `Condition`, `Product Type`, brands, categories, and tags | The product |
| Specifications | The product |
| `Status` | The product |
| The SEO fields and the slug | The product |
| Information sources and `Internal Notes` | The product |
| Images and files | Both. A product has `Primary`, `Gallery`, and `Resources`; a variant has `Primary` and `Gallery` |

So you never type a title, a description, or specifications on a variant. A variant has no `Resources` area either. A manual or a compliance document is about the shirt, not about the red one in medium.

What each variant does have is exactly what makes a wide set of variants expensive for you to fill: its own identifier, its own prices, and its own stock. [Pricing](/pim/catalog/pricing) adds two more per-variant layers on top, your per-currency overrides and your per-integration price table.

## When something goes wrong

### The product will not save

A red line above your variants table names a variant missing a value for one of its options. Your product's `Update` button stays gray while the line is there. That variant is almost always a copy you made with `Duplicate`, because a copy arrives without option values. Delete it and your product saves again.

### Someone else changed the product while you had it open

If another person edits the variant you are editing, a banner titled `This variant changed` appears in the `Edit Variant` dialog, with a `Reload` button to load their version. Reloading discards your unsaved edits, and the banner says so.

If another person deletes variants of the product while you have it open, your save is stopped with `Some variants were deleted by another user. Refreshing...`, and the product reloads to show what is really there. Check your variants and save again.

### An integration rejects the product

The PIM saves any number of options, values, and variants, and each integration checks your product against its own limits on the way out. You find a rejected push in [sync issues](/pim/integrations/sync-issues), with the reason on it. On Shopify the messages are:

| Message | What to do |
| --- | --- |
| `This product has more options than Shopify allows (max 3).` | Cut down to 3 options, or turn the product's `Sync` switch off for that account |
| `An option has more values than Shopify allows.` | Remove values from that option |
| `This product has more variants than Shopify allows.` | Delete variants, or split the product in two |

## Where to go next

<Columns cols={2}>
  <Card title="Products" icon="package" href="/pim/catalog/products">
    The editor variants are in, and the `Sync` switch that decides publishing.
  </Card>
  <Card title="Identifiers" icon="barcode" href="/pim/catalog/identifiers">
    The SKU every variant needs before an integration can match it.
  </Card>
  <Card title="Pricing" icon="tag" href="/pim/catalog/pricing">
    Prices and costs, plus the per-currency and per-integration layers.
  </Card>
  <Card title="Inventory" icon="warehouse" href="/pim/catalog/inventory">
    The three stock numbers on each variant, and how the effective one is picked.
  </Card>
</Columns>
