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

# Listings

> Every product on every account you connect shows up in the listings table, so this is where you set the cost and the price limits repricing runs on.

A listing is one of your products as it exists on one connected account, in one region. The same pair of shoes sold on two accounts is two listings, and one account selling into two countries gives you two more.

Each listing shows what the channel says about the item, such as its title, what it is selling for right now and how much stock you have. It also has the numbers you give it: what the item costs you, the lowest and highest price you will accept, and the strategy that decides what to charge. Repricing runs on those numbers, so a listing with none of them is a listing nothing happens to.

Most people come here for one of three reasons: to set up a listing that is not priced yet, to read what repricing has done, or to change one item. Click `Listings` in the sidebar and the table is already full, because listings come in from the channel on their own.

## Before you start

Two things are worth knowing before you touch anything. Everything else on this page can wait until you need it.

### What your role lets you do

| Role | What you can do here |
| --- | --- |
| Admin | Everything on this page |
| Manager | Everything on this page |
| Editor | Type into the six price columns. The `Strategy` cell does not open, and your rows have no checkboxes |
| Analyst | Read. Every cell opens the listing instead of turning into a box |

Your role is set per organization and per product, in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### A listing can go away and take your numbers with it

<Warning>
  When a channel stops returning an item, the Repricer removes that listing for good. Your cost, your price limits and the listing's price history go with it, and a SKU that comes back later comes back empty.
</Warning>

The Repricer emails you after the fact. There is nothing to approve first and nothing to undo, so treat a cost you typed here as something the channel can still take away from you.

## How to set up a listing

<Steps>
  <Step title="Open the listings table">
    Click `Listings` in the sidebar. The table opens on a saved view called `Active Connections`, so you are looking at the listings on accounts that are still connected and not at every listing you have.
  </Step>

  <Step title="Find the one you want">
    Click `Search` in the toolbar directly above the rows and type a SKU or part of the product title. [Filters](/repricer/filters) covers the other ways to narrow the table down.
  </Step>

  <Step title="Say what the item costs you">
    Click the cell in the `Cost` column on that row. It turns into a box. Type the amount and press Enter.
  </Step>

  <Step title="Set the lowest price you will accept">
    Do the same in the `Min` column, and in `Max` for the highest price. If `Min` shows an `Auto` badge instead of turning into a box, your strategy is already working `Min` out from your cost and there is nothing to type.
  </Step>

  <Step title="Pick a strategy">
    Click the cell in the `Strategy` column and pick one from the list that opens. You only get the strategies built for that listing's region.
  </Step>
</Steps>

That is the whole flow. `Repricing Status` on that row turns to `Working` once the Repricer has everything it needs. A price shows up in `Target` when it has a new one to send.

Everything below explains the table one part at a time. You do not need any of it to price a listing.

## Every option in detail

### Reading the table

One row is one listing. A product you sell on two connected accounts is two rows, so your row count is normally higher than the number of products you think you sell.

