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

# Safety nets

> Safety nets are the limits on a strategy that keep your price above your cost, inside the numbers your manufacturer set, and inside the hours you chose.

[A strategy](/repricer/strategies) follows the market. It reads what your competition is charging and prices against that, over and over, and it knows nothing about what any of it costs you. Safety nets are where you tell it what it is not allowed to do.

They are four groups of settings on one step of the strategy wizard. None of them calculates a price. Each one takes the price your strategy calculated and raises it, caps it, replaces it with a number of your own, or stops the calculation from running at all.

You get to them from `Strategies` in the left sidebar. Click the strategy you want in the table, then click `Safety Nets` in the numbered row of steps across the top of the dialog that opens over the page. Everything on this page is on that one step.

What you get there depends on how the strategy prices. A strategy that prices against competitors gets all four groups. A strategy on a store of your own that prices from your cost gets two of them. A price built from your cost already covers your cost, and there is no competitor in that calculation to lose.

## Before you start

### What your role lets you do

| Role | What you get on this step |
| --- | --- |
| Admin | Every switch and dropdown opens for editing |
| Manager | The same as Admin |
| Editor | The step opens read-only, with nothing to change |
| Analyst | The same as Editor |

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

<Warning>
  Saving a change here reprices every listing on the strategy right away. Nothing asks you to confirm first, and there is no undo.
</Warning>

## How to set your safety nets

<Steps>
  <Step title="Open the strategy">
    Click `Strategies` in the left sidebar, then click the strategy you want in the table.
  </Step>

  <Step title="Go to the step">
    Click `Safety Nets` in the numbered row of steps across the top of the dialog.
  </Step>

  <Step title="Protect your profit">
    Turn on `Require minimum profit per sale`, the switch at the top of the step. Two fields open under it. Leave `Type` on `Fixed ($)` and type the profit you want on every sale.
  </Step>

  <Step title="Read the two dropdowns">
    Under `Fallback behavior`, read `No price reference` and `Can't compete by price`. Both start on a safe answer, so you can leave them alone the first time.
  </Step>

  <Step title="Save it">
    Click `Update` at the bottom right. On a strategy you are still building, click `Next` instead and finish the wizard.
  </Step>
</Steps>

That is the whole step. Your strategy keeps every other rule it had, and its listings are repriced with the new limits right away.

Everything below explains the four groups one at a time. You need none of it to leave the step as it is, because every switch on it starts off.

## Every option in detail

The four groups run down the step in this order, each with its own heading on screen.

| Group | What it does |
| --- | --- |
| `Profit protection` | Keeps every sale above your cost by the profit you name |
| `MAP & MSRP` | Points your price at the numbers your supplier and your manufacturer set |
| `Fallback behavior` | Says what to do when there is nothing to price against, and when you cannot compete |
| `Repricing schedule` | Says which days and hours your prices are allowed to move |

`Profit protection` and `Fallback behavior` are not on the step at all on a store of your own whose strategy prices from your cost.

### Protect your profit on every sale

`Profit protection` is the first group on the `Safety Nets` step, and it has one switch in it, `Require minimum profit per sale`. Turn it on and two fields open under it: `Type`, and a box for the number.

What it does is raise a price. Before a price goes out, your cost and the fees the channel charges you come off that price, and what is left is your profit on that sale. If that profit is under what you asked for here, the price goes up until it is not.

| `Type` | What you type | What your lowest price becomes |
| --- | --- | --- |
| `Fixed ($)` | An amount, into `Minimum Profit` | Your cost, plus fees, plus that amount |
| `Percentage (%)` | A percentage, into `Minimum Margin` | The price where that percentage of what a shopper pays is left over |

**Pick `Fixed ($)` when you want the same money on every sale**, which is the easier one to think in when your listings are priced about the same. Pick `Percentage (%)` when they are not, because a percentage gives you more on an expensive listing and less on a cheap one without you setting either.

The switch starts off. Turning it on puts 1.00 into `Minimum Profit` in your currency, and switching `Type` to `Percentage (%)` puts 5 into `Minimum Margin`. Both boxes take 2 decimal places. Empty the box and it counts as 0, which is a floor at exactly your cost plus fees.

<Warning>
  Profit protection needs a `Unit Cost` on the listing. A listing without one keeps repricing with no profit floor at all, and nothing on the listing or on the strategy says so.
</Warning>

This is a second floor and not your only one. The `Price Floor` step already gives the strategy a lowest price. The highest of all your floors is the one that applies, so turning this on can raise the lowest price you publish and never lowers it.

**Turn it on when your floor comes from you.** A strategy set to `Set manually` on the `Price Floor` step takes its floor from the `Minimum Price` you typed on each listing. Nothing in that number knows your cost, and profit protection covers your cost across every listing at once instead. Where the floor is already calculated from your cost, you have that cover already. [The price floor](/repricer/strategies/price-floor) covers both kinds.

