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

# The price floor and ceiling

> Set the lowest and the highest price the Repricer may publish for a listing so your strategy can compete on price without ever selling at a loss.

Your price floor is the lowest price the Repricer will ever publish for a listing, and your ceiling is the highest. Whatever your strategy calculates, the answer is pushed inside those two numbers before it goes out to the channel.

Those two numbers are what makes automatic repricing safe to leave running. A strategy told to undercut the competition has no bottom of its own. On an item nobody is buying, it would follow a price war all the way down, and your floor is the number that stops it. Your maximum does the same on the way up, on a strategy that raises your price while you are winning.

The floor is [a strategy setting](/repricer/strategies). You choose where it comes from on the `Price Floor` step of the strategy wizard, which you open from `Strategies` in the left sidebar. A maximum has no step of its own. It is the `Maximum Price` you type on each listing, plus one switch on the `Safety Nets` step of the same wizard.

## Before you start

### What your role lets you do

| What you want to do | The lowest role that can |
| --- | --- |
| Read the floor and the maximum on a listing | `Analyst` |
| Type a `Minimum Price` or a `Maximum Price` on a listing | `Editor` |
| Change the `Price Floor` step on a strategy | `Manager` |

Roles are set in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### Changing where the floor comes from moves every listing at once

<Warning>
  Switch a strategy between `Calculate from cost` and `Set manually` and every listing on it takes its floor from somewhere else the moment you save. Any listing missing the new number stops repricing until you fill it in.
</Warning>

## How to set your price floor

<Steps>
  <Step title="Open the strategy">
    Click `Strategies` in the left sidebar, then click the row of the strategy you want. The wizard opens on it. To build a new one instead, click `Create strategy` above the table.
  </Step>

  <Step title="Go to the Price Floor step">
    The steps run across the top of the dialog, which opens over the page, as a numbered row. Click `Price Floor` in that row, or click `Next` at the bottom right until you get there.
  </Step>

  <Step title="Choose where the minimum price comes from">
    Two cards are under the heading `Minimum price source`. Click `Calculate from cost` to have the Repricer work the floor out for you, or `Set manually` to type a minimum on each listing yourself.
  </Step>

  <Step title="Set your profit target">
    On `Calculate from cost`, two more fields appear under `Protect profit using`. Leave the `Metric` dropdown on `ROI` and type the profit you want into `Minimum target`, which is a percentage. `Set manually` has nothing to fill in here.
  </Step>

  <Step title="Save the strategy">
    Click `Next` through the steps after this one, then click `Update` at the bottom right. On a new strategy the button reads `Create`.
  </Step>

  <Step title="Give each listing the number it needs">
    Click `Listings` in the left sidebar. Fill in the `Cost` column on every row if you chose `Calculate from cost`, or the `Min` column if you chose `Set manually`.
  </Step>
</Steps>

That is the whole flow. Your listings reprice inside the new floor the next time the Repricer looks at them. Any listing still missing its cost or its minimum price reads `Not working` in the `Repricing Status` column until you fill that number in.

Everything below takes the two sources one at a time, then covers where a maximum comes from and what happens when a price meets one. You do not need any of it to set a floor.

## Every option in detail

The `Price Floor` step asks one question, and on one of the two answers it asks two more. The sections below follow them in that order, then move on to the ceiling.

### Choose where your minimum price comes from

`Minimum price source` is the heading at the top of the `Price Floor` step, with a card under it for each answer.

| Card | Where the floor comes from |
| --- | --- |
| `Calculate from cost` | Your cost on the listing, plus the estimated channel fee, plus the profit you ask for here |
| `Set manually` | The `Minimum Price` you type on the listing yourself |

**Pick `Calculate from cost` when you know your costs.** One profit target then covers every listing on the strategy, and each floor moves on its own whenever your cost changes. Pick `Set manually` when your listings already have a minimum price on them, or when the lowest price you will accept has nothing to do with what the item cost you.

Nothing is picked for you on a marketplace, so `Next` stays gray until you click one of the two cards. Try to move on without one and `Please select a minimum price source` appears under them. On a store of your own priced against competitors, `Calculate from cost` is picked already.

<Note>
  A strategy on a store of your own that prices from your cost has no `Price Floor` step. The price it publishes is built from your cost to begin with, so there is no separate floor to set.
</Note>

### Build the floor from your cost

On `Calculate from cost`, two fields appear under the heading `Protect profit using`.

| Field | What to put in it |
| --- | --- |
| `Metric` | `ROI` or `Profit Margin`. It decides what your percentage is measured against |
| `Minimum target` | The percentage you want to make, from 0 to 100. It starts at 20 |