The columns run left to right in a set order: what the listing is, how it is doing, the numbers you fill in, and the dates. There are 37 of them and they do not all fit on a screen. Scroll sideways, or click `Columns` in the toolbar and turn off the ones you are not using. The [filters](/repricer/filters#moving-resizing-and-pinning-a-column) page covers that panel, and moving, resizing and pinning a column.

**Two columns are turned off when you arrive.** `Connection` says whether the account behind the listing is still connected. `Listing Sync` says whether the listing is one end of a [sync link](/repricer/listings/sync-links). Turn either one on from `Columns` in the toolbar.

**Eight cells give you a breakdown when you hover over them**, and it is the fastest way to understand a number you did not expect. They are `Target`, `Buy Box Price`, `Ch. Suggested Price`, `Lowest`, `Fees`, `Profit`, `Repricing Status` and `Fulfillment`. On a touch screen the first tap shows you the breakdown, and does not open the listing.

**`Target` is empty most of the time, and that is fine.** A price shows up there only when the Repricer has one it has not sent yet. An empty `Target` means the channel price is already the price your strategy wants.

<AccordionGroup>
  <Accordion title="Every column that says what the listing is">
    | Column | What it shows |
    | --- | --- |
    | `Image` | The product picture from the channel. This column header has no name on it |
    | `SKU` | Your own code for the item on that channel |
    | `Product ID` | The channel's own code for the product, such as an ASIN. It is a link that opens the product on the channel |
    | `Barcode` | The UPC, EAN or GTIN the channel has for it |
    | `Product Title` | The title as the channel has it |
    | `Integration` | Which integration the listing is on |
    | `Region` | Which market of that account it is in |
    | `Connection` | `Active` while the account behind it is connected, `Inactive` once it is not. Turned off when you arrive |
    | `Brand` | The brand the channel reports |
    | `Condition` | How the channel grades the item, such as `New`, `Used - Good` or `Open Box` |
    | `Fulfillment` | `FBA`, `FBM` or `WFS`, which is who packs and ships the order |
    | `Stock` | How many units the channel says you have |
    | `Listing Sync` | `Source`, `Target` or `Both` on a listing that is part of a sync link. Turned off when you arrive |
  </Accordion>

  <Accordion title="Every column that says how the listing is doing">
    | Column | What it shows |
    | --- | --- |
    | `Listing Status` | `Active`, `Inactive` or `Error`, taken from the channel |
    | `Repricing Status` | `Working`, `Manual`, `Paused` or `Not working` |
    | `Buy Box Status` | `Winning`, `Not Winning` or `Suppressed` |
    | `Buy Box Eligibility` | `Yes` or `No`, which is whether this offer can compete for the Buy Box at all |
    | `Price` | What the item is selling for on the channel right now |
    | `B2B Price` | Your business price, on an account that has business pricing turned on |
    | `Target` | The price the Repricer has worked out and not sent yet |
    | `Buy Box Price` | What the Buy Box is going for |
    | `Ch. Suggested Price` | The price the channel says would give you a chance at the Buy Box |
    | `Lowest` | The lowest competing price anyone is asking |
    | `Fees` | What the channel takes out of a sale at the current price |
    | `Profit` | `Price` minus `Cost` minus `Fees` |
  </Accordion>

  <Accordion title="Every column you fill in yourself, and every date">
    | Column | What it shows |
    | --- | --- |
    | `Strategy` | Which strategy prices this listing |
    | `Cost` | What the item costs you |
    | `Manual Price` | One fixed price that replaces everything a strategy would work out |
    | `Min` | The lowest price you will accept |
    | `Max` | The highest price you will accept |
    | `MAP` | The lowest price the brand lets you advertise, when there is one |
    | `MSRP` | The price the brand suggests |
    | `Last Synced` | When this listing last came in from the channel |
    | `Last Repriced` | When the Repricer last decided on a new price for it |
    | `Last Submitted` | When it last sent a price to the channel |
    | `Last Created` | When the listing first showed up here |
    | `Last Updated` | When anything about it last changed |
  </Accordion>
</AccordionGroup>

### Editing a value in a cell

On the listings table, seven columns take an edit without opening anything: `Strategy`, `Cost`, `Manual Price`, `Min`, `Max`, `MAP` and `MSRP`. Click one of those cells and it turns into a box you type in. Every other cell opens the listing instead, which is why an Analyst, who edits nothing, opens the listing wherever they click.

Press Enter, or click somewhere else, to save it. Press Escape and the cell goes back to what it was. There is no draft and no save button on the table, so your number is live the moment you leave the cell.

| What you type | What happens |
| --- | --- |
| A number above zero | Saved |
| `0`, or a negative number | The box turns red and the edit is thrown away |
| Nothing, on a cell that had a value | The value is cleared |

**`Min` is read-only on some rows, and shows an `Auto` badge.** That happens when the strategy works `Min` out from your cost. A number you typed would be ignored. Hover the cell for the sum the Repricer used, and see [price floor](/repricer/strategies/price-floor) for how it is built.

**`Cost`, `MAP` and `MSRP` are locked on a listing your PIM manages.** Those three come down from the PIM, so you cannot write over them here. Edit them in the PIM and the change comes down here. The [PIM connection](/repricer/integrations/pim) page covers what else that changes.

**Typing into `Manual Price` stops repricing on that listing.** The Repricer sends that exact number to the channel and skips the strategy, the price limits and the rounding. `Repricing Status` turns to `Manual`. Clear the cell to hand the listing back to its strategy.

<Note>
  A save that is rejected on the table puts the old value back with no message on screen. If a cell keeps snapping back, open the listing and make the same change on the `Pricing` tab, which tells you why.
</Note>

### Assigning a strategy to one listing

The `Strategy` column on the listings table is the one editable cell that is not a price. Click it and a list opens with the strategies for that listing's region, so a strategy built for your United Kingdom account never shows up on a United States row. Pick one and that row is priced by it from the next run.

Every listing already has a strategy when it gets here, because a new one starts on your organization's default. Changing it here changes one listing. To change many at once, check the rows and use [bulk actions](/repricer/bulk-actions).

### Opening a listing

On the listings table, click any cell that does not take an edit and the listing opens in a dialog over the rows. Everything about that one item is in there. The address changes to that listing, so you can send a teammate a link that opens the same dialog.

The top of the dialog is the same whichever tab you are on. It shows the product picture and title, three badges reading `Listing`, `Repricing` and `Buy Box`, and the prices in play. Beside those are `Integration`, `SKU` and `Product ID` links, which open the item on the channel in a new tab.

Under that are the tabs.

| Tab | What is on it | When you get it |
| --- | --- | --- |
| `Overview` | The identifiers, the account and region, stock, and when the listing was last synced, repriced and submitted | Always |
| `Pricing` | The same numbers you can type on the table, plus business pricing and a compare-at price. See [pricing on a listing](/repricer/listings/pricing) | Always |
| `Insights` | Read-only cards on your margin, your guardrails, where you are against the market and how the item is selling. See [insights](/repricer/listings/insights) | Always |
| `Competitors` | Who else is selling the same item and at what. See [competitors](/repricer/listings/competitors) | On a listing whose channel reports competing offers, and on your own store only while the strategy prices against a competitor |
| `Variants` | The other variants of the same product, side by side. See [variants](/repricer/listings/variants) | On your own store, when the listing is one of several variants of one product |
| `Sync` | Links that copy your numbers from this listing to another. See [sync links](/repricer/listings/sync-links) | Always |
| `Activity` | Every price change on this listing, with what caused each one | Always |

Amazon reports competing offers directly, so an Amazon listing always has a `Competitors` tab. On Shopify, BigCommerce, eBay and Square the competing prices come from addresses you supply, so that tab is there only while the strategy has a competitor to price against. Walmart reports a Buy Box and no individual offers, so a Walmart listing has no `Competitors` tab at all.

Nothing you change in the dialog needs saving. It goes out as you type, and closing the dialog sends anything still pending. Press Ctrl or Command with S to push a change through without waiting.

### Limits

| What | Limit |
| --- | --- |
| Columns in the table | 37 |
| Columns turned off when you arrive | 2 |
| Columns you can edit without opening the listing | 7 |
| How often the Repricer syncs with a channel | 10 minutes |

### What the listings table cannot do

| You cannot | Do this instead |
| --- | --- |
| Add a listing | Put the item on the channel, and the next sync brings it in |
| Delete a listing, or hide one you do not want to see | Remove it on the channel, or filter it out of your view |
| Change the title, the picture, the barcode or the stock | Change them on the channel |
| Type into `Price` to change what shoppers pay | Use `Manual Price`, or let a strategy price it |
| Edit `Cost`, `MAP` or `MSRP` on a listing your PIM manages | Edit them in the PIM |
| Fill in a cost on hundreds of listings by typing | Send them in with an [import](/repricer/uploads/imports) |
| Undo an edit | Type the old value back in |

## How your listings stay up to date

### Where a listing comes from

Connect an account and the Repricer reads that account's catalog. You get one listing for every item you sell, in every market that account sells into, and the table fills itself in. On a large catalog this takes a while, and until it finishes the table tells you it is still working.

After that the Repricer syncs with every connected account every 10 minutes and brings across what changed. `Last Synced` on the row is when that listing last came in.

What comes from the channel and what is yours splits cleanly, and it is worth learning once.

| Comes from the channel | Yours |
| --- | --- |
| The title, the picture, the barcode and the brand | `Cost`, `Min`, `Max`, `MAP` and `MSRP` |
| `Price`, `Stock`, `Condition` and `Fulfillment` | `Manual Price` and `Strategy` |
| `Listing Status`, and everything about the Buy Box and your competitors | Whether repricing is paused, from `Pause Repricing` on the `Pricing` tab |

Anything in the left column is read-only here. Change it on the channel and the next sync brings it over.

### When a listing leaves the channel

If a sync comes back and an item you had is not in it, the Repricer takes that listing off your account for good. It is the only way a listing ever leaves, and it is not something you can trigger or reverse.

Your cost, your price limits, the listing's price history and its competitor addresses go with it. If you sell that SKU again later it comes back as a brand new listing with all of that empty, and you fill it in again from scratch.

You get an email each time this happens, headed `Listings removed`, naming the account and how many went. It also tells you how many listings that account has left. A handful gone after you cleaned up your catalog is normal, and most of them gone is not. Turn the email off under `Listings removed` in your notification settings, though it is the only warning there is.

## When something goes wrong

### A listing you expected is not in the table

| Why | What to do |
| --- | --- |
| The table opens on `Active Connections`, which leaves out listings on accounts you have disconnected | Pick `All Listings` from the control in the header bar. See [saved views](/repricer/saved-views) |
| A filter or a search is still on from earlier | Clear it from the toolbar above the rows |
| The channel stopped returning the item, so it was removed | Look for the `Listings removed` email for that account |
| The account's region is switched off, so nothing is being read from it | Turn the region back on under `Integrations` in the sidebar |
| The account was only just connected | Wait for the first sync to finish |

### Your edit went back to what it was

Nothing on the table tells you a save failed, so this is the symptom you get for several different problems.

| Why | What to do |
| --- | --- |
| The field is one the PIM manages | Edit `Cost`, `MAP` or `MSRP` in the PIM |
| Your role does not cover that column | Ask an Admin or a Manager. The roles table above says who edits what |
| You typed `0` or a negative number | Type a number above zero |
| Something else went wrong | Open the listing and make the change on the `Pricing` tab, which shows you the message |

### Error messages

These come up as a small message in the corner while a listing is open.

| Message | What to do |
| --- | --- |
| `Cost, MAP and MSRP on this listing are managed by your PIM connection. Edit them in the PIM instead.` | Make the change in the PIM |
| `Price and cost values must be greater than zero.` | Type a number above zero, or clear the box to leave it empty |
| `You do not have permission.` | Your role does not cover that change |
| `Failed to save pricing inputs.` | Try again. Nothing was saved |
| `Failed to assign the repricing rule.` | Try again, and check the strategy is built for this listing's region |
| `Failed to update repricing status.` | Try the switch under `Pause Repricing` again |
| `Listing not found or access denied.` | The listing went away while you had it open. Close the dialog and reload the page |
| `We couldn't load your listings. Try again or contact support if the problem persists.` | Reload the page. Nothing is wrong with your data |

### Repricing is not running on a listing

`Repricing Status` says which of four states a listing is in. Hover a `Not working` cell and it tells you the reasons. The [listing and repricing status](/repricer/listings/statuses#every-repricing-issue-and-what-it-needs-from-you) page goes through all of them and what each one needs from you.

## Where to go next

<Columns cols={2}>
  <Card title="Listing and repricing status" icon="signal" href="/repricer/listings/statuses">
    What each status means, and the five different ways repricing stops.
  </Card>

  <Card title="Pricing on a listing" icon="tag" href="/repricer/listings/pricing">
    Every field on the `Pricing` tab, and which of them your strategy reads.
  </Card>

  <Card title="Bulk actions" icon="list-checks" href="/repricer/bulk-actions">
    Assigning a strategy or pausing repricing across many listings at once.
  </Card>

  <Card title="Filters" icon="funnel" href="/repricer/filters">
    Narrowing the table down, and the toolbar above the rows.
  </Card>
</Columns>
