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

# Exports

> An export turns your listings into a CSV or Excel file, with the prices, competitors, fees and strategies you choose, ready to open in a spreadsheet.

An export turns your listings into a spreadsheet file. You choose which columns go in it, the Repricer builds the file, and you download it. You can then open it in Excel, Google Sheets, Numbers, or anything else that reads a spreadsheet.

What you get is one row per listing. On that row you can have your prices and your cost, the Buy Box and the competition, the fees and the estimated profit. You can also have the strategy the listing is on, and the dates it was last synced and last repriced. Most people export for one of three reasons. They want to work on their pricing outside the Repricer, or to send a list to someone who does not have an account. Or they want to change a lot of numbers in a spreadsheet and send them back through [imports](/repricer/uploads/imports).

You find all of this under `Uploads`, in the `Exports` section of the list on the left. The `Create export` button above the table opens one dialog where you set the whole export up. The table under it lists every export your team has run, with a status on each one.

## Before you start

### What your role lets you do

| Role | What you can do here |
| --- | --- |
| Admin | Everything on this page |
| Manager | Everything on this page |
| Editor | Create an export, rename it, download it, and load a saved template |
| Analyst | Download a finished export |

What your role does not let you do is hidden rather than grayed out, so you never see a button you cannot use. Roles are set in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### Your file is deleted after 14 days

<Warning>
  14 days after an export finishes, the Repricer deletes the file and takes its row out of the table. Nothing counts down and nothing warns you first. If you still need the file, run the export again.
</Warning>

This matters more than it sounds. An export is not a backup and it is not storage. Treat it as something you make, download, and keep somewhere yourself.

## How to export

<Steps>
  <Step title="Open the export dialog">
    From `Uploads`, click `Exports` in the list on the left, then click `Create export` above the table. A dialog called `Export Listings` opens with every field already checked.
  </Step>

  <Step title="Choose your fields">
    Under `Select Fields`, click `Show` on a group to open it, and uncheck what you do not need. Or click one of the buttons under `Quick Presets` to jump to a ready-made selection.
  </Step>

  <Step title="Narrow it to the listings you want">
    Click `Add Filters`, to the right of `Select Fields`, build one condition, and click `Apply`. Skip this step to get every listing you have.
  </Step>

  <Step title="Choose the file format">
    Under `File Format`, click `CSV` or `Excel`.
  </Step>

  <Step title="Start it">
    Click `Export` at the bottom of the dialog.
  </Step>
</Steps>

That is the whole flow. Your export appears at the top of the table right away, moves from `Pending` to `Processing` while it builds, and shows a `Download` button when it is ready. You also get an email when it finishes.

Everything below explains that dialog one part at a time. You do not need any of it for a simple export.

## Every option in detail

The export dialog has four parts, from top to bottom: `Quick Presets`, `Saved Templates`, `Select Fields` and `File Format`. `Saved Templates` only appears once somebody on your team has saved one. The sections below follow that order. The last two are the limits and what an export cannot do.

### Start from a preset

`Quick Presets` is the row of buttons at the top of the export dialog. A preset is a ready-made field selection: click one and it replaces whatever you had checked.

| Preset | What you get |
| --- | --- |
| `All` | Every field there is. This is what the dialog opens on |
| `Pricing` | Your cost and every price you set, with `SKU`, `Product ID` and `Product Title` to tell the rows apart |
| `Competition` | The Buy Box price, whether you are winning it, the lowest competitor price and how many competitors you have |
| `Profitability` | Your price and cost with the fees and the estimated profit next to them |
| `Inventory` | Where each listing is, whether it is active, how it is fulfilled and how much stock you have |

A preset is a starting point and not a lock. Check or uncheck anything you want after that, and the button stops being highlighted the moment your selection stops matching it.

### Choose your fields

`Select Fields` is the middle of the export dialog, and it has nine groups of fields. Click `Show` on the right of a group to open it, then check or uncheck the fields inside. Each group shows a count of how many of its fields you kept. To do the whole list at once, use `Select All` and `Clear All`, on the right of the `Select Fields` label.