<Accordion title="Which fees come off before your profit is counted">
  The fees in that calculation are the ones estimated for you on the listing, the same ones you read in the `Fees` column of your listings table.

  Repricer cannot estimate a fee on every channel. Where it cannot, the fee in the calculation is 0, and your real profit is smaller than the number you asked for by whatever that channel takes. [Cost, fees and profit](/repricer/listings/costs-and-fees) covers where each number comes from.
</Accordion>

### Hold your price to MAP and MSRP

`MAP & MSRP` is the second group down the `Safety Nets` step, with four switches in it. All four start off in a new strategy, and none of them is a number you type here. They work on the two numbers in the `Manufacturer Pricing` card of the listing's [`Pricing` tab](/repricer/listings/pricing). `MAP` is the lowest price your supplier lets you advertise, and `MSRP` is the price the manufacturer suggests you sell at.

| Switch | What it does to your price |
| --- | --- |
| `Respect MAP` | Raises it to the `MAP` on the listing whenever your strategy calculated less |
| `Always price at MAP` | Sets it to that `MAP` and skips your strategy entirely |
| `Cap price at MSRP` | Lowers it to the `MSRP` on the listing whenever your strategy calculated more |
| `Always price at MSRP` | Sets it to that `MSRP` and skips your strategy entirely |

**Pick `Respect MAP` to keep pricing normally with a floor under you**, which is what a supplier agreement usually asks for. The two switches that always price at a number are a different thing. They ignore your target, your pricing mode, your floors and your rounding, and what goes out is the number on the listing whatever the market is doing. Pick one of those two only where that number is the price you want.

A switch with nothing behind it does nothing. Turn on `Cap price at MSRP` and every listing with no `MSRP` on it keeps repricing as though the switch were off, with no message anywhere.

<Accordion title="Which of the four switches you can turn on together">
  Three pairs cannot both be on, and the step stops you rather than letting you find out later. A switch you cannot turn on is dimmed, and hovering it tells you which one to turn off first.

  The pairs are `Respect MAP` with `Always price at MAP`, `Cap price at MSRP` with `Always price at MSRP`, and `Always price at MAP` with `Always price at MSRP`. Everything else goes together. You can put a floor at MAP and a cap at MSRP on one strategy, or always price at one of the two and limit the other.
</Accordion>

### Say what happens when there is nothing to price against

`Fallback behavior` is the third group down the `Safety Nets` step, and `No price reference` is the dropdown on the left of it. It answers a run where the price your strategy aims at is not there. That happens when no competitor data has arrived yet, when the marketplace has taken the Buy Box off the item, or when your filter has left nothing behind.

| Choice | What happens on that run |
| --- | --- |
| `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`, or to your `MSRP` when you cap at it and it is lower |
| `Use lowest competitor` | The lowest competing offer becomes the price you are measured against, and the rest of the calculation runs as usual |

**`Hold current price` is the careful answer.** `Use lowest competitor` is the one that keeps pricing, and it is worth picking where your target is the Buy Box price. A marketplace can take the Buy Box off an item while every competitor on it is still there and still selling.