**Your floor is your cost, plus the channel fee, plus your target.** The fee is the part people miss.

That fee is why a calculated floor comes out higher than the sum you did in your head. It is the same estimate you read in the `Fees` column of your listings table. See [cost, fees and profit](/repricer/listings/costs-and-fees) for where it comes from and which channels get one.

The line printed under those two fields shows your cost and your target alone, with no fee in it. Read the `Min` column of your listings table instead, because that is the floor the Repricer works to.

<Warning>
  On a listing with no fee estimate, your floor is built as though the fee were zero, and nothing on screen tells you. Your real profit on those listings is short of your target by the whole fee.
</Warning>

That is not a fault, and on a channel with no fee estimate there is nothing to wait for. Build what you know the channel charges into your cost, or set your target high enough to cover it.

### Choose between ROI and profit margin

`Metric` is a dropdown on the `Price Floor` step, and its two choices answer different questions about the same sale.

| Choice | Your percentage is measured against | A target of 20 on a cost of 10 |
| --- | --- | --- |
| `ROI` | What you paid for the item | A floor of 12, plus the fee |
| `Profit Margin` | What the shopper pays | A floor of 12.50, plus the fee |

**Pick `ROI` when you think about what your money earns.** A target of 20 means every 10 you spend comes back as 12. That is how most buying decisions get made.

**Pick `Profit Margin` when you think about what you keep from a sale.** A target of 20 means 20% of what the shopper pays is yours. That is how a profit statement reads.

At the same percentage, a margin target always gives you the higher floor of the two, and the gap widens as you raise the number.

<Accordion title="What you get if you set the target to 0 or to 100">
  A target of 0 is allowed and it means what it says. Your floor is your cost plus the fee, so the Repricer never sells you at a loss and never asks for anything above break even.

  A target of 100 on `ROI` is ordinary and means doubling your money. On `Profit Margin` it has no answer, because no price gives you a margin of 100%. The example under the field stops showing a number, and your floor comes out at 10 times your cost. Keep a margin target under 100.
</Accordion>

### Set the minimum yourself

`Set manually` takes the floor from each listing instead of calculating one. The field is `Minimum Price`, in the `Price Limits` card on the `Pricing` tab of a listing, and it is the same number as the `Min` column in your listings table.

There is no minimum on the strategy to fall back on, so every listing on a strategy set this way needs a number of its own. A listing without one does not reprice at all.

To fill in more listings than you want to type, run an [import](/repricer/uploads/imports) with a `SKU` column and a `Min Price` column in the file. An import skips that column on any listing whose strategy calculates the floor, tells you so on the row, and leaves the listing alone. See [pricing on a listing](/repricer/listings/pricing) for the field itself and how it saves.

### Where your ceiling comes from

The strategy wizard has no step for the maximum. Two things can cap a price, both of them optional, and the lower of the two is the one that applies.

| What caps the price | Where you set it |
| --- | --- |
| `Maximum Price` | The `Price Limits` card on the `Pricing` tab of a listing, and the `Max` column in your listings table |
| `MSRP` | The `Cap price at MSRP` switch on the `Safety Nets` step, which turns the `MSRP` recorded on the listing into a cap |

**Fill in a maximum whenever your strategy raises prices.** A strategy chasing the Buy Box pushes your price up a little at a time while you are winning it. A strategy whose fallback on the `Safety Nets` step is set to `Raise to max price` has nothing to raise to without one. A listing on that fallback with no maximum reads `Not working` with `Missing max price` against it.

A listing with no `Maximum Price` and no MSRP cap has no maximum at all, and on most listings that is normal. See [safety nets](/repricer/strategies/safety-nets) for the MSRP switch and the MAP switch beside it.

### What your floor actually comes out at

The `Price Floor` step is one of four things that can raise a price, and the highest of the four is the floor on that listing. So the number you set here is a floor and not always the floor.

| Floor | Set on |
| --- | --- |
| The one from `Price Floor` | The strategy, on this step |
| `Minimum Price` | The listing, and it is the same number as the row above on `Set manually` |
| `MAP` | The listing, and switched on with `Respect MAP` on the `Safety Nets` step |
| A minimum profit per sale | The strategy, with `Require minimum profit per sale` on the `Safety Nets` step |

Your two caps work the same way from the other side. Between the `Maximum Price` on the listing and the MSRP cap from `Safety Nets`, the lower of the two is the one your price is held under.

You read the answer in the `Min` column of your listings table. On a strategy that calculates the floor, that column shows the highest of the four with a small `Auto` label beside it. Hover the label and you get the sum behind it. On a strategy set to `Set manually` the column shows the number you typed, which is a different thing whenever a MAP or a profit floor is also on.