| Group | What is in it |
| --- | --- |
| `Product Identifiers` | What the item is, and the codes you match it by |
| `Integration & Region` | Where the listing is, and the currency it is priced in |
| `Inventory` | Whether the listing is active, how it is fulfilled, and how much stock you have |
| `Pricing` | Your cost, and every price on the listing |
| `B2B Pricing` | The Amazon Business prices, for the listings that have them |
| `Market Data` | The Buy Box, the lowest competitor, and how many competitors you have |
| `Fees & Profit` | The fees on a sale, and the estimated profit left over |
| `Repricing` | The strategy, whether repricing is paused, and when the price last changed |
| `Dates` | When the listing was last synced, last submitted and last updated |

Every field is checked when you arrive, so the work here is taking things out, not putting them in. A field you uncheck is simply not a column in your file.

One thing can stop you unchecking a field. A field used by one of your filters is held in the selection, and its checkbox is disabled until you delete that filter. Adding a filter checks its field for you as well, so the column that explains why a row is in your file is always in your file.

The `Export` button at the bottom of the export dialog stays gray until at least one field is checked.

### Filter which listings you get

Without filters you get every listing in your organization. A filter narrows that down, so you can export one integration, one strategy, or only the listings with no cost on them.

Click the `Add Filters` button, to the right of `Select Fields` in the export dialog, and a dialog called `Select filters for your export` opens. It starts with one empty condition.

| What you click | What it does |
| --- | --- |
| `Filter by` | A dropdown of the columns you can filter on. Pick one |
| `Operator` | A dropdown of comparisons, like `contains` or `is empty`. The choices change with the column you picked |
| `Value` | Type or pick what you are looking for. `is empty` and `is not empty` need no value, so the box disappears |
| `Add condition` | Adds another condition. It stays gray until the one above it is complete |
| `Match` | Set it to `All conditions (AND)` to require every condition, or `Any condition (OR)` to accept any one of them. It appears once you have two |
| The × on a condition | Deletes that condition |
| `Apply` | Saves your filters and closes the dialog. It stays gray until at least one condition is complete |
| `Cancel` | Closes the dialog and keeps whatever filters you had before |
| The × next to `Filters` | Clears every filter in one click |

The comparisons you get depend on what kind of column you picked.

| Kind of column | Comparisons you get |
| --- | --- |
| Text, like `SKU` or `Brand` | `contains`, `does not contain`, `equals`, `starts with`, `ends with`, `is empty`, `is not empty` |
| A number or a price | `equals (=)`, `not equal to (≠)`, `greater than (>)`, `greater than or equal to (≥)`, `less than (<)`, `less than or equal to (≤)`, `is empty`, `is not empty` |
| A fixed list, like `Listing Status` | `is`, `is not`, `is any of`, `is empty`, `is not empty` |
| A date | `is after`, `is on or after`, `is before`, `is on or before`, `is empty`, `is not empty` |

**Type a price the way you would type it in the app.** A `Value` of `25.99` on a price column means 25.99 in the listing's own currency. The box shows `Amount ($)` to remind you it wants a plain amount.

**Two of the dropdowns are built from your own data.** `Region` lists the regions on the accounts you have connected, and `Strategy` lists your strategies by name. Pick an `Integration` first and both of them narrow to match it, and a `Strategy` that no longer fits the integration you picked is cleared for you.

A condition you only half filled in is thrown away when you click `Apply`, and nothing tells you it happened. If your file has more rows than you expected, reopen `Add Filters` and check that every condition still has all three parts.

<Accordion title="Every column you can filter on">
  Text: `SKU`, `Product ID`, `Product Title` and `Brand`.

  Numbers and prices: `Stock`, `Competitors`, `Current Price`, `Target Price`, `Cost`, `Min Price`, `Max Price`, `Manual Price`, `Buy Box Price`, `Total Fees` and `Est. Profit`.

  Fixed lists: `Integration`, `Region`, `Listing Status`, `Fulfillment`, `Buy Box Status`, `Strategy` and `Repricing Status`.

  Dates: `Last Synced`, `Last Repriced`, `Last Submitted`, `Created` and `Updated`.

  That is fewer columns than you can export. A field you can put in the file is not always a field you can filter on.
</Accordion>

### Choose the file format

`File Format` is near the bottom of the export dialog, with two buttons. `CSV` is the one it opens on.

**Choose `Excel` if you are going to open the file and work in it**, because it comes out as one sheet ready to read. **Choose `CSV` if you are going to feed the file to another system**, because plain text is the format everything reads.

The button says `Excel`, and what you get is a file ending in `.xlsx`. The exports table calls the same thing `XLSX` in its `Format` column.

### Save a setup as a template

