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

# Specifications

> Specifications are the attributes that describe a product, and you decide which answers each one accepts so your whole catalog picks from the same set.

A specification is a fact about a product that you pick from a list instead of typing: `Color` is `Red`, `Material` is `Cotton`, `Screen size` is `13 in`. You write the list of allowed answers once. Every product you have picks from that list after that.

Picking beats typing for two reasons. It stops `Red`, `red` and `RED` from becoming three different things across your catalog. It also gives a shopper something to filter by on your storefront, because the same answer arrives on every product that uses it.

Setting one up takes three levels, and you build them from the top down. A **group** keeps related attributes under one heading, such as `Appearance`. A **definition** is one attribute inside that group, such as `Color`. A **value** is one answer that definition accepts, such as `Red`. You give a product values, never definitions and never groups, and those values are stored on the product rather than on one of its variants.

You find all of this under `Catalog`, in `Specifications`. Three links then run down the left side of your screen: `Groups`, `Definitions` and `Values`. Each one opens a list with its own toolbar above it.

## Before you start

### What your role lets you do

| Role | Create and edit | Delete or duplicate | View |
| --- | --- | --- | --- |
| Admin | Yes | Yes | Yes |
| Manager | Yes | Yes | Yes |
| Editor | Yes | No | Yes |

If you are an Editor, the three-dot menu at the end of every row is simply not there, because `Duplicate` and `Delete` both need a higher role. The checkboxes that pick rows out for a bulk delete are missing too. Your role is set in [team, roles and permissions](/team#what-each-pim-role-can-do).

### Deleting cannot be undone

<Warning>
  Deleting a group, a definition or a value is permanent. There is no archive, no draft state and nothing for you to restore from.
</Warning>

## How to set up your first specification

<Steps>
  <Step title="Open the groups list">
    From `Catalog`, select `Specifications`. The three links on the left open on `Groups`. Click `Create group` at the right end of the toolbar above the list.
  </Step>

  <Step title="Name the group">
    A dialog opens over the page with a `Name` box. Type something like `Appearance`, leave the `Categories` field empty for now, and click `Create`.
  </Step>

  <Step title="Create a definition inside it">
    Click `Definitions` on the left, then `Create definition` in the toolbar. Pick your group in the `Group` dropdown and type `Color` into `Name`. Answer the two questions under it with `Yes` or `No`, then click `Create`.
  </Step>

  <Step title="Create the answers it accepts">
    Click `Values` on the left, then `Create value` in the toolbar. Pick the same group in `Group`, pick `Color` in `Definition`, and type `Red` into `Value`. Click `Create`, then do it again for every answer you want.
  </Step>

  <Step title="Put a value on a product">
    Open a product from `Catalog`, in `Products`. Scroll its dialog down to the `Specifications` section and click `Select` in the toolbar above that table. Work left to right through the four panes, click `Done`, and save the product.
  </Step>
</Steps>

That is the whole flow. `Color` now appears on every product you have, `Red` is one of the answers it accepts, and the product you edited is showing it.

Everything below explains those screens one at a time. You do not need any of it to add a second definition or a second value.

## Every option in detail

Your three lists are built the same way. Each one opens from `Groups`, `Definitions` or `Values` on the left. Each one has a create button at the right end of the toolbar above it. Clicking any row opens that record in a dialog you can edit.

### Step 1: Create a group

A group is a heading and nothing else, and it never stores a fact about your products by itself. It does two things for you. It keeps your related definitions together, and it decides which of your products get them at all.

Click `Create group` at the right end of the toolbar above the groups list. The dialog has three fields:

| Field | What you put in it |
| --- | --- |
| `Name` | What you want the heading called, up to 100 characters |
| `Description` | An optional note for your team, up to 500 characters |
| `Categories` | A category tree you check boxes in. Leave it empty and your group covers every product |

Two of your groups cannot share a name, and `Color` and `color` count as the same name here.

**Leave `Categories` empty for now.** An empty field means every product in your catalog gets the definitions inside this group. That is what you want for something broad like `Appearance`.

Check categories in it and your group covers a much smaller set of products. Read the section below on why a group's categories decide which products see it before you do that.

### Step 2: Create a definition

A definition is the attribute itself: the `Color` in `Color` is `Red`. It belongs to exactly one of your groups. Two groups can each have a `Color` without clashing, which is why anything naming a definition names its group too.

Click `Definitions` on the left, then `Create definition` at the right end of the toolbar above the list.

| Field | What you put in it |
| --- | --- |
| `Group` | A dropdown of your groups. Required, and picking one wakes up `Excluded Categories` at the bottom |
| `Name` | What you want the attribute called, up to 100 characters and unique inside your chosen group |
| `Is required?` | A pair of buttons reading `Yes` and `No` |
| `Is unique per product?` | Another pair of buttons reading `Yes` and `No` |
| `Description` | An optional note for your team, up to 500 characters |
| `Excluded Categories` | A category tree, for dropping this definition back out for some of your products |

Neither question starts with an answer chosen for you, and the dialog will not save until you answer both.

**Answer `Is required?` with `Yes` to be reminded when the attribute is missing.** It never blocks a save. Read the section below on why a required specification does not stop you saving a product before you turn it on over a catalog you already have.

**Answer `Is unique per product?` with `Yes` when only one answer can be true at a time.** `Screen size` is one of those. Answer `No` when several can be true at once, like `Material` on a jacket that is part cotton and part polyester. Your answer decides whether you get radio buttons or checkboxes when you pick values on a product.

`Excluded Categories` only lists categories your chosen group already uses, which is why you pick the group first. When your group covers everything, it lists the whole category tree instead.

<AccordionGroup>
  <Accordion title="Why a definition has no type, no unit and no range">
    Nothing marks a definition as numeric, as a date or as a yes-or-no question. There is no unit field, no smallest or largest value, and no pattern an answer has to match.

    So the unit goes inside the text of your value. If you want `Weight` in kilograms, your values are `1 kg`, `2 kg` and so on. Someone filling in a product's weight then picks one of those instead of typing a number.

    That is also why every answer has to exist before a product can use it. A definition is a list of allowed answers, and a list with nothing in it gives you nothing.
  </Accordion>
</AccordionGroup>

### Step 3: Create the values

A value is one answer a definition accepts. `Red` under `Color`, `Cotton` under `Material`.

Click `Values` on the left, then `Create value` at the right end of the toolbar above the list.

| Field | What you put in it |
| --- | --- |
| `Group` | A dropdown of your groups. Pick it first, because `Definition` stays locked until you do |
| `Definition` | A dropdown of the definitions inside your chosen group |
| `Value` | The answer itself, up to 100 characters and unique inside that definition |
| `Description` | An optional note for your team, up to 500 characters |

<Info>
  Three characters are rejected in a group name, a definition name and a value: `>`, `|` and `=`. A spreadsheet puts a product's whole set into one cell, and those three characters separate the parts.
</Info>

So a shoe size reads `40 EU` and not `40 = 6.5 US`. Use one of the three and the dialog tells you which one it found.

### Create a set of them in one go

`Single` and `Bulk` are two buttons at the top of the create dialog on all three of your screens, and you start on `Single`. `Single` creates one record and asks you for everything about it. `Bulk` takes a list of names and applies one set of your choices to all of them. That is how you get 40 colors in without opening the dialog 40 times.

Type or paste your names into the `Names` box, one per line. The create button counts them back to you as you go.

| What you get in `Bulk` | What happens |
| --- | --- |
| One shared set of your choices | Your groups share one `Categories` selection, your definitions share one group and one answer to each question, your values share one group and one definition |
| No descriptions | Every record comes out with an empty description, and you fill them in later |
| A name you already have | It is counted back to you instead of being created, and the rest still go in |
| A name over 100 characters | It shows an error, and the create button stays gray until you fix it |
| More than 100 names pasted | Your first 100 are kept, and a message tells you how many were dropped |

Switching back to `Single` after typing several names asks you to confirm first, because only your first name is kept.

### Duplicate what you already built

`Duplicate` is in the three-dot menu at the end of every row on all three lists. It is in the same menu inside the dialog when you have a record open. It needs a higher role than Editor, so you see it from Manager up.

| What you duplicate | What you are asked |
| --- | --- |
| A group | `Group + every definition and value`, or `Group only (skip child definitions and values)` |
| A definition | `Definition + every value`, or `Definition only (skip values)` |
| A value | Nothing. Your copy is made right away |

Your copy takes your name with ` (Copy)` after it, and ` (Copy 2)` when a copy of that name already exists.

### Find a group, a definition or a value

Each of your three lists opens 50 rows at a time, and the page-size control at the bottom right switches you to 25 or 100. Clicking a column header sorts by that column.

Four buttons are at the right of the toolbar above each list, next to your create button. `Search` narrows the list to rows whose name or description contain what you type. `Columns` hides any column you do not want to see. `Filter` opens a panel where you pick a column in `Filter by`, a comparison in `Operator`, and something to match in `Value`. `Density` makes your rows tighter or looser.

Set any filter and a control appears in the page header beside the title, reading `Unsaved View`. `Reset` next to it puts your list back, and `Save View` keeps that set of filters under a name you choose.

<AccordionGroup>
  <Accordion title="Every column the three lists can show you">
    Your groups list shows `Name`, `Description`, `Categories`, `Definitions`, `Created at`, `Created by`, `Updated at` and `Updated by`. `Categories` and `Definitions` are counts, so a `0` under `Definitions` is an empty group.

    Your definitions list shows `Group`, `Name`, `Description`, `Required`, `Unique`, `Categories Excluded`, `Values` and the same four audit columns. `Categories Excluded` and `Values` are counts too.

    Your values list shows `Group`, `Definition`, `Value`, `Description`, `Products` and the same four audit columns. `Products` counts how many of your products use that answer, so a `0` there is a value no one picked.
  </Accordion>
</AccordionGroup>

### Put values on a product

Open the product from `Catalog`, in `Products`, and scroll its dialog down to the `Specifications` section. You get a table of the values already on it, one row each. `Group`, `Definition` and `Value` run across it, with `Remove` at the end of every row.

Two buttons are in the toolbar above that table. `Select` opens the picker. `Manage` opens your same three lists in a dialog called `Manage Specifications`, so you can invent a missing group, definition or value without losing the product you were editing.

The picker is called `Select specifications` and it gives you four panes side by side. You work through them left to right:

| Pane | What you do in it |
| --- | --- |
| `Groups` | Click a group to see what is inside it |
| `Definitions` | Click a definition to see the answers it accepts |
| `Values` | Check the answers that apply to this product |
| `Summary` | Read back everything you picked, and take any of it off again |

A search box is at the top of the picker and narrows all three left panes at once. A small `+` above each pane creates a new group, definition or value right there, filled in with wherever you are, and picks the new one for you. `Cancel` at the bottom throws your picks away. `Done` keeps them.

**`Done` stays gray until you change something.** So a picker you opened out of curiosity closes with `Cancel`, the × in the corner, or Escape.

**Nothing is saved until you save the product.** Clicking `Done` only writes your picks into the product you have open, the same as typing into any other field. Close the product without saving and you lose them.

### Change or remove values on a product

Your `Specifications` table inside the product filters like any other list. Click the filter control on the `Group`, `Definition` or `Value` column and pick from what is actually in the table. That is how you find one row on a product with 60 of them.

`Remove` at the end of a row takes that one value off. To take several off at once, check the box at the left of each row and click `Remove` in the bar that appears. It asks you to confirm, and reminds you that your change only counts when you save the product.

### Build the three levels from a file

Groups, definitions and values are each their own kind of import, so you can build a whole vocabulary from spreadsheets before a single product refers to it. Run them in that order, because each level names the one above it.

| Kind of import | Columns |
| --- | --- |
| Spec groups | `Group Name`, `Description`, `Categories` |
| Spec definitions | `Group Name`, `Definition Name`, `Is Required`, `Is Unique`, `Description`, `Excluded Categories` |
| Spec values | `Group Name`, `Definition Name`, `Value Name`, `Description` |

`Categories` and `Excluded Categories` take full category paths, as in `Apparel > Footwear`. Put a pipe between them when you list more than one. A leaf name on its own is rejected, because two different trees can both end in `Footwear`. `Is Required` and `Is Unique` take `Yes` or `No`.

**Those two columns are the one place a default shows itself.** The dialog makes you answer both questions. A file that leaves the columns out creates definitions that are not required and that accept one value each. Decide those two yourself instead of letting your file decide for you.

On step 5 of the import wizard, under `Missing references`, a definitions import asks you `If Spec Group does not exist:`. A values import asks you `If Spec Definition does not exist:`. Both give you `Skip with warning` and `Fail the row`, and both start on `Skip with warning`. Neither one creates the missing parent for you, which is why you run your three imports in order. [Imports](/pim/uploads/imports) covers the rest of the wizard.

### Put values on products from a file

A products import fills in a product's specifications through a column called `Specifications`. One cell has that product's whole set in it, written as `Group > Definition > Value` with a pipe between entries. The group is required in every entry, for the same reason two of your groups can both have a `Color`.

That same step 5 asks you four questions about specifications on a products import:

| Question | What to answer |
| --- | --- |
| `If Spec Value does not exist:` | `Skip with warning` leaves the value off and the rest of your row goes in. `Fail the row` throws the whole product row out |
| `If Spec is not allowed for the product's categories:` | The same two answers, for a specification the categories on your product do not cover |
| `Update behavior` | `Replace` makes your file's values the product's values. `Append` adds them to what is there. `Keep existing` ignores your column when the product already has values |
| `Specs` and `Specs path`, under `Array value separators` | Change these when your own data already contains a pipe or a `>` |

Those last two start on the characters this page has been using all along: a pipe between entries, and a `>` between the three parts of one entry.

**Pick `Replace` unless you want your file added to what is already there.** `Append` on a definition you set to `Yes` for `Is unique per product?` keeps the value the product already has, and warns you. A one-value definition has nowhere to put the second one.

### Limits

| What | Limit |
| --- | --- |
| Characters in a group name, a definition name or a value | 100 |
| Characters in a description | 500 |
| Names in one `Bulk` create | 100 |
| Rows a list shows you at once | 50 |
| Definitions named in the picker's warning | 5 |
| Definitions named in the product's reminder | 3 |
| Specifications a BigCommerce product takes | 200 |
| Characters in a name or an answer sent to BigCommerce | 250 |

### What specifications cannot do

| You cannot | Do this instead |
| --- | --- |
| Drag a group, a definition or a value into a different order | Click a column header to sort the list you are reading |
| Give a definition a type, a unit or a range | Put the unit inside your answer, as `1 kg` |
| Merge two groups that mean the same thing | Move your definitions across, then delete the empty group |
| Put a specification on one variant and not another | Nothing here is stored on a variant. Use an [option](/pim/catalog/variants) when your answer differs per variant |
| Have an import invent a missing group, definition or value | Import your three levels first, as their own files |
| Read a specification back from a connected store | Everything here is written out of the PIM and never read in |
| Add a column to your products table showing which values a product has | Click `Filter` in the toolbar above that table and set `Filter by` to `Has Specifications`, which splits it into products with values and products without |

## How your specifications behave

### Why a group's categories decide which products see it

A group with nothing checked in `Categories` covers every product you have. That is the simple case, and it is what most of your groups should be.

A group with categories checked covers only your products that are in one of those same categories. The two have to share a category exactly. Here is the part that surprises people: checking a parent in a category tree does not check its children for you, on your group or on your product.

So a group you scoped to `Apparel` does not cover a product filed only under `Apparel > Footwear`. Check `Apparel > Footwear` on your group too, or put both categories on your product.

`Excluded Categories` on a definition works in the other direction, and it runs second. A definition drops back out for any product in one of its excluded categories, even though your product is still inside what the group covers. Use it when one attribute of a group makes no sense for part of what that group covers.

The rule reads your product's own categories, so changing them changes which specifications that product gets. [Categories](/pim/catalog/categories) is the page where you make that change.

When nothing at all covers the product you have open, the picker tells you so instead of showing you four empty panes, and it suggests giving your product different categories. Create a group from inside the picker and check categories your product does not have, and that new group will not appear either. A message tells you why rather than leaving you to look for it.

### Why a required specification does not stop you saving a product

`Is required?` set to `Yes` does not block a save, which is the opposite of what the word suggests. A product with a required specification still missing is a normal state, not a broken one.

Your products get into that state without anyone doing anything wrong. Turning `Is required?` on applies to every product you already have, and giving a product a new category can bring a required definition in.

Here is where it does bite and where it does not.

| Where | Does a missing required specification stop you |
| --- | --- |
| `Done` in the `Select specifications` picker | Yes. `Done` is gray, and a warning at the bottom names up to 5 of them for you |
| Saving the product | No |
| An import whose file has a specifications column | Yes. That row of yours fails |
| An import with no specifications column at all | No. Your row is left alone |
| A data source that writes specifications | Yes. That product's specifications are dropped, and its other fields still go in |
| Turning `Is required?` on, duplicating a product, any sync to a channel | No |

What your product shows you instead is a reminder above its `Specifications` table. It names up to 3 of the definitions still waiting and counts the rest. Inside the picker, a small dot appears next to any group and any definition with one in it, so you can go right to it.

That count only looks at definitions that actually cover your product. A required definition inside a group that does not cover it is not waiting on anything, because it is not there.

### Why some values are radio buttons and some are checkboxes

`Is unique per product?` decides the shape of the control in the picker's `Values` pane. That is the whole of what it does inside the app.

Set to `Yes`, you get radio buttons. Picking a second answer replaces your first, so your product can never end up with two. Set to `No`, you get checkboxes and you check as many as apply.

That rejection only happens where values arrive without going through the picker. A file with two answers for a one-answer definition fails that row, and tells you to keep one value or make the specification allow several.

### What happens when a product's categories change

Values already on your product are never taken off when that product moves out of what a group covers. They gather in the picker's `Summary` pane, under a heading marking them as orphans. You take them off one at a time there, or leave them exactly as they are.

Nothing removes them for you, and nothing warns a shopper looking at your storefront. So a set of products you recategorized in bulk is worth opening again after that.

### What each channel takes

Where your specification goes depends on whether the channel has a general place to put extra facts about a product. A channel that does takes your whole set. A channel whose listing text is not yours to write takes none of it.

| Channel | What it takes |
| --- | --- |
| Shopify | Every value on your product, in two shapes at once |
| BigCommerce | One storefront custom field per value, named after its definition |
| Google | One product detail per definition, with your group as its section name and your answers joined into one line |
| Square | Nothing |
| Amazon | Nothing |

**On Shopify your values arrive twice.** One shape is the product's whole set in a single field, sorted into groups, each definition alongside the answers you picked for it. It is not written at all for a product with none.

The other shape is one field per definition your product has answers for, with only that definition's answers in it. That second one earns its keep, because Shopify's own storefront filters and its automated collection conditions can read a field of that kind. So one of your definitions becomes a filter your shoppers click, and a condition a collection is built on.

A definition with a single answer still arrives as a one-item list, so a theme has one shape to handle whatever you set `Is unique per product?` to.

Both fields are in a space the PIM owns and are left unpinned, so they stay out of your Shopify product editor until someone goes looking. The second shape's field is created on the first push that needs it, so a definition you have never used never appears in Shopify at all. Rename a definition, or edit its description, and the Shopify one is updated on your next push.

**Nothing about specifications is ever read back.** No data from a channel creates a group, a definition or a value here. An edit someone makes to either field in your Shopify admin is replaced on the next push, and [the Shopify integration](/integrations/shopify) covers the rest of that direction.

<Danger>
  Deleting a definition here also deletes the matching field in Shopify, and every value bound to it on every product in your store. Neither side has an undo.
</Danger>

That clearing rides along with your next few pushes instead of happening the moment you delete.

Groups and values own nothing of their own on a channel. Your group is only a heading inside the combined Shopify field, and the section name on a Google product detail. Your value is only an entry in a list.

**Where nothing is taken, there is nothing to set.** [The Square integration](/integrations/square) takes your categories and your primary brand and stops there. Amazon in the PIM is offer-only. Correcting a specification changes nothing on an Amazon listing, because the PIM never wrote that listing, which is the point [the Amazon integration](/integrations/amazon) makes about that whole direction.

## When something goes wrong

### What stops you deleting something

Deleting works from the bottom up. A group with definitions inside it is rejected, so is a definition with values under it, and so is a value one of your products still uses. Each message counts what is in the way, so you know how much of it there is, and each one comes to you in English whichever language you read the app in.

That order is also how you unwind two groups that turned out to mean the same thing, because there is no merge for specifications. Open a definition from your definitions list and change its `Group`. Open a value from your values list and change its `Definition`. Move the children across that way, then delete the parent you emptied.

The [taxonomy report](/pim/reports/taxonomy) is where you find what is worth unwinding. It counts your groups, definitions and values, ranks your values by how many products use them, and keeps a `Cleanup` panel listing your unused values and your empty groups and definitions. Those are exactly the ones the bottom-up rule lets you delete, and the panel links you into each list already filtered.

### When someone else edits the same record

If another person saves the same group, definition or value while you have it open, your save is rejected instead of overwriting theirs. A banner tells you the record changed and gives you `Reload`. That brings their version in and drops the edits you had not saved.

### Messages you can run into

| Message | What to do |
| --- | --- |
| `Cannot delete this group. 3 spec definitions belong to it.` | Move or delete those definitions first |
| `Cannot delete this definition. 5 spec values belong to it.` | Move or delete those values first |
| `Cannot delete this value. 12 products use it.` | Take the value off those products first |
| `A group with this name already exists` | Pick another name. `Color` and `color` count as the same one |
| `A spec definition with this name already exists in this group` | Pick another name, or put your definition in a different group |
| `This value already exists for this definition` | Pick another answer, or check whether you already have the one you wanted |
| `A required specification has no value on this product. Add a value, or make the specification optional.` | Fill that specification in on your row, or turn `Is required?` off |
| `A specification that allows only one value has more than one on this product. Keep one value, or make the specification allow multiple.` | Cut your cell down to one answer, or turn `Is unique per product?` off |
| `A spec group is not allowed for this product's categories. Assign one of the group's categories to the product, or pick a spec from a compatible group.` | Give your product one of the group's categories, or use a group that already covers it |
| `A spec definition is excluded for one of this product's categories. Pick a different spec, or remove the conflicting category from the product.` | Use a different definition, or take that category off your product |
| `A field contains characters reserved for the spec cell format.` | Take the `>`, the `=` or the pipe out of your name or your answer |
| `The referenced spec group was not found. Import spec groups first.` | Run the spec groups import, then run yours again |
| `This unique-spec definition already has a different value. The existing value was kept.` | Nothing failed. Use `Replace` instead of `Append` if you wanted your file to be the one that counts |

## Where to go next

<Columns cols={2}>
  <Card title="Categories" icon="folder-tree" href="/pim/catalog/categories">
    The grouping that decides which specifications a product gets at all.
  </Card>

  <Card title="Products" icon="package" href="/pim/catalog/products">
    The dialog where you pick values, and the save that commits them.
  </Card>

  <Card title="Imports" icon="upload" href="/pim/uploads/imports">
    Building the three levels from files, and the rest of the wizard.
  </Card>

  <Card title="Taxonomy report" icon="chart-bar" href="/pim/reports/taxonomy">
    What is unused, what is empty, and what is worth unwinding.
  </Card>
</Columns>
