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

# How a price is decided

> Before you build a strategy it helps to know the order Repricer works in, from the competing prices it reads to the price it finally sends back out.

Repricer works out one selling price for one of your listings, then does it again the next time something moves. It reads what your competition is charging, applies the strategy on that listing, pushes the answer inside the limits you set, and sends the result to the sales channel.

What comes out is one number and one sentence. The number goes into the `Target` column of your listings table until the channel takes it. The sentence is the `Reason` on [pricing activity](/repricer/pricing-activity), and it names what your price was measured against and what moved it.

The parts of that calculation are set in two places. Your strategy is one, built in a wizard you open from `Strategies` in the sidebar. Your listing is the other, opened from `Listings` in the sidebar and filled in on its `Pricing` tab. This page puts every part in the order it runs, because a price you did not expect is almost always a later part undoing an earlier one.

## The order it works in

Every price goes through the same nine parts, in the same order, whatever you sell and wherever you sell it. Several of those parts can end the calculation on their own.

| # | What happens |
| --- | --- |
| 1 | Repricer checks that it is allowed to price this listing at all |
| 2 | It reads the price you are being measured against |
| 3 | If you already have the Buy Box, it decides whether to leave your price alone |
| 4 | It applies your pricing mode to the price from part 2 |
| 5 | If you are chasing the Buy Box and losing it, it lowers your price a little instead |
| 6 | It pushes the result inside your limits, in a fixed order |
| 7 | It checks the result can still beat, match or stay above what you are measured against |
| 8 | It rounds the result, and throws the rounding away if that broke a limit |
| 9 | It sends the price, but only if it is different from the one you have now |

That is the whole calculation. The sections below take the parts one at a time, and you need none of them to read a price change on [pricing activity](/repricer/pricing-activity).

### What has to be true before anything is calculated

Four things are checked before any number is worked out, and each one ends the calculation by itself.

| What is checked | Your price stays where it is when |
| --- | --- |
| The region switch on the account | Repricing is turned off for that region, under `Integrations` in the sidebar |
| The connection to the account | The account needs authorizing again |
| `Pause Repricing` on the listing | Somebody paused this listing on its `Pricing` tab |
| `Repricing schedule` on the strategy | The day or the hour is outside the window set on the `Safety Nets` step |

Two more things end the calculation by answering it instead. A `Manual Price` typed into the `Selling Price` card of the listing's `Pricing` tab is published exactly as you typed it. `Always price at MAP` and `Always price at MSRP`, on the `Safety Nets` step of the strategy, lock your price to the number on the listing. All three skip your pricing mode, your limits and your rounding, and `MAP` wins when both locks are on.

After that your listing needs a strategy with both a target price and a pricing mode on it. It also needs the number your floor is built from. That is your cost when the floor is calculated for you, and your `Minimum Price` when you set it yourself.

