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

# Sync links

> A sync link copies the cost, the limits and the prices you set on one listing onto another, so the same product on two accounts keeps the same numbers.

A sync link ties two of your listings together so that a number you set on one of them is copied onto the other. Type a cost on the first listing and the second one gets the same cost, without you typing it twice.

A link copies the pricing numbers and nothing else. Your cost, the lowest and highest price you will accept, the manufacturer's MAP and MSRP, your business prices and a fixed price of your own are all on the list, and so is the price the item is selling for right now. The title, the picture, the stock and the strategy are not, because those belong to the channel or to the listing itself.

Most people set one up because they sell the same item twice. The same pair of shoes on two accounts is two listings here, and one account selling into two countries gives you two more. Each of those has its own set of numbers, and a link is how you stop keeping them in step yourself.

A link goes one way. The listing your numbers come from is the **source**, and the listing they go to is the **target**, and those are the words the app uses for them. Nothing is ever copied in the other direction.

You get to all of it from `Listings`, in the sidebar down the left. Click a row and that listing opens in a dialog over the page with tabs across the top. `Sync` is one of them, and it lists every link that listing is part of, whichever end of the link it is on.

## Before you start

### What your role lets you do

| What you want to do | The lowest role that can |
| --- | --- |
| Open the `Sync` tab and read every link on it | `Analyst` |
| Create a link, pause it, change its fields or delete it | `Editor` |

Below `Editor` the tab and the table are still there and nothing else is. There is no `Create sync` button above the table, and the rows have no menu at their right end. Roles are set in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### A new link writes over the target listing

<Warning>
  The moment you create a link, every field you picked is copied onto the target listing, over whatever was there. Nothing warns you first, and the numbers that were there are gone. Write down a number you might want back.
</Warning>

## How to link two listings

<Steps>
  <Step title="Open the listing you want to copy from">
    Click `Listings` in the sidebar down the left. Find the listing whose numbers are right, and click any cell on its row except `Cost`, `Manual Price`, `Min`, `Max`, `MAP` or `MSRP`, because those six open an edit inside the table instead. The listing opens in a dialog.
  </Step>

  <Step title="Go to the Sync tab">
    The tabs run across the top of the dialog. Click `Sync`. It is empty on a listing with no links yet.
  </Step>

  <Step title="Start a new link">
    Click `Create sync`. On a listing with no links that button is in the middle of the tab. Once you have at least one link it is in the toolbar above the rows. A dialog opens with two steps in it.
  </Step>

  <Step title="Find the other listing">
    On `Select Listing`, type at least 2 characters of a product title, a SKU or a product ID into the search box. Click the one you want in the list underneath.
  </Step>

  <Step title="Choose the direction and the fields">
    On `Choose Fields`, leave the two buttons at the top on `Push to this listing`, which makes the listing you started from the source. Check the fields you want copied and click `Create`.
  </Step>
</Steps>

That is the whole flow. The link shows up in the table right away with `Active` in its `Status` column, and your numbers get to the other listing within moments. After that, every time one of those numbers changes on the source listing, the target gets the change too.

Everything below explains the two screens and the table one part at a time. You do not need any of it for a simple link.

## Every option in detail

The dialog has two screens of its own, `Select Listing` and `Choose Fields`. The second one does enough work to be split in two here, so a step number appears twice. After those two come the table your links show up in, and what you can do to a link once you have one.

### Step 1: Find the other listing

`Select Listing` is the first of the two screens `Create sync` opens, and it gives you one search box. Type at least 2 characters and the search runs on its own, with no button to click. Each match shows the product title, and under it the product ID, the SKU and the region, so you can tell two listings of the same item apart.

Click a match and you go straight to `Choose Fields`. There is no `Next` button on this screen, because picking a listing is what moves you on. `Back` at the bottom left of the dialog brings you here again.