If you build the same export every week, save it once and load it next time. `Save as Template` appears under `File Format` in the export dialog as soon as your setup stops matching a preset, or as soon as you add a filter. Click it, type a name of up to 250 characters, and click `Save`.

From then on the setup is a button under `Saved Templates`, near the top of the export dialog, and anyone in your organization can click it. Clicking a template fills in the fields and the filters it was saved with.

| A template remembers | A template does not remember |
| --- | --- |
| The fields you checked | The file format |
| The filters you set | |

Because the file format is not part of a template, pick `CSV` or `Excel` again each time you load one.

<Note>
  A template only fills in the export dialog. It never runs on its own, so saving one does not give you a repeating export.
</Note>

Two things stop you saving a template. A name somebody already used is rejected. So is a setup identical to a template that already exists. In that second case the matching button highlights itself and `Save as Template` disappears, which is the app telling you the setup is already saved.

You cannot edit a template. To change one, delete it with the × on its button and save a new one. You are asked to confirm first. Deleting a template does not delete the exports you already ran with it, though those rows stop showing its name in the `Template` column.

<Accordion title="Sending your export setup to a teammate as a link">
  The address in your browser keeps up with what you set up in the export dialog. Copy it while the dialog is open, send it to someone on your team, and the dialog opens for them with the same fields, filters and format.

  A setup you have not changed leaves the address clean. There is nothing worth copying until you pick a preset, uncheck a field, add a filter or switch the format.
</Accordion>

### Limits

| What | Limit |
| --- | --- |
| File formats | CSV and XLSX |
| Conditions in one filter | 50 |
| Template name | 250 characters |
| A name you type into `Rename` | 250 characters |
| Exports the table shows | The 50 most recent |
| How long the file lasts | 14 days |
| How long a download link lasts | 1 hour, and you get a new one on every click |

### What an export cannot do

| You cannot | Do this instead |
| --- | --- |
| Stop an export once you have started it | Wait for it to finish, then start the one you wanted |
| Re-run or duplicate a finished export | Save a template and start from it next time |
| Export the rows you picked or filtered on the `Listings` page | Use `Add Filters` inside the export dialog |
| Export your strategies, or anything on the `Reports` page | Nothing here does that. The export dialog covers your listings only |
| Get a PDF, JSON or Google Sheets file | Use `CSV` or `Excel` |
| Email the file to somebody else | Download it and send it yourself |
| Edit a template | Delete it and save a new one |

## What your file looks like

Two things about the file surprise people the first time. The columns are not named the way the export dialog names them, and every date is written out in words. Both are explained here.

### What the columns in your file are called

The export dialog shows you a friendly label, `Product Title` or `Min Price`. Your file uses the Repricer's own name for that column, which is almost always the label in lowercase with underscores instead of spaces: `product_title`, `min_price`. That name is in the header row at the top of the file.

Two rules cover most of the rest. A date column adds `_at` on the end, so `Last Synced` becomes `last_synced_at`. A price column keeps its plain name and gets a plain number, so `Cost` becomes `cost`.

Those names are the same whatever language you use the app in, so you and a teammate on the other language get a file that reads identically.

<Accordion title="The fields whose column name is not what the export dialog calls them">
  | In the export dialog | In your file |
  | --- | --- |
  | `Product ID` | `integration_product_id` |
  | `Integration` | `channel` |
  | `Region` | `integration_region_name` |
  | `Country` | `country_code` |
  | `Fulfillment` | `fulfillment_channel` |
  | `MAP` | `map_price` |
  | `MSRP` | `msrp_price` |
  | `Ch. Suggested Price` | `foep_price` |
  | `B2B Price` | `b2b_our_price` |
  | `Buy Box Price` | `buybox_price` |
  | `Buy Box Winner` | `is_buybox_winner` |
  | `Lowest Competitor` | `lowest_competitor_price` |
  | `Competitors` | `competitor_count` |
  | `Est. Profit` | `estimated_profit` |
  | `Paused` | `is_paused` |
  | `Market Data Date` | `last_market_data_at` |
</Accordion>

### How values are written in the file