The two middle choices need a number on the listing. Without one, your price is left alone instead. `Use max price` also puts `Missing max price` into the `Repricing Issues` on that listing, which [listing and repricing status](/repricer/listings/statuses#every-repricing-issue-and-what-it-needs-from-you) explains.

### Say what happens when you cannot compete

`Can't compete by price` is the other dropdown in `Fallback behavior`, to the right of `No price reference`, and it answers a different run. Your limits can leave you with a price that no longer does what your pricing mode asked for. A strategy set to beat an offer, whose floor keeps it above that offer, is not beating anything.

| Choice | What happens on that run |
| --- | --- |
| `Stay at min price` | Your price stays at the lowest your limits allow. This is the one you start with |
| `Raise to max price` | Your price goes to your `Maximum Price`, held down by your `MSRP` when you cap at it |
| `Hold current price` | Your price is left alone |

**`Stay at min price` keeps you in the running.** `Raise to max price` gives up on price, and it is the one to pick where your listings sell on something other than being cheapest. A sale you were never going to win on price may as well be worth more when it comes.

All three write the same `Can't compete on price` into the `Reason` column of [pricing activity](/repricer/pricing-activity). Your choice changes what happens to your price, not what you are told about it.

### Set the days and hours your prices move

`Repricing schedule` is the last group on the `Safety Nets` step, with one switch in it, `Enable schedule`. Off, which is how a new strategy comes, your prices can move at any hour of any day. Turn it on and four fields open under it.

| Field | What it takes | It starts on |
| --- | --- | --- |
| `Active days` | Any number of the 7 days, from one dropdown | Monday to Friday |
| `From` | The first hour your prices can move | 9 AM |
| `To` | The hour they stop moving | 5 PM |
| `Timezone` | Four US zones, London, Paris or UTC | `Eastern (ET)` |

`To` is the hour repricing stops, and not the last hour it runs. From `9 AM` to `5 PM`, your prices move between 9 in the morning and 4:59 in the afternoon. Both dropdowns are whole hours, so there is nothing smaller to set.

Set `From` later than `To` for a window that runs overnight. From `10 PM` to `6 AM` reprices through the night and stops for the day at 6 in the morning.

Two settings look reasonable and are not. `From` and `To` set to the same hour reprice nothing at all, on any day, because the window between an hour and itself is empty. `Active days` with nothing picked at all reprices on all 7 days, because a schedule with no day in it has no day to rule out.

Outside the window nothing tells you. Your listings stay on `Working`. A run that changes no price writes no row on pricing activity, so a closed dialog looks like a quiet market. Your prices start moving again on their own when the window opens.

<Accordion title="What a schedule does to a price that is already on its way">
  A schedule stops prices being decided. It does not stop prices being sent. A price decided a minute before your window closed still goes out to the channel. The channel then applies it whenever it gets to it, which can be hours later.

  So a price that changes outside your window is not a schedule that failed. `Last Repriced` on the listing is when the price was decided, and that is the time your window covers.
</Accordion>

### Limits

| What | Limit |
| --- | --- |
| Decimal places in a profit or a margin | 2 |
| Days you can pick | 7 |
| Timezones you can pick | 7 |
| Windows in a schedule | 1 |
| The shortest window you can set | 1 hour |

### What safety nets cannot do

| You cannot | Do this instead |
| --- | --- |
| Set a different profit floor on one listing | Type a `Minimum Price` on that listing, or move it to another strategy |
| Type a `MAP` or an `MSRP` here | Fill them in on the listing's [`Pricing` tab](/repricer/listings/pricing) |
| Always price at `MAP` and `MSRP` at once | Pick the one that matters and use the other as a floor or a cap |
| Give one strategy two windows in a day | Use one window, or split those listings across two strategies |
| Set a schedule in minutes | Whole hours are all the two dropdowns take |
| Give different days different hours | Every day you pick gets the same window |
| Turn the strategy off for a week | Set a schedule, or pause those listings from your listings table |

## When something goes wrong

### A safety net that does nothing, with no message

Three settings here change no price and tell you nothing, and every one of them looks like a setting that is on.

| What you set | Why nothing happens |
| --- | --- |
| Profit protection, on a listing with no `Unit Cost` | There is no cost to build the floor out of, so no floor is built |
| A MAP or MSRP switch, on a listing with no `MAP` or `MSRP` | There is no number to raise or lower the price to |
| A `Minimum Margin` of 100 or more | No price leaves 100 percent of itself as profit, so no floor is built |

The first two are fixed on the listing and not here. Fill in the `Unit Cost`, the `MAP` or the `MSRP` on its [`Pricing` tab](/repricer/listings/pricing) and the setting starts working on the next run.

### How to tell a safety net moved your price

Every price that goes out gets a short reason in the `Reason` column of [pricing activity](/repricer/pricing-activity). That reason names the kind of limit that had the last word.

| What you read | What moved your price |
| --- | --- |
| `Protecting profit` | Your profit protection |
| `Hit price floor` | Your price floor, your `Minimum Price`, or a MAP switch |
| `Hit price ceiling` | Your `Maximum Price`, or an MSRP switch |
| `Can't compete on price` | Your limits kept the price above what you were pricing against |
| `No competitors` | There was nothing to price against, so `No price reference` answered |

Rows are only written when a price changes. A safety net that held your price where it was leaves nothing behind. So a strategy that looks idle is worth opening on the `Preview` step of [the wizard](/repricer/strategies/wizard), which prices a sample of your listings and sends nothing.

## Where to go next

<Columns cols={2}>
  <Card title="The price floor and ceiling" icon="arrow-down-to-line" href="/repricer/strategies/price-floor">
    The other floor on a strategy, and how one gets built out of your cost.
  </Card>

  <Card title="Pricing on a listing" icon="tag" href="/repricer/listings/pricing">
    Where `MAP`, `MSRP` and your minimum and maximum prices are typed in.
  </Card>

  <Card title="How a price is decided" icon="route" href="/repricer/how-pricing-works">
    The order every limit on this page is applied in, and what runs before them.
  </Card>

  <Card title="The strategy wizard" icon="wand-sparkles" href="/repricer/strategies/wizard">
    The other steps of the dialog this one is a step of.
  </Card>
</Columns>