<Accordion title="Which listings the search offers you">
  The search reads the product title, the SKU and the product ID, and it looks at every listing in your organization. The listing you started from is left out, because a listing cannot be linked to itself.

  Nothing else is filtered. Listings on other integrations, in other regions and in other currencies all come back, and you get up to 20 matches at a time. So type the SKU when you know it, because a common word out of a product title fills those 20 rows with items you did not mean.
</Accordion>

### Step 2: Choose which way the numbers go

`Choose Fields`, the second screen of that dialog, opens with two buttons across the top of it, and they decide which of the two listings is the source. In both of those labels, this listing means the listing you started from.

| Button | Which listing is the source |
| --- | --- |
| `Push to this listing` | The listing you started from. The one you picked in the search is the target |
| `Pull from this listing` | The one you picked in the search. The listing you started from is the target |

`Push to this listing` is what you get when the dialog opens. Pick that one when the listing you started from already has the numbers you want, and `Pull from this listing` when you started from the listing you want fixed.

**Pick the direction before you check anything.** Changing it empties the checklist under it. The fields you get depend on which of your two listings is the source.

### Step 2: Choose which fields to copy

Under those two direction buttons on `Choose Fields` is a checkbox for every field your two listings can share, with `Select all` above them. Check at least one, or `Create` stays gray.

| Field | What gets copied |
| --- | --- |
| `Cost` | What the item costs you, which is `Unit Cost` on the `Pricing` tab |
| `Min Price` | The lowest price you will accept, which is `Minimum Price` there |
| `Max Price` | The highest price you will accept, which is `Maximum Price` there |
| `MAP` | The lowest price you are allowed to advertise |
| `MSRP` | The price the manufacturer suggests |
| `Manual Price` | The fixed price that replaces everything a strategy would work out |
| `B2B Fixed Price` | The single price business buyers get |
| `B2B Min Price` | The lowest price you will accept from a business buyer |
| `B2B Max Price` | The highest price for a business buyer |
| `Compare Price` | The crossed-out price your own store shows next to what you charge |
| `Current Price` | What the source listing is selling for on its channel right now |

[Pricing on a listing](/repricer/listings/pricing) is where each of the first ten fields lives and what it does.

**`Current Price` behaves differently from the other ten.** Think about it before you check it. The others copy a number you typed onto the same field on the target. `Current Price` takes what the source listing is selling for right now and puts it into `Manual Price` on the target. A manual price stops repricing, so from then on the target stays at the copied price, its `Repricing Status` reads `Manual`, and its strategy and price limits do nothing. Check it when you want a store of your own to follow your marketplace price to the cent, and leave it alone otherwise.

<Accordion title="Why a field you expected is not in the checklist">
  The checklist is worked out from both listings at once, so it is shorter on some pairs than on others. Five rules take a field out of it.

  | The field is missing when | Which field goes |
  | --- | --- |
  | The source listing is on a marketplace | `Compare Price`, because a marketplace has no crossed-out price |
  | The source listing is on a store of your own | The three B2B fields |
  | The strategy on the target listing calculates the minimum price from your cost | `Min Price` |
  | The strategy on the target listing has no business pricing turned on | The three B2B fields |
  | The strategy on the target listing calculates the compare price | `Compare Price` |

  Three of the five are strategy settings on the target listing, so changing that listing's strategy changes what you get here. The dialog reads both listings again each time you switch the direction.
</Accordion>

### Reading the sync table

The `Sync` tab, in the dialog that opens when you click a listing, is one table of every link that listing is part of, pointing either way. One row is one link, and the columns describe the listing at the other end of it, never the one you have open.

| Column | What it shows |
| --- | --- |
| `Integration` | Which integration the other listing is on |
| `Region` | Which market of that account it is in |
| `Listing` | The product title at the other end |
| `Product ID` | The channel's own code for that item |
| `SKU` | Your own code for it |
| `Direction` | `Pushing` when the listing you have open is the source, `Pulling` when it is the target |
| `Fields` | Every field this link copies, in one list |
| `Status` | `Active` or `Paused` |
| `Last Sync` | When this link last copied something. Empty until it does |

