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

# Brands

> Give each product its brand, or several of them when it is a collaboration, and every integration you sell on gets that brand with the product.

A brand is a label you make once and then attach to as many products as you want. The brand has the name, a description, links to the brand's own pages, a logo and a banner. You write all of that in one place, and every product you attach the brand to shares it.

Most people create brands for one of three reasons. They want to group their products by who makes them, they want the brand field filled in on the stores and marketplaces they sell through, or they want to find products by maker later. A product can have several brands, and a product with no brand at all is fine.

You find your brands under `Catalog`, in `Brands`. The `Create brand` button is at the right end of the toolbar above the list. The table under it lists every brand you have, one row each, with a count of how many products use it, and clicking a row opens that brand so you can edit it.

One thing to know first: brands do not nest. There is no parent brand and no sub-brand, so your brands are in one flat list however many you have. If you need 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 brand | Duplicate, merge and delete | Change which accounts get it |
| --- | --- | --- | --- |
| Admin | Yes | Yes | On one brand, or on a selection |
| Manager | Yes | Yes | On one brand, or on a selection |
| Editor | Yes | No | On one brand at a time |

Below Manager you get no buttons at the end of a row, no checkboxes down the left of the list, and no selection bar. Everything those lead to is above your role, so you see nothing you cannot use. Roles are set in [team, roles and permissions](/team#what-each-pim-role-can-do).

### Merging and deleting cannot be undone

<Danger>
  A deleted brand is gone, and a merge deletes every brand you merged away. Neither one has an undo, and nothing keeps a copy. Export your brands first if you want one.
</Danger>

## How to create a brand

<Steps>
  <Step title="Open the brand dialog">
    From `Catalog`, select `Brands`, then click `Create brand` at the right end of the toolbar above the list. A dialog opens over the page with the brand's fields running down it.
  </Step>

  <Step title="Name the brand">
    Type into the `Name` field at the top of the dialog. The `Slug` field at the bottom fills itself in as you type.
  </Step>

  <Step title="Describe it and add its links">
    Write a description in the editor under `Name`. Under that is an empty row for a website: type the address, then click the `+` button inside the address box. You can skip both.
  </Step>

  <Step title="Upload the images">
    Below the website rows are three drop areas, labeled `Logo`, `Banner` and `Resources`. Drop an image on `Logo`, another on `Banner`, and put anything else you want kept with the brand on `Resources`.
  </Step>

  <Step title="Save it">
    Fill in `Meta Title` and `Meta Description` near the bottom if you want them, then click `Create`.
  </Step>
</Steps>

That is the whole flow. Your brand appears in the list right away, and a small message confirms it was created. If you have connected an integration that keeps brands of its own, the brand starts going there on its own.

Only `Name` and `Slug` are required, so a brand with nothing else on it still groups your products and still goes to your integrations. Everything below explains the dialog, the list and the three actions at the end of every row. You do not need any of it to create one.

## Every option in detail

The brand dialog is the same dialog whether you are creating a brand or editing one, and it opens either from `Create brand` above the list or from clicking a row. The button at the bottom of it reads `Create` on a new brand and `Update` on one you already have. The list under the toolbar is where you find, filter, duplicate, merge and delete your brands.

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 to come back to.

### What goes in each field

Your fields run down the brand dialog in this order, from the top. That dialog opens from `Create brand` above the list, or from clicking any row in the list.

| Field | What it is for |
| --- | --- |
| `Name` | What you and your team call the brand. It also fills the brand field on the integrations that keep one |
| The description editor, under `Name` | Rich text that goes to your integrations |
| The website rows, under the description | One row per link to the brand's own pages |
| `Logo` | The small mark shown beside the brand in the list. Images only |
| `Banner` | The wide image, and the one that goes to your integrations. Images only |
| `Resources` | Spec sheets, catalogs and anything else you want kept with the brand. Any kind of file, and nothing here is published |
| `Meta Title` and `Meta Description` | What a search engine shows |
| `Slug` | The part that ends up in a web address |

The two search-engine fields count your characters as you type and turn the counter orange past 60 and 160 characters. That is a suggestion and not a stop, so you can keep typing to 200 and 300 if your text needs the room.

<AccordionGroup>
  <Accordion title="Putting an image inside the description">
    The description editor has its own image button. Clicking it asks you where the image should come from: your [asset library](/pim/assets), or a web address you type in.

    An image you insert this way stays attached to the brand after you save, so nothing tidies it away while the description still uses it.
  </Accordion>
</AccordionGroup>

### Adding the brand's websites

Your website rows are in the brand dialog between the description editor and the three image areas. Each row is a pair: a `Label` box on the left for what to call the link, and an address box on the right. Addresses have to start with `http://` or `https://`.

Adding one is a two-part move, and this is where people get stuck. The top row is not a website yet, it is where you type a new one. Type the address, then click the `+` button inside the right-hand end of that same box, or press Enter. The row drops into the list under it and the top row empties, ready for the next one.

Once a row is in the list, you can edit either box in place. Two small buttons are at the right end of every row: one opens that address in a new tab, and one takes the row out. The open button is grayed out until the address is valid. With two rows or more you also get a drag handle on the left of each row, so you can put them in the order you want. The first row is the one the list shows.

| Message | When you get it |
| --- | --- |
| `Must start with http:// or https://` | The address in a row has no `http://` or `https://` in front |
| `Duplicate URL` | A row repeats an address another row already has |
| `This URL is already in the list` | The address you are about to add repeats one you already have |
| `Maximum of 10 URLs reached` | The list is full, so the top row turns gray until you take one out |

A repeat is judged loosely, so you do not have to match your own typing exactly. Capitals and a trailing slash are ignored, which makes `https://acme.com/` and `HTTPS://ACME.COM` the same address as far as the check is concerned.

### Where the slug comes from

The `Slug` field is at the bottom of the brand dialog. It is the part of your web address that names this brand.

While you are creating a brand, the slug follows the `Name` field as you type, so `Garmin International` gives you `garmin-international`. It stops following the second you edit the slug yourself, because at that point you have told it what you want.

On a brand that already exists, the slug never follows a name edit. So renaming `Garmin` to `Garmin International` leaves your web address on `garmin` until you change the slug too. Check the slug before you rename anything, because a slug that moves takes every address built from it with it.

Whatever you type in the slug box is tidied into slug shape when you save, so capitals and spaces come back as lowercase and hyphens.

### When a name or a slug is already taken

Two of your brands cannot share a name, and two cannot share a slug. The brand dialog checks both across your whole organization while you type, and shows the problem under whichever field it came from. The `Create` button stays inactive until you pick something else.

The message names which of the two clashed, so read the one under the field you were typing in and change that field. On a name, changing only the capitals is not enough.

<AccordionGroup>
  <Accordion title="Why two of your brands can still differ only in capitals">
    The dialog treats `Garmin` and `garmin` as the same name and rejects your second one, so you cannot make that pair yourself.

    A sync from an integration or a products import does not go through the dialog, and its check is stricter about capitals. So a store that spells the name `garmin` can hand you a second brand beside the `Garmin` you already had. Merge the two if you end up with both.
  </Accordion>
</AccordionGroup>

### Saving while someone else has the brand open

The top of the brand 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, and you get a message saying the brand was changed by another user. A notice appears above the fields with a `Reload` button on it. Reloading brings their version in and throws your unsaved edits away, and 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. The dialog just refreshes itself and the changed fields flash.

### Reading the brands list

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

| Column | What it shows |
| --- | --- |
| `Logo` | The brand's logo, or a dash when it has none |
| `Name` | The name, and what the list is sorted by when you open it |
| `Slug` | The slug |
| `Websites` | The first link, under its label when you gave one, with a `+2` badge standing for the rest |
| `Products` | How many products use the brand, whatever state each product is in |
| `Created at` and `Created by` | When the brand was made, and who or what made it |
| `Updated at` and `Updated by` | When it last changed, and who or what changed it |

The list opens 50 rows at a time, and the page-size control at the bottom right switches you to 25 or 100. Three more buttons are at the right of the toolbar above the list. `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 by it. `Logo` and `Websites` are the two you cannot sort or filter on, because one is a picture and the other is a list.

### Searching and filtering your brands

`Search` is at the left end of the toolbar above the list. Click it, type, and it looks at three things at once: the name, the slug and the description. Both the search and the filters run across every brand you have, not just the page you are looking at, so a match on page 40 still turns up.

`Filter` is at the right of that same toolbar, between `Columns` and `Density`. Click it and a panel opens with one empty condition row waiting for you. A condition has three parts, left to right:

| Part of the row | What you do with it |
| --- | --- |
| The `Filter by` dropdown | Pick which column to filter on |
| The `Operator` dropdown | Pick the comparison, and the choices change with the column you picked |
| The `Value` box or dropdown | Type or pick what you are looking for |

`Add filter` at the bottom of the panel gives you a second row. As soon as you have two, a `Logic operator` dropdown appears above them: set it to `And` to require both conditions, or to `Or` to accept either. `Remove all` empties the panel, and the small trash button at the left of a row takes that one row out.

Which comparisons you get depends on the column:

| Kind of column | The choices you get |
| --- | --- |
| `Name` and `Slug` | `contains`, `does not contain`, `equals`, `does not equal`, `starts with`, `ends with`, `is empty`, `is not empty`, `is any of` |
| `Products`, which is a count | `equals (=)`, `not equal to (≠)`, `greater than (>)`, `greater than or equal to (≥)`, `less than (<)`, `less than or equal to (≤)`, `is any of` |
| `Created by` and `Updated by` | `is`, `is not`, `is any of` |

A count column has no `is empty`. A brand with no products has a count of `0`, not a blank, so `equals (=)` with `0` is the comparison that answers your question. The section below does exactly that.

<AccordionGroup>
  <Accordion title="Every value the Created by and Updated by filters give you">
    Not everything that makes a brand is a person, so the `Value` dropdown mixes people with the things that write on their own. Five catch-all choices come first: `Any person`, `Any import`, `Any data source`, `Any integration` and `System`. Under those you get one entry per individual person, import, data source and integration that has actually touched a brand of yours.

    Someone who has left your team still appears, with `(removed)` after their name, so a filter you saved months ago keeps selecting the same rows.

    The list only shows what your own brands have actually used, so a short list here is normal and means nothing is wrong.
  </Accordion>
</AccordionGroup>

### Finding the brands no product uses

This is the most common thing people want from the filters, so here it is end to end. Click `Filter` in the toolbar above the list. In the condition row that opens, set `Filter by` to `Products`, set `Operator` to `equals (=)`, and type `0` into `Value`. The list now shows every brand no product is using, which is your cleanup list.

The same panel answers a second common question. Set `Filter by` to `Created by`, leave `Operator` on `is`, and pick `Any integration` in the `Value` dropdown. You get the brands a store invented on its own rather than the ones your team typed. Changing that last choice to `Any import` or `Any data source` splits the rest the same way.

### Saving a filter as a view

A set of filters you use often is worth keeping. Set any condition in the filter panel, which opens from `Filter` in the toolbar above the brands list, and a control appears in the page header up beside the title, reading `Unsaved View`. Two buttons are next to that control: `Reset` puts the list back the way it was, and `Save View` keeps this set of filters under a name.

Once you have a saved view, that same control names whichever view you are looking at, and it says `Unsaved Changes` when you have changed something on it. `Save As` then makes a second view instead of overwriting the first, and `Set as Default` decides which view you get next time. A default is yours alone, so setting one does not change what your teammates see. [Saved views](/pim/saved-views) and [filters](/pim/filters) cover both in full.

### Putting a brand on a product

You do this from the product, never from the brand. The brand dialog has no place to add products, and that is the one thing about brands that surprises people most.

Open the product from `Catalog`, in `Products`, scroll to its `Taxonomy` section, and click the `Brands` field. A picker opens with every brand you have in it and a search box at the top. Check as many as you want, then click `Save` at the bottom of the picker. Closing the picker any other way throws away what you checked.

<Info>
  Your primary brand is whichever one is first in the product's `Brands` field. That is the one that fills the brand field on the integrations that keep one, so the order you check them in matters.
</Info>

The order is the order you picked them in, and nothing drags. To change which brand is primary, clear the `Brands` field and choose again, starting with the one you want first. Your other brands still count the product among their members wherever an integration keeps a page for the brand.

<AccordionGroup>
  <Accordion title="Why two products can suddenly stop saving the same part number">
    Your brands decide where a part number has to be unique. You add one from the product's `Identifiers` section, by setting a row's `Type` dropdown to `Part Number` and typing into `Value`.

    Two of your products clash on a part number only when they share at least one brand, and a product with no brand never clashes with anything. So the same part number is fine on two products until the day you give both of them a brand in common. From then on your save is rejected with a message about a part number already in use, whether you were editing the number or adding the brand.

    The comparison ignores capitals, so `ABC-123` and `abc-123` count as the same part number. Spaces and punctuation do count, so `ABC-123` and `ABC 123` are two different part numbers and neither one blocks the other. [Identifiers](/pim/catalog/identifiers) has the rest of those rules.
  </Accordion>
</AccordionGroup>

On the products table, `Filter` in the toolbar lets you filter by `Brands` the same way. That dropdown lists only brands that already have at least one product, 50 matches at a time, so an unused brand is missing from it by design.

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

Your list can grow without anyone clicking `Create brand`. Three things make brands for you.

| What made it | What you get |
| --- | --- |
| A sync from an integration | One brand per brand name it finds in the store, spelled exactly as the store spells it. A name over 100 characters is skipped, and that product arrives with no brand and a note against it |
| A products import | One brand per name in the `Brands` column, split on the brands separator, and the first name becomes the primary brand |
| A data source | Nothing on its own. Every incoming value gets a mapping step where you point it at a brand you already have, or at `+ Create as new brand` |

A products import matches each of your names on the name alone, ignoring capitals. A name it cannot find is handled by your answer to `If Brand does not exist:` on the import's `Options` step, and your three choices there are `Skip with warning`, `Create automatically` and `Fail the row`. Pick `Create automatically` when your file is the source of truth for brands, and `Skip with warning` when you would rather look at the misses yourself. Pick `Fail the row` when a product with no brand on it is worse to you than no product at all.

In a data source, every value has a `Mapped`, `New` or `Needed` badge until you have dealt with it, so nothing arrives unmapped by accident. [Data sources](/pim/uploads/data-sources) covers that badge.

If a data source has ever filled in part of a brand, a `Data Sources` button appears at the top of that brand's dialog. Clicking it shows you which source filled each field, marked `Selected`. A `Fallback` badge means your rules did not settle it. Either no source matched your filters and the rule ran without them, or the rule still could not choose and the source updated most recently was taken.

### Editing a lot of brands at once

The list gives you no way to edit several of your brands in place. The way to do it is to export your brands, edit the file in a spreadsheet, and import it back.

From `Uploads`, select the `Imports` tab, click `Create import`, and pick the `Brands` card on the first step. Brands have their own import and their own export, separate from the products ones, so you are working on brands alone and nothing else moves.

An import finds each brand by `Brand Name`, `Brand Slug` or `ID`, and you choose which on the wizard's match-rules step. `Brand Name` ignores capitals and `Brand Slug` has to match exactly. Those three names read in English whatever language you use the app in.

To put the id in your file, turn on `Include system fields` under `Advanced` on the `Options` step of the [export](/pim/uploads/exports) wizard. You get a `Brand ID` column, and matching on it is the safest option there is, because a name and a slug can both be edited and an id cannot.

<AccordionGroup>
  <Accordion title="Every column a brands import and export uses">
    Nine columns go both ways, in this order: `Brand Name`, `Description`, `Websites`, `Logo URL`, `Banner URL`, `Resource URLs`, `Slug`, `Meta Title` and `Meta Description`.

    `Brand Name` is required when you are creating. On an update your match rules find the brand instead, so the name is only there if you want to change it. `Description` takes plain text or HTML and reads which one you gave it.

    A websites cell has `Label=URL` pairs joined by the websites separator, so you write `Homepage=https://acme.com`, then the separator, then `About=https://acme.com/about`. A bare address with no label is accepted too. The `=` between the label and the address is fixed, and only the separator between pairs is yours to change.

    An export adds a tenth column, `Product Count`, which an import ignores because the count is calculated from your products.

    Your three image columns come out as temporary links, so download the files before they stop working.
  </Accordion>
</AccordionGroup>

### Duplicating a brand

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

It gives you `Garmin (Copy)` with the slug `garmin-copy`, then `Garmin (Copy 2)` with the slug `garmin-copy-2` if you do it again. You get the description, the links, the search-engine fields and all three sets of images. You get no products, so your duplicate starts on nothing and a message tells you which brand was copied.

### Merging two brands into one

Merging is how you fix the same brand existing twice in your list. It moves every product from the brands you are merging away onto the one you are keeping, then deletes the rest. From the brands list, it is the only thing that moves your products between brands.

`Merge` is in three places. You find it at the end of the brand's row, in the `⋮` menu at the top of the brand dialog, and in the selection bar once you have checked two rows or more.

<Steps>
  <Step title="Open the merge dialog">
    Click `Merge` at the end of a row, or check two rows or more and click `Merge` in the selection bar that appears.
  </Step>

  <Step title="Say which brand you keep">
    Starting from a row, the brand you came from is the one you keep, and you pick the rest from a searchable list of every brand you have. Starting from the selection bar, you pick the one to keep out of the rows you checked. Click `Next`.
  </Step>

  <Step title="Read the impact">
    The second step counts what is about to happen, and gives you a `Rename` button beside the brand you are keeping if you also want to give it a new name. Read the three counts, then click `Merge`.
  </Step>

  <Step title="Confirm">
    A dialog spells out what you are about to do. There is nothing to type. Click `Merge` again.
  </Step>
</Steps>

The three counts on that second step are what to read before you commit:

| Count | What it means |
| --- | --- |
| `Products affected` | How many products move to the brand you are keeping, and how many of them were on both sides already and become one |
| `Import mappings repointed` | How many saved import mappings will point at the brand you are keeping |
| `Asset assignments deleted from losers` | How many images and files come off the brands you are merging away |

**Renaming the survivor is optional and it leaves the slug alone.** Your new name is checked against your other brands as you type, and capped at 100 characters like any brand name. Because the slug does not move, every web address built from it keeps working.

**Your merge runs in the background.** Starting it tells you so, and you can keep working. When it finishes you get a count of the brands merged and the products reassigned, and the list refreshes itself. Every product that moved is published again after that, so your integrations catch up on their own.

Two things surprise people about the result. A product that was already on both brands keeps the earlier of its two positions. That can move the brand you kept up your product's list and change which brand counts as primary. And images do not move: a logo or banner on a brand you merge away comes off with it, and the brand you kept keeps only what was already its own. The files themselves stay in your library, so you can attach them again from [assets](/pim/assets).

While a merge is running on a brand you picked, the `Merge` button for it is unavailable and hovering it tells you why. Wait for the first merge to finish and start the second one after.

### Deleting a brand

`Delete` is in the same three places as `Merge`. Look at the end of your brand's row, in the `⋮` menu at the top of the brand dialog, and in the selection bar once you have checked a row.

A brand still attached to your products cannot be deleted, and the message tells you how many are in the way. Take the brand off those products first, or merge it into the brand you are keeping.

Clicking `Delete` opens a dialog that names the brand and then lists everywhere it is about to disappear from: `PIM` first, then every connected account where the brand is live. That list takes a moment to load, so read it rather than clicking right through. A brand that goes nowhere says so instead.

Deleting is not limited to the rows you can see. Check the box in the header of the list to take the whole page. When more brands match your filters than the page shows, a `Select all` button appears in the selection bar with that number on it. Click it and the delete covers every matching brand, not just the page. A run that big goes into the background with its own progress, and you can cancel it while it works. Your set is fixed the moment you confirm, so a brand 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 `Slug` field | 200 characters |
| Websites on a brand | 10 |
| The `Label` box on a website row | 50 characters |
| The `Logo` area | 1 image |
| The `Banner` area | 1 image |
| The `Resources` area | 250 files |
| The `Meta Title` field | 200 characters |
| The `Meta Description` field | 300 characters |
| Brands in one bulk action | 100,000 |

### What you cannot do with a brand

| You cannot | Do this instead |
| --- | --- |
| Put one brand under another | Use [categories](/pim/catalog/categories), which do nest |
| Add products from the brand dialog | Open the product and use its `Brands` field |
| Move products between brands from the list | Merge the two brands |
| Edit several brands in place in the list | Export them, edit the file, import it back |
| See what changed on a brand and when | Read the `Updated at` and `Updated by` columns in the list |
| Delete a brand while products still use it | Take it off every product, or merge it into another |
| Undo a delete or a merge | Nothing. Both are permanent |

## What a brand becomes on each integration

What happens to your brand depends on one thing: whether that integration keeps brands as real objects of its own, or only as a word on the product.

| Integration | What a brand becomes there |
| --- | --- |
| Shopify | One collection per connected account, plus the store's own `vendor` field filled in from the primary brand |
| BigCommerce | One brand per connected account, with your name and your two search-engine fields, and the product points at it from its primary brand |
| Square | An item attribute named `Brand`, filled in from the primary brand |
| Google | The product's `brand` attribute, from the primary brand, cut at 70 characters |
| Amazon | Nothing. [Amazon](/integrations/amazon) takes your offer and never product content |

That difference decides what your brand edits are worth. Where the brand is a real object, editing its description or its banner changes something the shopper can see. Where the brand goes out as a word on the product, only your name matters and everything else on the brand stays in the PIM.

BigCommerce is the case to watch, because it takes less than it looks like it should. It gets your name, your `Meta Title` and your `Meta Description`. It does not get your description or any of your images.

### What a Shopify collection gets

Every brand becomes one collection per connected Shopify account, created as soon as the brand exists and before any product goes into it.

The address comes from your slug with `brand-` in front, so the brand `garmin` is the collection `brand-garmin`. That is why the slug matters more than the name here.

The collection gets your name as its title, your description, your two search-engine fields, one image and its list of products. The image is your `Banner`. Your `Logo` goes in its place when there is no banner, so a brand you only gave a logo still goes to the store with a picture. Clear both and the collection loses its image on the next push.

**You decide membership here and the PIM writes it there.** On every push the PIM decides which products go in your collection and adds and removes to match. So a product you added to the collection inside Shopify comes back out. Nothing about the collection is ever read back into your catalog, and [integrations](/pim/integrations) covers that one-way rule for every object the PIM manages.

**Editing the slug moves the address and leaves a redirect behind**, pointing the old address at the new one, so links already out in the world keep working. Editing the name alone leaves your address where it was.

Your collection is published when it is created and never again. So if you unpublish it in Shopify yourself, the PIM leaves it unpublished, which is what lets you hide a collection you are not ready to show. Delete it there and the PIM builds it back on the next push.

### Stopping a brand from going to one account

Every account you have connected shows up as a badge at the top of the brand dialog. Hover one and a panel opens with a `Sync` switch beside the account name, along with when the brand was last pushed there and any error from that push.

Turning that switch off stops the account getting the brand. If the brand is already live there, you are asked to confirm first, and the only choice you get is deleting it from that channel.

<Warning>
  Turning `Sync` off for a brand an account already has deletes your brand's object on that channel. Unlike a product, there is no archive and no leave-it-alone.
</Warning>

The switch only has something to remove where the integration keeps your brand as an object of its own. Where the brand goes out as part of the product, turning it off takes nothing away over there.

To do the same to many brands at once, check the rows in the list and click `Update integration sync` in the selection bar. A dialog opens with one choice per connected account: `Turn sync on`, `Turn sync off` or `Leave unchanged`. Pick one for each and click `Apply`. The list only gives you that button once you have connected an integration that keeps brands of its own.

## When something goes wrong

### Messages in the brand dialog

| Message | What to do |
| --- | --- |
| `A brand with this name already exists` | Pick a different name. Changing only the capitals is not enough |
| `A brand with this slug already exists` | Pick a different slug |
| `This brand was changed by another user, reload to see the latest.` | Click `Reload` on the notice above the fields, then make your edit again |
| `Failed to save brand` | Try saving again. Nothing was written |
| `Failed to duplicate brand` | Try `Duplicate` again. No brand was created |

### Messages when you delete or merge

| Message | What to do |
| --- | --- |
| `Cannot delete this brand. 3 products use it.` | Take the brand off those products, or merge it into the one you are keeping |
| `Cannot delete brand: 3 products reference this brand.` | The same thing, reported against each row a bulk delete had to skip. The other rows still deleted |
| `A merge on one of these records is already running. Wait for it to finish before starting another.` | Wait for that merge to finish, then start yours |
| `Someone else modified one of these records. Reload and try again.` | Someone edited a brand between your preview and the run. Reload and preview again |
| `One of the selected records was deleted before the merge ran. Reload and try again.` | Someone deleted one of them first. Reload and pick again |
| `A record with the chosen new name already exists. Pick a different name.` | Rename the survivor to something else in the merge dialog |
| `The merge timed out and was reclaimed. Try again.` | Start the merge again from the same brands |
| `The merge failed. Please try again.` | Start it again. Nothing was half-applied |
| `This selection exceeds the 100,000-row limit for one bulk action. Narrow the filter and retry` | Narrow the filter, delete that set, then repeat |
| `Another bulk action is already running for your team. Try again shortly` | Someone on your team is running one. Wait for it to finish, then start yours |

A note under the impact counts warns you when one of your imports is running, because rows for those brands may fail and need importing again after that. It does not stop the merge.

### Messages from an integration

These arrive on the brand's badge at the top of the brand dialog, on the account that rejected it, and never under the fields.

| Message | What to do |
| --- | --- |
| `The handle 'brand-garmin' is already used by another collection in Shopify. Use a unique slug for this brand.` | Give the brand a different slug. The PIM never settles for a numbered variation on its own |
| `BigCommerce already has a brand named "Garmin" that is not linked to this one.` | Rename one of the two, or delete the one in BigCommerce so the PIM can create its own |

### Messages from a products import

These two are about brands and neither one appears on the brands list. You read them against the row that failed, in the results of the [import](/pim/uploads/imports) that produced them.

| Message | What to do |
| --- | --- |
| `The referenced brand was not found.` | Your file names a brand you do not have. Set `If Brand does not exist:` to `Create automatically` on the import's `Options` step, or add the brand first |
| `A part number is already in use for one of the selected brands.` | Two products would share a part number under one brand. Change the number, or take that brand off one of them |

## Where to go next

<Columns cols={2}>
  <Card title="Products" icon="package" href="/pim/catalog/products">
    The editor where your product gets its brands, and the field whose order sets the primary one.
  </Card>

  <Card title="Identifiers" icon="barcode" href="/pim/catalog/identifiers">
    Part numbers, and the brand-shaped scope that decides when two of yours clash.
  </Card>

  <Card title="Imports" icon="upload" href="/pim/uploads/imports">
    Match rules, the four modes, and what happens to a row your file cannot place.
  </Card>

  <Card title="Integrations" icon="plug" href="/pim/integrations">
    Per-account settings, and where you find a sync error.
  </Card>
</Columns>