A listing missing any of these reads `Not working` in the `Repricing Status` column of your listings table. What to fill in on each one is on [listing and repricing status](/repricer/listings/statuses#every-repricing-issue-and-what-it-needs-from-you).

### The price you are measured against

Nearly every strategy prices against something. On a marketplace that something is a competing offer, picked by `Target price` on the `Pricing` step of your strategy. Your choices there are the `Buy Box Price`, the lowest offer overall, the lowest offer of one fulfillment type, or the marketplace's own price. On your own storefront it is the lowest of the [pages you added](/repricer/listings/competitor-urls) on the listing's `Competitors` tab, or your own cost.

Which offers count is narrowed before the lowest one is picked. Your listing only competes with offers in the same condition as yours, whether or not you turned filtering on. On an Amazon strategy the `Filter competitors` section narrows it further, by fulfillment type, seller rating, feedback count and location.

Sometimes there is nothing to measure against. No competitor data has arrived yet, the marketplace took the Buy Box off the item, or your filter removed every offer. `No price reference`, under `Fallback behavior` on the `Safety Nets` step, is where you say what happens then.

| Setting | What you get |
| --- | --- |
| `Hold current price` | Your price is left alone. This is the one you start with |
| `Use min price` | Your price goes to your `Minimum Price`, or to your calculated floor when that is higher |
| `Use max price` | Your price goes to your `Maximum Price` |
| `Use lowest competitor` | The lowest competing offer is used instead, and the rest of the calculation runs normally |

**Pick `Use lowest competitor` when your target is the `Buy Box Price`.** A marketplace can take the Buy Box off an item while your competition is still there. It is the one reference that can disappear on a listing that is otherwise busy. Pick `Hold current price` when you would rather nothing moved without a real number behind it.

### What your pricing mode does with it

`Pricing mode`, on the same `Pricing` step, says how your price relates to the price you are measured against.

| Mode | What your price becomes |
| --- | --- |
| `Beat by` | That price, less the amount or the percentage you set |
| `Match exactly` | That price |
| `Stay above by` | That price, plus the amount or the percentage you set |
| `Beat by + Win Buy Box` | The same as `Beat by`, plus the stepping in the next section |

A strategy on your own storefront can price from your cost instead. You choose a return on that cost, a margin on the sale price, or a fixed profit per unit. There is no competing offer in that case, so your cost is what everything is worked out from.

On Amazon you can also say that competing against Amazon itself, or against a seller using FBA, uses a different mode from your usual one. When one of those takes over, the reason on your price change says a special rule was used instead of your default. [Targets and modes](/repricer/strategies/targets-and-modes) goes through all of them.

### What changes when the Buy Box is involved

Two branches only ever run where there is a Buy Box to win.

**When you already have it, your price is left where it is.** You are getting the sale, so undercutting yourself would only cost you margin. The one exception is a price that has ended up below your own floor, which is raised whatever else is true.

**When you are trying to win it back, `Beat by + Win Buy Box` steps toward it.** Beating your target is tried first. If your price is already at or below it and the Buy Box is still not yours, price is not the whole problem. Your price then comes down a small amount on each run until the Buy Box is yours. The amount is named in the reason on every one of those changes.

Once you have it, the same setting raises your price a little at a time. It never goes above the next cheapest offer, and it stops at the most you can charge and keep the Buy Box.

Raising stops on its own when you are the only offer, because the next cheapest offer is what caps the rise.

<Accordion title="Why the stepping down sometimes stops early on Amazon">
  Amazon says whether your offer can win the Buy Box at all. When it says your offer or the product is not eligible, no price wins it, so your price stops moving down and the reason tells you so. Seller metrics, fulfillment method and account health are the usual causes, and none of them is something a lower price fixes.

  Amazon also publishes the price it expects to win the Buy Box, which you read in the `Ch. Suggested Price` column of your listings table. When that price is below yours, your price goes there in one move instead of stepping down to it.
</Accordion>

### Where your limits come in

Whatever your mode calculates, the result is then pushed inside the limits on your listing and the ones your strategy adds. Floors raise it and caps lower it, one at a time. The caps are applied again at the end, so no floor can leave your price above one. All seven are listed in order on [pricing on a listing](/repricer/listings/pricing).

Two things about that order are worth carrying around. A cap always beats a floor, so a `Minimum Price` above your `MSRP` on a strategy capping at `MSRP` comes out at the `MSRP`. And the lowest price Repricer will publish is the highest of all your floors put together. That is the number you read as your calculated minimum on the listing.

### When the price can no longer do what you asked

Your limits can leave you a price that no longer does what your mode asked for. A `Beat by` strategy that ends at or above the price it was measured against is not beating anything. A `Stay above by` strategy pushed under that price by a cap is not staying above it. `Can't compete by price`, under `Fallback behavior`, is where you say what to do about it.

| Setting | What you get |
| --- | --- |
| `Stay at min price` | Your price stays at the lowest your limits allow, so you keep competing on everything except price. This is the one you start with |
| `Raise to max price` | Your price goes to your `Maximum Price`, on the reasoning that a sale you cannot win may as well be worth more when it comes |
| `Hold current price` | Your price is left alone |

All three put the same `Can't compete on price` in the `Reason` column, so the setting changes what happens to your price and not what you are told about it.

### What rounding does last

Rounding runs after everything above it. The `Rounding` step of your strategy can end every price in `.99` or `.95`, snap it to a whole unit, or snap it to a step you choose.

Because it runs last, rounding moves your price a little away from the number your mode calculated. A price that changed for no other reason is still a price change.

Rounding is thrown away when the rounded price would fall below one of your floors or rise above one of your caps. The price from the part before it is kept instead. So rounding never breaks a limit, and what you give up is the ending you asked for.

**Turn rounding off when a margin target has to be exact.** Your strategy says the same thing on the `Rounding` step. It names whichever floor or cap you set.

### What happens once the price is decided

A decided price is only sent when it is different from the price you have now, and different from one already sent and waiting for the channel. Here is where it shows up.

| Where | What appears |
| --- | --- |
| The `Target` column on your listings table | The new price, until the channel confirms it |
| [Pricing activity](/repricer/pricing-activity) | A row with `From`, `To`, `Reason` and the strategy behind it |
| The `Activity` tab of the listing | The same rows, for that one listing |
| `Last Repriced` on your row | The time of that change |

Those rows are written the moment the price is decided, which is before the channel has it. So a number in `Target` and a row on pricing activity tell you the price went out, not that a shopper is seeing it yet.

Two more prices are worked out from the one above, once it is settled. One is a business price, on an Amazon account with [B2B pricing](/repricer/strategies/b2b-pricing) turned on. The other is the crossed-out compare price on your own storefront, covered on [pricing on a listing](/repricer/listings/pricing). A calculated business price is never higher than your regular one.

## What can stop a price going out

Most runs end with no price change, and that is the normal outcome for most of your listings most of the time. What is worth telling apart is which kind of nothing you are looking at.

### The price was never calculated

These are the ones your listing tells you about. `Repricing Status` on your listings table reads `Not working`, and hovering that cell opens `Repricing Issues` with the cause and what to do about it. A listing you paused reads `Paused`, and one with a `Manual Price` on it reads `Manual`. Neither of those is a fault.

One case has no line of its own. A strategy with a `Repricing schedule` on it is simply outside its window, and prices start moving again when the window opens.

### The price was calculated and nothing was sent

These leave `Repricing Status` reading `Working`, because your listing has everything it needs.

| What happened | What you get |
| --- | --- |
| The calculated price is the price you already have | Nothing at all, and `Target` on your row is empty |
| The same price was already sent and the channel has not confirmed it | `Target` on your row keeps showing that price |
| You have the Buy Box, so your price is left where it is | Nothing at all |
| Your fallback is `Hold current price` and there was nothing to price against | `Repricing Issues` says `No market data` or `Buy Box suppressed` |

The first line is far and away the most common of the four.

### The channel never took the price

A price can go out and not be applied. Sales channels confirm a price change on their own schedule, and a couple of hours is normal on Amazon. A `Target` that has not cleared usually means a channel catching up.

The same price is sent again a few times over roughly half a day. If it is still not applied after that, `Target` on your row is cleared. You get a warning naming the SKU and the price it tried, and asking you to check that listing on the channel yourself. Those warnings are on [sync issues](/repricer/integrations/sync-issues).

### Why a run that changed nothing leaves no record

Reasons are written down with price changes. A run that decided to change nothing writes no row anywhere, so there is no history of the times your price was held. `Last Repriced` on your row is when your price last moved, and not when your listing was last looked at.

So the way to find out what a strategy would do right now is the `Preview` step of the strategy wizard. It estimates the effect on the listings you already have, before you save anything.

## Where to go next

<Columns cols={2}>
  <Card title="The strategy wizard" icon="wand-sparkles" href="/repricer/strategies/wizard">
    Every step that sets the parts of this order, in the order the wizard asks for them.
  </Card>

  <Card title="Targets and modes" icon="crosshair" href="/repricer/strategies/targets-and-modes">
    What your price can be measured against, and which modes work with which target.
  </Card>

  <Card title="Pricing on a listing" icon="tag" href="/repricer/listings/pricing">
    The limits your calculated price is pushed inside, and the order they run in.
  </Card>

  <Card title="Pricing activity" icon="history" href="/repricer/pricing-activity">
    The record of every price that went out, with the reason attached to each one.
  </Card>
</Columns>