Click any row and the listing at the other end opens in the same dialog, on its own `Sync` tab. That is the quickest way to walk a chain of links without going back to your listings table.

### Pausing, changing and deleting a link

Every row on the `Sync` tab has a menu at its right end, and you get three actions in it.

| Action | What it does |
| --- | --- |
| `Pause` | Stops the copying. The row turns to `Paused` and the link keeps its fields |
| `Activate` | Starts it again, and copies every field on the link once more |
| `Edit` | Opens `Edit Synced Fields`, which is the same checklist you filled in when you created the link |
| `Delete` | Removes the link, after you click `Delete` again in the dialog that asks you to confirm |

While one of those is running you cannot use the other two. They are grayed out and say `Another operation is in progress`.

**Checking another field in `Edit Synced Fields` copies it. Unchecking one does not put anything back.** Save a field you just checked and its value gets to the target right away. Uncheck a field and the number already copied stays where it is, and the two listings simply stop being kept in step on that one.

**Deleting a link changes no numbers.** Both listings keep everything the link ever copied, and the copying stops. If you wanted the old number back on the target, type it back in yourself.

### Finding every listing that is part of a link

The `Sync` tab shows you one listing at a time. To see all of them at once, go back to `Listings` in the sidebar, click `Columns` in the toolbar above the rows, and turn on `Listing Sync`. That column is turned off when you arrive.

| The column says | What it means |
| --- | --- |
| `Source` | Something is copied out of this listing |
| `Target` | Something is copied into it |
| `Both` | Both, so this listing is in the middle of a chain |
| Nothing | This listing has no active link |

Only active links count in that column, so a listing whose one link is `Paused` shows you nothing at all. You can filter on it the same way as any other column, which [filters](/repricer/filters) covers.

### Limits

| What | Limit |
| --- | --- |
| Characters before the search runs | 2 |
| Listings the search offers you at once | 20 |
| Fields one link can copy | 11 |
| Links between the same two listings | 1 |
| Links on one listing | No limit |

### What a sync link cannot do

| You cannot | Do this instead |
| --- | --- |
| Copy in both directions between the same two listings | Pick the listing whose numbers are right and copy out of that one |
| Copy a field the target listing already gets from a different link | Delete the other link, or leave that field out of this one |
| Copy the strategy, the pause switch, the title, the stock or the fees | Set those on each listing |
| Copy `Cost`, `MAP` or `MSRP` into a listing your PIM manages | Change them in the PIM |
| Set up links for many listings at once | Open each listing and create its link on the `Sync` tab |
| Undo a copy | Type the old number back on the target listing |

## What a link copies, and when

### When a copy happens

There is no schedule here and nothing for you to run. A copy happens within moments of whatever caused it.

| What happens | What gets copied |
| --- | --- |
| You create the link | Every field on it |
| One of those numbers changes on the source listing | That one field |
| One of those numbers is cleared on the source listing | That one field, so the target is cleared too |
| You use `Activate` on a paused link | Every field on it |
| You check another field in `Edit Synced Fields` | Only the field you just checked |
| The source listing's price changes on its channel | `Current Price`, on a link that copies it |

Nothing goes back the other way. A number typed on the target listing stays there until the source listing changes, and then it is written over.

### What the first copy leaves alone

An empty field on the source listing is skipped the first time, so a brand new link cannot wipe a number your target listing already had. Fill that field in on the source later and it gets copied then.

After the first copy the rule is the opposite one. Clear a field on the source and the target is cleared with it, because clearing a field is something you did on purpose.

### Chains of links

A listing of yours that gets a number can also give one. Link A to B and B to C, and a cost you type on A ends up on all three, one step at a time.

What you cannot do is close the loop. Any link that would come back to the listing your chain starts from is rejected. So you cannot link A to B and then B to A, and a longer loop is stopped the same way.