<Accordion title="Why the numbers in the Auto tooltip do not always add up">
  The tooltip lists your cost, the estimated fee and the profit you asked for, and then a `Total`. That total is the highest of all four floors above. The three lines over it describe only one of them.

  So when a MAP or a minimum profit per sale is the higher floor, the total is that number and the lines above do not add up to it. Your floor is still right. Turn the switch off on `Safety Nets` if you want the calculated floor to be the one that decides.
</Accordion>

### Limits

| What | Limit |
| --- | --- |
| `Minimum target` | 0 to 100 |
| Floors that can apply to one listing | 4 |
| Caps that can apply to one listing | 2 |

### What the floor and the ceiling cannot do

| You cannot | Do this instead |
| --- | --- |
| Reprice with no floor at all | Pick a source on this step. Every strategy priced against a competitor needs one |
| Give one listing on a calculated strategy a minimum of its own | Move that listing to a strategy set to `Set manually` |
| Set a maximum price from the strategy | Type a `Maximum Price` on each listing, or send them in with an [import](/repricer/uploads/imports) |
| Set a floor or a cap as a percentage of the selling price | Use `Calculate from cost` for the floor, or type the amount |
| Use a different target percentage on some of the listings | Build a second strategy with the other target and move those listings onto it |

## What a limit does to your price

Your strategy calculates a price first, from whatever it is measured against. Only then are your floors and your caps applied, one after another, and [pricing on a listing](/repricer/listings/pricing) has the full order they run in. Two things about that order matter here.

**A floor can never leave your price above a maximum.** Both caps are applied once more at the very end, after every floor. So a `Minimum Price` above your MSRP, on a strategy capping at MSRP, comes out at the MSRP and not at your minimum.

Rounding is thrown away whole when it would break either limit. It runs last of all. A price rounded down through your floor, or up through your maximum, is dropped in favor of the price from the moment before. See [rounding](/repricer/strategies/rounding) for what you give up when that happens.

### How you tell a limit decided the price

The `Reason` column on [pricing activity](/repricer/pricing-activity) names the limit whenever one of them changed the answer.

| `Reason` | What happened |
| --- | --- |
| `Hit price floor` | Your strategy calculated a price under your floor, so your floor is what went out |
| `Hit price ceiling` | Your strategy calculated a price over your cap, so your cap is what went out |
| `Protecting profit` | The minimum profit per sale from `Safety Nets` was the highest of your floors |
| `Can't compete on price` | Your floor is above the price you would need to compete, so the strategy can no longer do what you asked of it |

## When something goes wrong

### Repricing stopped because a number is missing

`Repricing Status` on the row reads `Not working`. Hover that cell and a panel headed `Repricing Issues` names the reason that applies to this listing.

| What it says | What to fill in |
| --- | --- |
| `Missing cost price` | Your strategy calculates the floor from cost and this listing has none. Type a number into the `Cost` column on the row |
| `Missing min price` | Your strategy takes the floor from you and this listing has none. Type a number into the `Min` column on the row |
| `Missing max price` | Your fallback needs a cap and this listing has none. Type a number into the `Max` column on the row |

A banner across the top of the app counts every listing in the first two states and takes you to them. Repricing starts again on any of them the moment the number saves, so there is no run to wait for.

### A floor that is not the number you expected

| What you see | Why |
| --- | --- |
| The floor is above your cost plus your target | The estimated channel fee is in the sum as well |
| The floor is exactly your cost plus your target | This listing has no fee estimate, so the fee counted as zero |
| The floor is above the calculation in the `Auto` tooltip | A MAP or a minimum profit per sale is the higher floor |
| The floor changed and you changed nothing | Your cost moved, or a fresh fee estimate came in. Both of them are in the sum |
| Your price is under your floor | Somebody typed a `Manual Price` on the listing's `Pricing` tab, and that skips every limit on this page |

## Where to go next

<Columns cols={2}>
  <Card title="The strategy wizard" icon="wand-sparkles" href="/repricer/strategies/wizard">
    Every step around this one, and what changes when you edit a strategy that is already running.
  </Card>

  <Card title="Pricing on a listing" icon="tag" href="/repricer/listings/pricing">
    The `Minimum Price` and `Maximum Price` fields, and the order every limit is applied in.
  </Card>

  <Card title="Safety nets" icon="shield" href="/repricer/strategies/safety-nets">
    The MAP and MSRP switches, and the minimum profit per sale.
  </Card>

  <Card title="Cost, fees and profit" icon="receipt" href="/repricer/listings/costs-and-fees">
    Where your cost comes from, and what the fee estimate inside your floor covers.
  </Card>
</Columns>
