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

# Tags

> Tags group your products any way you decide, by Clearance or Fragile or Reorder in March, and a product takes as many of them as you need.

A tag is a short label you put on a product so you can find that product again later. `Clearance`, `Fragile`, `Reorder in March`: a tag can say whatever you need it to say, and it has nothing but a name and an optional description.

Most people use a tag when the two other ways of grouping your products do not fit. A category says what your product is, and a brand says who made it. A tag says whatever you decide this quarter, and you can change your mind next quarter without moving anything. A product takes as many tags as you give it, and a product with no tags at all is fine.

You find your tags under `Catalog`, in `Tags`. Your `Create tag` button is at the right end of the toolbar above the list. The table under it gives you one row per tag, with a count of how many of your products use it. Click a row and that tag opens so you can edit it.

One thing to know first: your tags do not nest. There is no parent tag and nothing turns a set of them into levels, so your tags are in one flat list however many you have. If you want something that nests, that is what [categories](/pim/catalog/categories) are for.

## Before you start

Two things can stop you. Everything else on this page can wait until you need it.

### What your role lets you do

| Role | Create and edit a tag | Duplicate and delete |
| --- | --- | --- |
| Admin | Yes | Yes |
| Manager | Yes | Yes |
| Editor | Yes | No |

Below Manager you get no buttons at the end of a row, no checkboxes down the left of the list, and no selection bar. Your role is set in [team, roles and permissions](/team#what-each-pim-role-can-do).

### Deleting a tag has no undo

<Danger>
  A deleted tag does not come back, and nothing keeps a copy for you. You can only delete a tag no product is using, so nothing ever disappears off your products by accident.
</Danger>

## How to create a tag

<Steps>
  <Step title="Open the tag dialog">
    From `Catalog`, select `Tags`, then click `Create tag` at the right end of the toolbar above the list. A small dialog opens for you with two fields in it.
  </Step>

  <Step title="Name the tag">
    Type into the `Name` field at the top of the dialog. This is the only thing a tag needs, and it is what you will search for later.
  </Step>

  <Step title="Say what it is for">
    Write a line in the `Description` field under it, or leave yours empty. Only your team ever reads it, so use it to remind yourselves what the tag means.
  </Step>

  <Step title="Save it">
    Click `Create` at the bottom right of the dialog.
  </Step>
</Steps>

That is the whole flow. Your tag drops into the list right away, sorted into place by name, and a small message confirms it was created. A new tag starts on no products, so nothing in your catalog changes until you put it on something.

Putting your tag on a product happens from the product and not from here, and the section below covers it. Everything after that is the list, the bulk action and what a tag does on your integrations. You do not need any of it to make one.

## Every option in detail

The tag dialog is the same dialog whether you are creating a tag or editing one. It opens from `Create tag` above the list, or from clicking any row. The button at the bottom reads `Create` on a new tag and `Update` on one you already have. On a tag you already have, that button stays gray until you change something.

Closing the dialog with unsaved edits asks you to confirm first, and you can either throw the edits away or go back to editing. Clicking outside the dialog or pressing Escape does the same thing. There is no draft waiting for you after that.

### What goes in a tag

Your tag has two fields and nothing else.

| Field | What it is for |
| --- | --- |
| `Name` | What you and your team call the tag. Required, and the only field that has to be filled in |
| `Description` | A line reminding you what the tag means. Optional, and the only place a tag says anything about itself |

Both fields count your characters as you type and show the count under the box. Both trim the spaces off each end before saving, so a stray space never becomes part of your name.

**A tag has no color, no icon, no image, no web address and no search-engine fields**, and none of them are tucked away on another screen. A brand or a category gives you all of that. Your tag gives you the two fields above and nothing more, which is what makes one quick to create and quick to throw away. Use a [brand](/pim/catalog/brands) when you want a description and images that go out to your stores.

### When a name is already taken

Two of your tags cannot share a name. Nothing checks while you type, unlike brands and categories, so you find out when you click `Create` and get `A tag with this name already exists` back. Pick a different name and click `Create` again.

The check counts capitals, so `sale` and `Sale` are two different tags and both can be in your list at once. That matters, because it is how your catalog ends up with the same idea spelled two ways. There is no merge for tags, so the fix is to move the products across and then delete the one you do not want, which the section on retagging covers.

<AccordionGroup>
  <Accordion title="Why you cannot make that pair from inside a product">
    The `Tags` field inside a product treats `sale` and `Sale` as the same tag, whichever you type. It gives you the tag you already have instead of a create row, so a capitals-only twin cannot start there.

    The tag dialog is where you can make that pair. So can the first sync from a Shopify store, which brings tag names in exactly as the store spells them.
  </Accordion>
</AccordionGroup>

### Reading the tags list

The list under the toolbar has one row per tag of yours.

| Column | What it shows |
| --- | --- |
| `Name` | The name, and what the list is sorted by when you open it |
| `Description` | The description, cut short when it runs long |
| `Products` | How many products use the tag, whatever state each product is in |
| `Created at` and `Created by` | When the tag was made, and who or what made it |
| `Updated at` and `Updated by` | When it last changed, and who or what changed it |

`Products` counts your drafts and your archived products too, so a tag showing `4` can have nothing live behind it.

Every column above starts visible, so the list you first see is the whole of it. It opens 50 rows at a time, and the page-size control at the bottom right switches you to 25 or 100. Four buttons are on the toolbar above your list. `Search` is at the left end, and `Columns`, `Filter` and `Density` are at the right. `Columns` hides any column you do not want, `Filter` opens the filter panel, and `Density` makes your rows tighter or looser. Click a column header to sort your list by it.

`Search` takes everything you type as one phrase and not as separate words, so `on sale` finds the tag `on sale` and not every tag with the word `on` in it.

**Checking any row hides that whole toolbar** and puts the selection bar in its place, so `Search`, `Columns`, `Filter` and `Density` all vanish while you have rows checked. `Clear` in that bar drops your selection and brings them back.

### Finding the tags no product uses

This is the most common thing people want from this list, so here it is end to end. Click `Filter` at the right of the toolbar above your tags list. In the condition row that opens, set `Filter by` to `Products`, set `Operator` to `equals (=)`, and type `0` into `Value`. What is left is every tag nothing is using, which is your cleanup list.

A count column has no `is empty`, because a tag no product uses has a count of `0` and not a blank. That is why `equals (=)` with `0` is the comparison that answers your question.

That same panel answers your second common question too. Set `Filter by` to `Created by`, leave `Operator` on `is`, and pick `Any integration` in the `Value` dropdown. You get the tags a store invented on its own rather than the ones your team typed. Change that last choice to `Any import` or `Any data source` and the rest splits the same way. A set of conditions you build often is worth keeping as a [saved view](/pim/saved-views), and [filters](/pim/filters) covers the panel in full.

You can also read the count without filtering anything. The `Tags` section on your [dashboard](/pim/dashboard) shows `Total Tags`, `Tagged Products`, `Untagged Products` and `Unused Tags`, and the taxonomy report lists `Unused tags` beside the same number for brands and categories.

### Where tags come from when no one types them

Your list grows without anyone clicking `Create tag`, which is why a catalog usually has more tags than anyone remembers making.

| What made it | What you get |
| --- | --- |
| The `Tags` field inside a product | One tag per name you type in and confirm, arriving with an empty description |
| The `Update tags` dialog on the products table | The same, from its `Tags` field, in `Add` and `Overwrite` |
| A products import | One tag per name in the `Tags` column, split on the tags separator |
| A tags import | One tag per row, from a `Tag Name` column and a `Description` column |
| The first sync from a Shopify store | One tag per tag name it finds on a product, spelled exactly as the store spells it |

An import only creates tags when you tell it to. `If Tag does not exist:` on the import's `Options` step starts on `Skip with warning`, and `Create automatically` is the choice that lets your file mint the tags it names. Pick `Create automatically` when your file is the source of truth for tags. Leave it on `Skip with warning` when you would rather look at the misses yourself. [Imports](/pim/uploads/imports) covers that step.

**A recurring feed never invents a tag**. The same `If Tag does not exist:` question on a [data source](/pim/uploads/data-sources) has only `Skip with warning` and `Fail the row`. A feed naming a tag you do not have either writes your product without it or rejects the row.

A data source can still work on your tags a different way. Set its target to `Tags`, and it updates the names and descriptions of the tags you already have. It matches them by `Tag Name` or by `ID`.

**A tag a store or a file made looks no different from one you typed**. Your `Created by` column is what tells them apart. A tag a Shopify first sync created shows the account's name followed by `Integration`, and one a file made shows `Import` or `Data source`.

### Putting a tag on a product

You do this from the product, never from the tag. The tag dialog gives you no place to add products, and that is the thing about tags that surprises people most.

Open your product from `Catalog`, in `Products`, scroll to its `Taxonomy` section and click the `Tags` field. Start typing. Matching tags appear under it as chips you can click. A name you have never used appears at the bottom of that panel instead, as a create row reading `Create` and the name you typed. Click that create row and you get the tag made and attached in one move.

The chips inside the field stay in the order you picked them, and nothing drags. That order matters in one place: the first chip is the tag your products table sorts its `Tags` column by. To change which one comes first, take them all out and pick again, starting with the one you want at the front.

<Info>
  A tag goes on the product and never on a variant. Every variant shares your product's tags, and you cannot tag one size or one color on its own.
</Info>

### Finding your products by tag

On your products table, `Tags` is both a column and a filter.

The column shows you the first 3 tags on a product as badges and collapses the rest into a `+N` badge whose tooltip names them. It is blank on a variant row, because your tag is on the product above it.

To filter, click `Filter` in the toolbar above your products table and set `Filter by` to `Tags`. The `Value` dropdown lists only tags that are already on at least one product, so a tag you made five minutes ago is missing from it until you use it. Your comparisons are `is`, `is not`, `is any of`, `is empty` and `is not empty`, and `is empty` is the one that answers "which of my products has no tags at all".

### Retagging many products at once

`Update tags` is how you move a lot of products from one tag to another. Check the products you want on the products table, and the selection bar replaces the toolbar above it. Click `Update tags` there.

The dialog opens over the page with one dropdown, `Mode`, and nothing under it. Pick your mode and the tag fields appear.

| `Mode` | What it does to the products you checked |
| --- | --- |
| `Add` | Adds the tags you choose and leaves everything already there |
| `Remove` | Takes the tags you choose off, and leaves the rest |
| `Replace` | On products that have any tag in `Tags to swap out`, takes those off and puts the ones in `Tags to add` on. A product with none of them is left alone |
| `Overwrite` | Makes the tag list exactly what you chose. Every other tag comes off |

**Pick `Replace` to fold two tags into one**. Put the tag you are retiring into `Tags to swap out`, and put the one you are keeping into `Tags to add`. Every product of yours crosses over in one run. You can then delete the retired tag, which the list will now let you do because nothing is using it.

**Pick `Overwrite` only when your list is the whole answer**. It is the only mode that removes a tag you did not name. Leaving its `Tags` field empty strips every tag off every product you checked. `Add` and `Remove` are your safe pair for everyday work.

`Add`, `Overwrite` and the `Tags to add` field of `Replace` all let you make a tag right there, the same way the product editor does. `Remove` and `Tags to swap out` list only the tags the products you checked actually have, so an empty dropdown there means your selection has nothing to take off.

Click `Apply` at the bottom of that dialog to run it. The action itself is on [products](/pim/catalog/products), and [bulk actions](/pim/bulk-actions) covers how you build a selection and what a select-all changes.

### Duplicating a tag

`Duplicate` is at the end of your tag's row in the list, and in the `⋮` menu at the top of the tag dialog. Use it when a new tag is nearly the same as one you already have.

It gives you `Sale (Copy)`, then `Sale (Copy 2)` if you do it again. The description comes across and the products do not, so your copy starts on nothing. A name of yours already at 100 characters is cut short to make room for the suffix.

### Deleting a tag

`Delete` is in the same two places as `Duplicate`. Look at the end of your tag's row in the list, and in the `⋮` menu at the top of the tag dialog. Both open a dialog that names your tag, and there is nothing for you to type.

A tag your products still use will not delete, and the message counts how many are in the way. Take the tag off your products first with `Update tags` in `Remove` mode, then delete it.

To delete several at once, check the rows down the left of your list and click `Delete` in the selection bar. The box in the header of the list checks the whole page for you. When more of your tags match than the page shows, a `Select all` button appears in that bar with the number on it. Click it and the delete covers every matching tag.

A run that big goes into the background, with its own progress and a `Cancel` button beside it. Your set is fixed the moment you confirm, so a tag created after that is never included. A bulk delete does not stop over one row: it deletes what it can, then tells you which rows it skipped and why.

### Limits

| What | Limit |
| --- | --- |
| The `Name` field | 100 characters |
| The `Description` field | 500 characters |
| Tags on one product | No limit |
| Tags in one bulk delete | 100,000 |

### What you cannot do with a tag

| You cannot | Do this instead |
| --- | --- |
| Put one tag under another | Use [categories](/pim/catalog/categories), which do nest |
| Merge two tags into one | Use `Update tags` in `Replace` mode, then delete the one you retired |
| Add products from the tag dialog | Open the product and use its `Tags` field |
| Tag one variant | Tag the product, and every variant shares it |
| Give a tag a color, an image or a web address | Use a [brand](/pim/catalog/brands), which has all three |
| Delete a tag while products still use it | Take it off them first, then delete it |
| Undo a delete | Nothing. It is permanent |

## What a tag becomes on each integration

Whether your tag goes out at all comes down to one thing: whether that integration keeps tags of its own on a product.

| Integration | What a tag becomes there |
| --- | --- |
| Shopify | A tag on the store's own product, one for one |
| BigCommerce | Nothing |
| Square | Nothing |
| Google | Nothing |
| Amazon | Nothing |

That table is where tags part company with the rest of your taxonomy. A brand and a category each turn into something a shopper can browse on most integrations that take product content, usually a page or a collection of yours. A tag goes directly on the product wherever it goes at all, and nothing collection-shaped is ever built for it. Read the other side of that difference in [brands](/pim/catalog/brands).

An integration that groups its products some other way has nowhere to put your tag. One that sells against someone else's catalog takes no product content at all. In both cases you have nothing to configure, because nothing is being sent.

### What a Shopify store gets

Your tags go out as one whole list on every push, so the store's product ends up with exactly the tags your PIM product has. Take the last tag off in the PIM and your store's product loses its tags instead of keeping them. Adding or removing a tag queues that push for you.

**Renaming a tag pushes nothing**. The new name appears on every product that has it inside the PIM right away, and no push is queued. The store keeps the old spelling until each of those products is pushed for some other reason, and a normal edit of yours does that.

### The tags a first sync brings in

The first sync from a Shopify store is the one time tags come into your catalog. A product it imports arrives carrying the store's tags, and a tag name your catalog does not have is created for you. After that it is one way: your list is what the store gets, and a tag somebody adds over there is replaced on your next push.

Categories never come in at all: no sync touches them, and a collection never becomes a PIM category. Read that one-way rule for every other object in [integrations](/pim/integrations).

<Warning>
  A tag name over 100 characters never arrives. The PIM caps a tag name at 100, and the first sync skips any longer name instead of shortening it, leaving you a line in `Advisories` on the product.
</Warning>

Your product itself still goes out, just without that one tag. You get no error and no line in any report, so a store that writes whole sentences into its tags is worth checking yourself.

## When something goes wrong

### Messages in the tag dialog

| Message | What to do |
| --- | --- |
| `Tag name is required` | The `Name` field is empty. Type a name and save again |
| `A tag with this name already exists` | Pick a different name. Changing the capitals is enough here, which it is not on a brand |
| `This tag was changed by another user, reload to see the latest.` | Someone saved while you had it open. Click `Reload` on the notice above the fields, then make your edit again |
| `Failed to save tag` | Try saving again. Nothing was written |
| `Failed to duplicate tag` | Try `Duplicate` again. No tag was created |

### Saving while someone else has the tag open

The top of the tag dialog shows you who else has it open right now, and whether they are only looking or actually editing.

If they save first, your save is rejected instead of silently overwriting theirs. A notice appears above your fields with a `Reload` button on it. Reloading brings their version in and throws your unsaved edits away. The fields they touched flash blue as the new values appear, so read what changed before you click it.

If your own form has no unsaved edits, none of this happens and the dialog just refreshes itself.

### Messages when you delete

| Message | What to do |
| --- | --- |
| `Cannot delete this tag.`, and then how many products use it | Take the tag off those products with `Update tags` in `Remove` mode, then delete it |
| `Cannot delete tag:`, and then how many products reference it | The same thing, reported against each row a bulk delete had to skip. The other rows still deleted |
| `Failed to delete tag` | Try deleting it again. Nothing was removed |
| `Another bulk action is already running for your team. Try again shortly` | Someone on your team is running one. Wait for theirs to finish, then start yours |

Those first two arrive in English whatever language you use the app in.

### Messages from a products import

| Message | What to do |
| --- | --- |
| `The referenced tag was not found.` | Your file names a tag you do not have. Set `If Tag does not exist:` to `Create automatically` on the import's `Options` step, or make the tag first |

You read that one against the row that failed, in the results of the [import](/pim/uploads/imports) that produced it, and never in the tags list.

## Where to go next

<Columns cols={2}>
  <Card title="Products" icon="package" href="/pim/catalog/products">
    The `Tags` field your product picks its tags from, and where `Update tags` is.
  </Card>

  <Card title="Categories" icon="folder-tree" href="/pim/catalog/categories">
    The grouping that nests, and the one an integration turns into a page.
  </Card>

  <Card title="Imports" icon="upload" href="/pim/uploads/imports">
    Creating tags from a file, and what happens to a row naming one you do not have.
  </Card>

  <Card title="Bulk actions" icon="list-checks" href="/pim/bulk-actions">
    How you build a selection, and what a select-all does that checked boxes do not.
  </Card>
</Columns>
