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

# Products

> Every piece of information the PIM knows about an item you sell is on a single product record, and that is the record your integrations publish.

A product is one record with everything the PIM knows about one thing you sell. Inside it are the name you sell it under, the description, the brands and categories, the identifiers, the prices, the stock, the images, and the variants. The integrations you connect publish from this record, so you edit in one place instead of once per account.

Everything you do here happens in two places. The `Products` table is where you find, sort, and filter everything you have, and the editor is where you change one product, top to bottom, on a single page. This page covers both, plus duplicating, deleting, and what your saves send out.

You will find them under `Catalog` in the sidebar, which opens on `Products`. Click a row and the editor opens over the table. Everything inside a product has a page of its own: [identifiers](/pim/catalog/identifiers), [pricing](/pim/catalog/pricing), [inventory](/pim/catalog/inventory), [variants](/pim/catalog/variants), and [specifications](/pim/catalog/specifications).

## Before you start

Two things matter before your first product. Everything else on this page can wait until you need it.

### What your role lets you do

| Role | See products | Create and edit | Duplicate, delete, and bulk actions |
| --- | --- | --- | --- |
| Admin | Yes | Yes | Yes |
| Manager | Yes | Yes | Yes |
| Editor | Yes | Yes | No |

If you are an Editor, the row checkboxes and the actions column are simply not on your table, so there is no grayed-out `Delete` to hunt for. Ask a Manager when a group of your products needs to change at once. You can create a product from nothing but you cannot duplicate one, because duplicating needs the same permission as deleting. Roles are set in [team, roles and permissions](/team#what-each-pim-role-can-do).

### Nothing keeps a history

<Warning>
  The PIM keeps only the current version of your product. A value you overwrite is gone when you save, and a deleted product is gone with everything in it. There is no history, no trash, and no undo.
</Warning>

Duplicating first is the safe way to try a change you are not sure about. Your copy starts as a `Draft`, and your original is never touched.

## How to create a product

<Steps>
  <Step title="Open the products table">
    Click `Catalog` in the sidebar, which opens on the `Products` table. Click `Create product` above the table. A dialog called `New Product` opens, and everything your product can have is on that one page.
  </Step>

  <Step title="Type a title">
    `Title` is the first box on the page and the only one you have to fill in. It gives you up to 300 characters.
  </Step>

  <Step title="Check the condition and the status">
    `Condition` is the first dropdown in the `Taxonomy` section and starts on `New`. `Status` is the dropdown beside the dialog title and starts on `Draft`. Both defaults are right for a first product, so you can leave them alone.
  </Step>

  <Step title="Click Create">
    `Create` is at the bottom right of the dialog. It stays gray until you have typed a title and the quick checks under the fields have finished, so a short pause before it activates is normal. Click it and you get the message `Product created`, and your product appears in the table.
  </Step>
</Steps>

That is everything your product needs. Your prices, stock, identifiers, images, brands, categories, and specifications can all wait, and a product with none of them saves normally. The dialog stays open after `Create`, so you can keep filling in sections, or close it and come back later.

Everything below explains the table and the editor one area at a time. You do not need any of it for your first product.

## Every option in detail

The sections below cover the table first, then the editor, then the actions you run on a whole product: bulk changes, duplicating, and deleting. Limits come last.

### Reading the products table

Every table in the PIM shares the same controls, and [filters](/pim/filters) explains the parts you see everywhere: pages, sorting, the search box, and the filter panel. What follows is what this table does for you that the others do not.

**It is a tree.** A product with options shows an arrow at the start of its `Title` cell, and clicking the arrow shows you its variants as indented rows under it. A product without options is one plain row with no arrow, and it shows you `0` under `Total Variants`. Click a product row and you open the product; click a variant row and you open that variant directly.

You cannot type into any cell of this table, so every change you make goes through the editor, and clicking around a row never breaks anything.

**`Stock` reads as words.** A product that does not track inventory shows you `Untracked`, a tracked one with nothing left shows you `Out of stock`, and everything else reads like `12 in stock for 3 variants`. Both badges are gray, and no color warns you about low stock. The count only includes the variants you track, and [inventory](/pim/catalog/inventory) explains tracking.

**Four cost columns exist, and one of them filters.** `Cost` is on by default. It is the effective cost, the number the PIM treats as what the item costs you right now. You turn the other three on with the `Columns` button in the toolbar. `On-hand cost`, `Supplier cost`, and `Fallback cost` display and never filter. [Pricing](/pim/catalog/pricing) explains how the effective cost is chosen for you.

**`Created by` and `Updated by` name who and what.** A person editing it themselves appears as their name alone. Everything else appears as a name plus how it happened: `Import`, `Data source`, `Integration`, or `System`. The filters on these two columns use the same words, so you can pick `Any data source` to find every product a feed has ever touched. `Created at` and `Updated at` are beside them, at the right end of your table.

<Accordion title="The fields you can filter on that never appear as columns">
  You will find `Has Variants`, `Total Variants`, `Has Specifications`, `Has Assets`, `Total Assets`, and `Inventory Tracked` under `Filter by` in the filter panel. They narrow your table without ever appearing as columns, and `Inventory Tracked` answers `Yes` only when every variant of a product tracks inventory.

  The table shows one combined `Dimensions` column. The filter panel instead gives you each measurement on its own: `Weight`, `Length`, `Width`, and `Height`, plus a `Ship.` version of each for the shipping numbers.
</Accordion>

The bar under the table is for [saved views](/pim/saved-views), which remember a filter setup so you do not rebuild it.

### Searching and filtering this table

**The search box reads titles and identifiers.** `Search` in the toolbar matches your product titles and your identifier values, custom labels included, and it ignores accents in both. A product you find by its title stays collapsed. A product found only through an identifier opens on its own and shows you just the matching variants, because an identifier is set on a variant.

**A few filters apply to the variant rows.** Price, cost, compare price, MAP, MSRP, stock, and the eight measurements narrow which variants you see when a product opens. Every other filter, `Updated at` included, decides which products you see and never hides their variants, so a matching product keeps its whole family together.

To search one identifier type, put its prefix in front of the value when you filter the `Identifiers` column:

| Prefix | Searches only |
| --- | --- |
| `sku:` | SKU values |
| `gtin:` | Barcodes |
| `pn:` or `part_number:` | Part numbers |
| `isbn:` | ISBN values |
| `custom:` | Custom identifiers |

With no prefix, you search every type at once. Anything else you put before a colon is treated as part of the value, so `asin:B01` looks for that exact text and finds nothing.

The `Status` and `Condition` filter dropdowns list only the values your catalog uses. A catalog where everything is new gives you `New` alone, and the 13 condition values you have never used stay out of the list.

### Reading the score

Every product of yours gets a score out of 100 measuring how complete it is. You see it as a percent in the `Score` column and on a badge at the top of the editor. It counts which of 11 pieces of information you have filled in, the pieces a complete listing needs wherever you publish it.

Green reads `Excellent` at 90 or above, orange reads `Needs work` from 50 to 89, and red reads `Incomplete` below 50. Hover over the badge and it lists what you should add next, with the points each item is worth, so the fastest way up is the top of that list. The badge moves while you type, before you save anything.

<Accordion title="The 11 things the score checks, and what each is worth">
  | The badge asks you to | Points |
  | --- | --- |
  | `Add a price` | 15 |
  | `Add a main image` | 15 |
  | `Add a GTIN, or a brand plus part number` | 15 |
  | `Add a description` | 10 |
  | `Add a brand` | 10 |
  | `Add a category` | 10 |
  | `Expand the description (160+ characters)` | 5 |
  | `Add more images (3+ recommended)` | 5 |
  | `Add specifications` | 5 |
  | `Add features` | 5 |
  | `Add an SEO title and meta description` | 5 |
</Accordion>

### Finding your way around the editor

The editor is one long page that opens over the table, with each section under its own header in a fixed order. There are no tabs and nothing is folded away, so scrolling takes you past everything your product has. Opening a product also puts its address in your browser, so you can send the link to a teammate and they open the same product.

| Section | What is in it |
| --- | --- |
| `Basics` | The title, the description, and the feature bullets |
| `Taxonomy` | Condition, Product Type, Brands, Categories, Shopify Category, and Tags |
| `Identifiers` | SKU, Barcode, Part Number, ISBN, ASIN, and custom identifiers |
| `Assets` | The `Primary`, `Gallery`, and `Resources` areas for images and files |
| `Pricing` | The currency, the costs, the price, the compare price, MAP, and MSRP |
| `Inventory` | The `Track Inventory` switch, the stock fields, and stock by location |
| `Variants` | The variant list, with `Add variant` and `Manage` |
| `Specifications` | The specification values assigned to this product |
| `Product Dimensions` and `Shipping Dimensions` | Weight, length, width, and height, once for each |
| `Customs` | The country of origin and the HS code |
| `SEO` | Meta Title, Meta Description, and the slug |
| `Extra` | Information sources and internal notes |

**The top row is the control center.** The `Status` dropdown is beside the title, and to its right you see who else has this product open, plus the score badge. Beside them is one logo for each integration you have connected. Then come a `Data Sources` button, shown once a supplier feed has data for this product, and a menu with `Duplicate` and `Delete` in it. At the bottom of the dialog, `Cancel` is next to `Update`, or next to `Create` on a product you have not saved yet.

**`Slug`, at the bottom of the `SEO` section, is your product's piece of a web address**, and it becomes the product's handle on an integration that uses one. It follows the title on its own until the first time you edit it yourself, and from then on it stops following. A slug another product already uses is rejected while you type, with `A product with this slug already exists` under the field.

The counters under `Meta Title` and `Meta Description` turn amber once you pass 60 and 160 characters. Amber is a nudge and not a stop: both fields keep accepting your text up to the limits in the table at the end of this section.

Closing the dialog with unsaved edits always asks you first, with `Discard changes?` on a product you have saved before and `Discard product?` on one you have not. `Discard` throws your edits away and `Keep editing` returns you to them, and no draft is kept anywhere.

### The sections that move onto variants

Give your product its first option and six of those headers leave the page: `Identifiers`, `Pricing`, `Inventory`, `Product Dimensions`, `Shipping Dimensions`, and `Customs`. They are removed, not grayed out, so there is no switch for you to look for and nothing further down to scroll to. Those fields are now set on each variant, and you open them from the `Variants` section.

The reason is that a red shirt and a blue shirt share one description but not one SKU or one price. Once your product has variants, each variant owns its own numbers, and a single product-level price would have nothing left to describe.

<Warning>
  Adding the first option does not move your numbers onto the new variants. They start empty, so note your product's SKU, prices, and stock first, or discard the editor to get them back.
</Warning>

[Variants](/pim/catalog/variants) covers the whole move step by step, and [identifiers](/pim/catalog/identifiers), [pricing](/pim/catalog/pricing), and [inventory](/pim/catalog/inventory) cover their own fields on both levels.

### Setting the status

`Status` is the dropdown beside the editor title, and it gives you four values.

| Status | What it means |
| --- | --- |
| `Draft` | The working state, and where every new product starts |
| `Active` | Live and discoverable |
| `Unlisted` | Live and sellable, hidden from search and browsing, reachable by direct link |
| `Archived` | Inactive or discontinued |

You set one status for the product, and each integration translates it into its own vocabulary when it publishes. So there is no per-integration status for you to manage anywhere in the PIM. Pick `Unlisted` for something you want buyable through a direct link without appearing when shoppers search or browse.

### A required specification never blocks the save

Some specifications are marked required for the categories they apply to. This editor enforces that in exactly one place. The `Select specifications` dialog, which you open with `Select` in the `Specifications` section, keeps its own `Done` button gray while a required specification has no value. Leave that dialog with `Cancel` and your product still saves, with a line in the `Specifications` section counting and naming what is pending.

Imports and data sources do reject a row that misses a required specification, which is why the same product can fail there and save fine for you here. The page on [specifications](/pim/catalog/specifications) explains where a requirement comes from.

### Changing many products at once

Check the boxes at the left edge of the rows and a toolbar replaces the controls above the table, giving you four actions.

| Action | What it does |
| --- | --- |
| `Update status` | Writes one status onto every selected product |
| `Update tags` | Adds, removes, replaces, or overwrites tags |
| `Update integration sync` | Turns publishing on or off per connected account, for the whole selection |
| `Delete` | Removes the selection for good, after a confirmation |

`Update integration sync` only appears when one of your connected integrations can take products. Variant rows have no checkbox, so your bulk work always acts on whole products.

There is no bulk edit of price, cost, brand, category, or condition. For those, you change one product at a time in the editor, or make your changes in a spreadsheet and send them through [imports](/pim/uploads/imports). How far `Select all` goes, and every limit on your selection, is in [bulk actions](/pim/bulk-actions).

### Duplicating a product

`Duplicate` is in two places: the actions column at the right end of a product row, and the menu at the top right of the editor.

Your copy is created as a `Draft`, named after the original with `(Copy)` on the end, a word the app writes in English whatever language you use. The copy takes your content, your taxonomy, the options and variants, the prices, the stock, the dimensions, the images, and the specification values. Two things stay behind. The identifiers do, because a SKU or a barcode can only exist once in your catalog, and the listings on your integrations do too, because those stay with the original.

Duplicating from the row leaves you where you are. Duplicating from the editor menu closes the original and opens your copy, ready to edit.

### Deleting a product

`Delete` is beside `Duplicate`, in the row's actions column and in the editor menu.

<Danger>
  Deleting is permanent and immediate. The product, its variants, its identifiers, its options, and its listings go at once, and nothing keeps a copy for you.
</Danger>

The confirmation reads your integrations before asking you anything. It opens with `This product will be permanently deleted from:` and lists the places, starting with the PIM itself and following with every account whose own setting says delete. Accounts you set to archive appear under `Will be archived on:`, and accounts you set to keep the listing appear under `Will be left untouched on (per your integration settings):`. A product that is live nowhere says `Not synced to any integration.` instead. Every version of the dialog ends with `This action cannot be undone.`

What each account does comes from its own delete setting in [integration settings](/pim/integrations/settings), trimmed to what that integration can do. An Amazon offer has no archived state, so an Amazon account you set to archive deletes it there instead. An account that is disconnected at that moment is marked `will be queued and retried when reconnected`, and that part of your delete runs when the connection returns.

Deleting a selection from the bulk toolbar asks you the same way, under `Delete selected products?`, counting how many of your selected products each integration has.

### Limits

| What | Limit |
| --- | --- |
| `Title` | 300 characters |
| `Product Type` | 100 characters |
| `Meta Title` | 200 characters |
| `Meta Description` | 300 characters |
| `Slug` | 200 characters |
| A feature bullet | 500 characters |
| `Internal Notes` | 1,000 characters |
| An information source label | 50 characters |
| An information source address | 2,000 characters |
| `Primary` | 1 image |
| `Gallery` | 250 files |
| `Resources` | 250 files |

### What a product cannot do

| You cannot | Do this instead |
| --- | --- |
| Edit a cell in the table | Open the product and change the field in the editor |
| Bulk-edit price, cost, brand, category, or condition | Send the changes through [imports](/pim/uploads/imports) |
| Give one product its own currency | The whole catalog shares one currency, explained in [pricing](/pim/catalog/pricing) |
| Recover an overwritten value or a deleted product | Duplicate before risky edits, or run an [export](/pim/uploads/exports) first |
| Publish some fields and keep others back on one integration | Switch the whole product off for that account, described under what happens when you save |
| See who changed one field, or when | `Created by` and `Updated by` name the last touch on the whole product |

## What happens when you save

### Everything applies at once

`Update` writes your whole page in one action: the product, its taxonomy, its identifiers, its options and variants, its images, and its specification values. Until then nothing you do inside the editor is real, which is what the message `Variant added, save product to apply` is telling you when you add a variant. The dialog stays open after saving, so you can keep working, and `Update` grays itself again until you change something new.

### The update goes out to your integrations

Saving also lines up a push to every connected integration that can take products, and you never wait for them. The integration logos at the top of the editor tell you where things stand. `Pending update` means your push is waiting its turn, `Synced` means the integration confirmed it, and `Failed` means it was rejected.

**Not every integration gets the same thing.** An integration with product pages of its own gets your content, as far as it accepts each field: your title, description, and images. Amazon is the exception: there the listing content lives on a catalog entry shared by every seller of that item, so the PIM manages your offer against it. That is the condition, the price, the link from your SKU to the ASIN on the first push, and the quantity on listings you ship yourself. A title or an image you correct here never goes to Amazon in either direction. What each integration accepts, field by field, is in [the integrations section](/pim/integrations).

### Taking one product off one integration

Hover over an integration's logo at the top of the editor and you get a small panel with that account's details. The switch inside that panel controls whether this one product of yours publishes to that one account. It touches nothing else: not the rest of your product, and not any other account.

If the product is already live there, turning the switch off asks you `Stop syncing with {channel}?`. The dialog lets you choose what happens to the live listing: delete it there, archive it there, or leave it as it is. An integration with no archived state gives you two choices instead of three. Leaving the listing live does not stop the reading direction, so on an integration the PIM also reads from, edits made over there can still flow back to you. If the product never got to that account, the switch asks you nothing and publishing simply never starts.

To do this for many products at once, use `Update integration sync` in the bulk toolbar, which gives you the same choices per account.

## When something goes wrong

### The save will not go through

When `Update` stays gray, something on your page is blocking it, and the reason is written under the field causing it. The common blocks are a slug or an identifier another of your products already owns, and a price rule, like the compare-at price being below the price. The messages are listed for you on [identifiers](/pim/catalog/identifiers), and [pricing](/pim/catalog/pricing) says which price rules block and which only warn. Fix the named field and `Update` activates again.

A pause is not a block. While the checks on your slug and identifiers are still running, `Update` waits, gray, and activates when they come back clean.

### Someone else changed the product

The top of the editor names everyone else who has your product open, and whether they are viewing or editing; nothing is ever locked. If you have typed nothing, their saved changes appear in place and flash briefly. If you have unsaved edits, a banner reading `This product changed` appears with a `Reload` button, and reloading discards your edits in favor of theirs. If you save without reloading, the save is rejected with `This product was changed by another user, reload to see the latest.` No one overwrites anyone unseen.

### An integration rejected the update

A rejected push never touches your product in the PIM. It shows on that integration's logo at the top of the editor as `Failed`, or `Needs attention` for a warning. The panel that opens when you hover names the details for you. Each integration's page under [integrations](/pim/integrations) explains its own messages and fixes.

## Where to go next

<Columns cols={2}>
  <Card title="Variants" icon="layers" href="/pim/catalog/variants">
    What options do to a product, and where its fields go.
  </Card>
  <Card title="Identifiers" icon="barcode" href="/pim/catalog/identifiers">
    SKU, Barcode, ASIN, and the uniqueness rules behind them.
  </Card>
  <Card title="Pricing" icon="tag" href="/pim/catalog/pricing">
    Which cost the PIM uses, and the rules that block a save.
  </Card>
  <Card title="Bulk actions" icon="list-checks" href="/pim/bulk-actions">
    Changing many products in one pass.
  </Card>
</Columns>