### Two listings in different currencies

You do not have to keep the two listings in the same currency. Every amount is converted into the target listing's currency before it is written, at the day's rate. So a cost you type in dollars on an American listing gets to a British one as pounds.

<Note>
  While there is no rate for a pair of currencies, nothing is copied and nothing tells you so. The next change to that number is tried again, so a later rate fixes it.
</Note>

### Fields your PIM manages

On a listing matched to a variant in your PIM, `Cost`, `MAP` and `MSRP` come down from the PIM, and nothing in the Repricer may write them. Sync links are included in that.

A link that would copy any of those three into a matched listing is rejected. The message you get is the general `Failed to create the sync link.` rather than one naming the PIM. Uncheck those three and the rest of the link is fine.

A match made after the link already exists works the other way around. Those three fields are taken out of the link with no message, and a link that copied nothing else is set to `Paused`. [The PIM connection](/repricer/integrations/pim) covers the rest of what a match changes.

## When something goes wrong

### A number was not copied

| Why | What to do |
| --- | --- |
| The link is `Paused` | Use `Activate` in the menu at the right end of the row |
| The field is not in that row's `Fields` column | Use `Edit` and check it |
| The field was empty on the source listing when you created the link | Fill it in on the source listing now |
| The two currencies have no rate between them | Change the number again later |
| Your PIM manages `Cost`, `MAP` or `MSRP` on the target listing | Change them in the PIM |
| The listing at the other end went away with its channel | There is nothing to do, because its numbers went with it. See [listings](/repricer/listings) |

### Error messages

| Message | What to do |
| --- | --- |
| `Select at least one field to sync` | Check a field. `Create` and `Save` stay gray until you do |
| `A sync link between these listings already exists.` | Close this dialog, find the link in the table and use `Edit` |
| `This sync link would create a cycle back to the source listing.` | The chain already comes back here. Delete a link somewhere in it, or pick two other listings |
| `The target listing already receives one or more of these fields from another sync link.` | Uncheck the fields it already gets, or delete the link that sends them |
| `One or more selected fields cannot be synced for this listing pair.` | A strategy changed while the dialog was open. Close it and start again |
| `Some sync fields aren't allowed for this source and target configuration.` | The same thing, caught a moment later. Close the dialog and start again |
| `Failed to create the sync link.` | Usually `Cost`, `MAP` or `MSRP` on a listing your PIM manages. Uncheck those three and try again |
| `Failed to update the sync link.` | Try `Edit` again |
| `Failed to update the sync link status.` | Try `Pause` or `Activate` again. A link that copies `Cost`, `MAP` or `MSRP` into a PIM-managed listing never activates |
| `Failed to delete the sync link.` | Try again, then reload the page |
| `The sync link was not found.` | Somebody deleted it while you had the tab open. Reload the page |
| `The source or target listing was not found.` | One of the two listings went away. Reload the page |
| `You do not have permission to manage sync links.` | Your role is below `Editor`. Ask an `Admin` on your team |
| `You need an active subscription to make changes.` | See [billing](/billing) |
| `Failed to load sync links` | Reload the page |
| `Another operation is in progress` | Wait for the action you already started to finish |

## Where to go next

<Columns cols={2}>
  <Card title="Pricing on a listing" icon="tag" href="/repricer/listings/pricing">
    Every field a link can copy, and what your strategy does with it.
  </Card>

  <Card title="Listings" icon="table" href="/repricer/listings">
    The `Listing Sync` column, and the table your links are built from.
  </Card>

  <Card title="Cost, fees and profit" icon="receipt" href="/repricer/listings/costs-and-fees">
    Where your unit cost comes from, and why a copied cost changes what you earn.
  </Card>

  <Card title="The PIM connection" icon="link" href="/repricer/integrations/pim">
    Why cost, MAP and MSRP lock, and what a match does to a link you already have.
  </Card>
</Columns>