| Column | What you get in the cell |
| --- | --- |
| A price, a cost or a fee | Just the number, with no currency symbol, so `29.99` |
| `currency` | Which currency the money columns on that row are in |
| A date | Words you can read, like `Jan 28, 2026 02:30 PM EST` |
| `is_paused` and `is_buybox_winner` | A true or false value |
| `channel`, `listing_status`, `fulfillment_channel` and `repricing_status` | The stored value in lowercase, like `amazon`, `active`, `fba` and `not_working` |
| `integration_product_id` on a Shopify listing | The plain numeric variant ID, with nothing in front of it |
| Anything empty | An empty cell |

Every date is written in your own timezone, the one on your profile under `Settings`, and each one names that timezone at the end so nobody has to guess. An `Excel` file is a single sheet called `Data`, with the header row on top of it.

A filter that matches no listings still gives you a file. It has the header row and nothing under it, and the `Rows` column in the exports table says `0 rows`.

## When something goes wrong

### Watching your export run

Your export appears in the exports table under `Uploads` right away, and moves through these statuses.

| Status | What it means |
| --- | --- |
| `Pending` | It is waiting to start |
| `Processing` | It is being written |
| `Completed` | Done, and ready to download |
| `Failed` | Done, with nothing to download |

The row keeps itself up to date while the export runs, so there is nothing to refresh. The `Rows` column says `0 rows` the whole time it is running, and shows the real count when it finishes. A `0` there is not a sign that anything went wrong.

A `Failed` export leaves you nothing to download, and the row does not say why it failed. Build it again from `Create export`.

### Reading the exports table

| Column | What it shows |
| --- | --- |
| `File Name` | The name of the file, with the extension left off |
| `Template` | The template you used. With no template it names the preset your fields matched, or says `No template` |
| `Fields` | How many fields you exported. Hover to read them |
| `Filters` | How many filters you used. Hover to read them |
| `Format` | `CSV` or `XLSX` |
| `Status` | Where the export is |
| `Rows` | How many rows were written |
| `Created` | When it was started |

`Search`, `Filter`, `Columns` and `Density`, above the table, work the way they do on every other table in the Repricer. [Filters](/repricer/filters) covers what each one does.

### Renaming and downloading your file

`Rename` and `Download` are the two buttons on the right of every row of the exports table.

`Rename` opens a small dialog with a `File Name` box, up to 250 characters. You change the name only, never the extension, which is shown to the right of the box. You can rename an export while it is still running, and the name you type is the name the file downloads under.

`Download` stays gray until the export is finished. Click it and the file saves right away. The link behind that button works for 1 hour, and clicking again gets you a fresh one, so an expired link is never something you have to think about.

### The email you get

Whoever created the export gets an email when it is ready, written in their own language. Nobody else is told, and there is no way to send the file to an address you type in.

That email gives you the export type, the file name and the row count. Its button brings you back to `Uploads` in the app. The file is never attached to it and never linked from it, so the table is where every download starts. You can turn the email off under `Export ready`, in the `System` group of `Notifications` in your settings.

### Messages you might see

| Message | What to do |
| --- | --- |
| `Please select at least one field to export` | Check at least one field under `Select Fields` |
| `This field can't be removed because an active filter depends on it.` | Delete the filter that uses it, then uncheck the field |
| `A template with this name already exists` | Use a different name, or delete the old template |
| `Export filter configuration is invalid.` | Reopen `Add Filters`, delete the conditions you are unsure of, and apply them again |
| `Failed to create export` | Try again. Nothing was started, so you are not making a duplicate |
| `Export is not ready for download.` | It has not finished yet, or the file is already past its 14 days |
| `Export file is not available.` | The file is gone. Run the export again |
| `Could not prepare the download link. Please try again.` | Click `Download` again |
| `Failed to rename` | Try renaming it again |
| `Failed to delete template` | Somebody deleted it before you. Reload the page |
| `You don't have permission to do that.` | Your role cannot do that. Check the roles table above |
| `An unexpected error occurred` | Reload the page and check the status before you try anything again |

## Where to go next

<Columns cols={2}>
  <Card title="Imports" icon="upload" href="/repricer/uploads/imports">
    The same file going the other way, and what an import is allowed to change.
  </Card>

  <Card title="Schedules" icon="clock" href="/repricer/uploads/schedules">
    A schedule that runs on its own, and where it takes its file from.
  </Card>

  <Card title="Listings" icon="table" href="/repricer/listings">
    The table your export is built from, and what one row of it gives you.
  </Card>

  <Card title="Filters" icon="funnel" href="/repricer/filters">
    How a filter panel works on the tables everywhere else in the Repricer.
  </Card>
</Columns>
