---
title: "Manage categories and labels"
description: "Four category vocabularies coexist in Epom — advertising, inventory, IAB and domain — plus labels. What each one classifies, who can see it, and exactly what a delete takes with it."
type: "howto"
audience: [admin]
keywords: [categories, taxonomy, advertising categories, inventory categories, publisher categories, internal category, public category, IAB categories, domain categories, labels, default label, delete category]
ui_path: "Admin → Categories & labels"
---

Fetch the complete documentation index at: https://epom.com/ad-server/docs/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Manage categories and labels

**Admin → Categories & labels** is where you maintain the vocabularies everything
else classifies entities with. Four unrelated category systems coexist in Epom and only
two of them are maintained in the new UI, so the first job is working out which one you
actually mean. Labels sit alongside them: free-text tags on banners, campaigns and
placements that feed matching rules, auto-linking and the analytics filters.

## Who this is for

Network administrators. Each page in the group is a separate Admin UI permission, so an
administrator may hold one and not the others — see [User roles](https://epom.com/ad-server/docs/guides/admin/users-and-roles.md).
*Custom country groups*, in the same menu group, is covered in [Matching rules and network defaults](https://epom.com/ad-server/docs/guides/admin/rules-and-defaults.md).

## Prerequisites

- None. Both category tables ship seeded with a 15-entry starter list (Arts, Games,
  Business, Health, Sports …) that you can extend, rename or prune. The label table
  ships empty.

## The four category systems

They are unrelated tables with unrelated jobs. Nothing links them, and a name that
exists in one has no meaning in the others.

| Vocabulary | Maintained | Carried by | Read by |
|---|---|---|---|
| **Advertising categories** — demand side | Admin → Categories & labels → Advertising categories | **Advertisers** only (a campaign or banner inherits its advertiser's categories through the hierarchy) | Campaign matching rules; the Category filter in the advertisers tree, grids, shares and analytics |
| **Inventory categories** — supply side | Admin → Categories & labels → Inventory categories | **Sites**; also the *Auto-link categories* set on campaigns and banners | Inventory matching rules; new-placement auto-linking; the Category filter in the publishers tree, grids, shares and analytics |
| **IAB categories** — the IAB Content Taxonomy 1.0 | **Nowhere.** 391 rows seeded with the database; there is no admin page and no REST endpoint that writes them | Sites, zones and placements — both a *declared* list and a *blocked* list | OpenRTB bid requests only: declared → `cat` / `sectioncat` / `pagecat`, blocked → `bcat` |
| **Domain categories** — deprecated | Not in the console | Sites | Not a content taxonomy at all: a legacy grouping of serving domains, superseded by the ad-serving domains Epom support manages for your network |

> **Note:** "IAB categories" and the network's own taxonomies solve different problems. Use
> IAB for programmatic signalling to DSP partners; use advertising and inventory
> categories for in-platform classification, matching rules and reporting. Blocking
> unwanted creatives is covered in
> [Keep unwanted ad categories off your inventory](https://epom.com/ad-server/docs/guides/targeting/block-ad-categories-on-inventory.md)
> — that page explains which lever actually stops demand, and which is only a request.

> **Corner case:** the IAB list is fixed. There is no supported way to add a code — the taxonomy is
> IAB 1.0 (`IAB1` … `IAB26` plus sub-codes such as `IAB25_3`), not the newer 2.x/3.x
> content taxonomy. If a DSP asks for a 2.x code, map it to the closest 1.0 code.

## Steps

### Add a category

1. Go to **Admin → Categories & labels → Advertising categories**, or **Inventory
   categories** — the two pages are identical in shape and behave the same way.

   ![Advertising categories admin page: the add bar above a grid of categories with Name and Type columns](https://epom.com/docs-images/ad-server/taxonomies/categories-grid.webp)

2. In the bar above the grid, type the **Name**, pick the **Type** (*Public* or
   *Internal*), and click **Add**. Pressing Enter in the Name field does the same thing.
3. A **Done** toast confirms it and the grid reloads with the new row.

Two failures you will meet here, both as a red toast rather than a message under the
field:

- Clicking **Add** with the Name box empty answers *Enter a category name first.* —
  the request is never sent.
- A name that already exists in that taxonomy answers with the literal text
  **`{Unique.name}`**. That is a missing translation, not a code you need to look up; it
  means "a category with this name already exists". Names are compared
  case- and accent-insensitively, so `arts` collides with `Arts`.

### Rename a category or change its type

There is no separate edit page — both columns are edited in place.

1. Click the **Name** cell (it carries a faint pencil). It turns into a text box with the
   current value selected.
2. Type the new name and press **Enter**, or click away — either commits. **Esc**
   discards. Nothing is sent if you did not actually change the value.
3. Click the **Type** cell to open a small **Public / Internal** list and pick the other
   value. It saves on pick.

   ![Advertising categories grid with one row's Type cell open in place, offering Public and Internal](https://epom.com/docs-images/ad-server/taxonomies/category-edit.webp)

4. Each committed cell saves on its own and answers **Done**.

Renaming is safe: advertisers, sites and rules point at the category record, not at its
text, so every reference follows the new name.

### Delete a category

1. Tick one or more row checkboxes. The **Delete** button lights up and counts your
   selection — *Delete (3)*.
   ![Advertising categories grid with three rows ticked and the Delete (3) button](https://epom.com/docs-images/ad-server/taxonomies/category-delete.webp)
2. Click it. A **Confirm** dialog asks *Delete record(s)?*
3. Click **Delete**. Each row is deleted with its own request and a single **Done** toast
   follows.

There is **no in-use check** anywhere in this flow. The category is removed even when
advertisers, sites, banners, campaigns and rules reference it — see
[What a delete takes with it](#what-a-delete-takes-with-it) for exactly which rows go.

### Maintain labels

Labels are a single flat list of free-text values shared by banners, campaigns and
placements. They have no Public/Internal notion and no demand/supply split.

1. Go to **Admin → Categories & labels → Labels**. The grid has four columns: **Name**,
   **Default**, **Object** and **Placement type(s)**.

   ![Labels admin page listing labels with the Default, Object and Placement type(s) columns](https://epom.com/docs-images/ad-server/taxonomies/labels-grid.webp)

2. Click **Add**. A small **Add label** dialog opens with four controls. Type the
   **Name** — until you do, its **Add** button stays disabled.

   ![Add label dialog with a name entered, Default ticked and the Object and Placement type(s) pickers enabled](https://epom.com/docs-images/ad-server/taxonomies/label-add.webp)

3. Leave **Default** unticked for an ordinary label; **Object** and **Placement type(s)**
   stay greyed out and are not submitted. Click **Add**; a **Done** toast follows.
4. Back in the grid, edit any label in place: click the **Name** cell to rename, tick or
   untick **Default**, and — on a default label only — click **Object** or **Placement
   type(s)** to change them. Non-default rows show a dash in those two columns.
5. Delete works exactly as it does for categories: tick rows, **Delete**, confirm.

> **Note:** on creation a duplicate name is refused with *Label already exists*. That
> check only runs when the label is new; a **rename** onto an existing name surfaces as a
> generic failure rather than that friendly message.

### Make a label a default

A **default label** is applied automatically to entities as they are created — you do not
have to attach it by hand.

1. Tick **Default** on the label.
2. Set **Object** to **Banner** or **Placement** — those are the only two object types
   the platform supports here.
3. Pick one or more **Placement type(s)**. This is the filter, and it is required in
   practice: a default label whose placement-type set is empty matches nothing, because
   the lookup keeps only labels whose set *contains* the type being created.
   ![Label dialog with Default ticked, Object set to Placement and two placement types picked](https://epom.com/docs-images/ad-server/taxonomies/label-default.webp)

From then on the label arrives pre-attached: on a **new placement** whose type is in the
set, and on a **new banner** whose placement type is in the set. It applies at creation
only — an existing entity never picks the label up later, and removing it from one entity
does not affect the label itself.

## Options and fields

### Category (both taxonomies)

| Field | What it does | Default | Limits |
|---|---|---|---|
| **Name** | The value users pick on entity forms and in rule match lines. | — | Required; max 128 characters; unique within that one taxonomy, case-insensitively. The same name may exist in *both* taxonomies as two unrelated records. |
| **Type** | **Public** or **Internal** — see [Public vs internal](#public-vs-internal-categories). | Public | — |

Above the grid there are also a **Search** box (filters by name as you type) and a
**Type** filter (*All* / *Public* / *Internal*). Both filter the list in the browser;
the page fetches the first 1,000 categories in one call and pages them client-side, so a
taxonomy larger than that would be silently truncated — the list arrives capped and
nothing in the grid says so. Click **Name** or **Type** in the header to sort; untouched,
the grid shows the rows in the order the server returns them, which is creation order.

### Label

| Field | What it does | Default | Limits |
|---|---|---|---|
| **Name** | The label text, as it appears in every entity picker. | — | Required; max 64 characters; unique across all labels. Leading and trailing spaces are trimmed on save. |
| **Default** | Whether this label is attached automatically to newly created entities. | Off | — |
| **Object** | Which entity type the default applies to: **Banner** or **Placement**. | Placement | Only meaningful while **Default** is on; cleared on save when it is off. |
| **Placement type(s)** | Which placement types trigger the default: Site Placement, Non-standard Placement, Mobile Site Placement, Video Placement, Application Placement, Email Placement, Click-through Placement, Native Placement. | none | Only meaningful while **Default** is on; cleared on save when it is off. |

## Public vs internal categories

Every category is **Public** or **Internal**. The taxonomy itself is one list; what an
account user is offered is filtered by two role permissions per side —
*Show Public Categories* and *Show Internal Categories* — and a user who holds neither
gets an **empty** category picker, not a partial one.

The usual setup marks network-internal classification (payout tiers, quality buckets,
house-brand flags) **Internal** so publishers and advertisers never see those values,
while managers and admins see everything.

The Category field itself appears only for roles holding **Advertisers Categorization**
(advertisers) or **Inventory Categorization** (sites); a read-only grant shows it disabled.

## Where each vocabulary is used

| Consumer | Vocabulary | Where |
|---|---|---|
| Advertiser — **Category** multi-select | Advertising | Advertiser edit → Basic info. There is one field, not a primary + a list. |
| Site — **Category** multi-select | Inventory | Site edit → Basic info |
| Campaign / banner — **Auto-link categories** | Inventory | Basic info, shown once *Allow new placements auto-linking* is ticked. At least one category is required while the switch is on. |
| Banner — **Link to placements with label(s)** | Labels | Basic info, in the same auto-linking block. |
| Banner / campaign / placement — **Labels** | Labels | Basic info |
| Matching rules — match lines | Both categories **and** labels | A Campaign Rule matches advertising categories; an Inventory Rule matches inventory categories; either can match labels. See [Matching rules and network defaults](https://epom.com/ad-server/docs/guides/admin/rules-and-defaults.md). |
| Analytics — entity tree filters | Both categories **and** labels | The Label filter comes with a **Matching type** of *Match Any Label* or *Match All Labels*. |
| Site — **Domain category** | Domain | Site edit → Basic info |
| Site / zone / placement — **IAB category**, **Blocked IAB category** | IAB | The OpenRTB card (called *RTB configuration* on a placement) |

### Making a category or a label compulsory

Role permissions — **Advertiser Categories Required**, **Site Categories Required** and
**Banner / Campaign / Placement Labels Required** — turn the optional field into a required
one. The save is refused with a per-field error (*You must provide at least one category* or
*You must provide at least one label*) rather than a banner. The label rules only bite when the
user can also see the Labels field.

> **Corner case:** the two *Categories Required* rules carry no such guard. Granting
> **Advertiser Categories Required** to a role that does *not* have **Advertisers
> Categorization** leaves that role unable to create an advertiser at all: the form shows
> no category field, so the new record has no categories, and the save is refused every
> time. Same shape for **Site Categories Required** without **Inventory Categorization**.
> Always grant the Categorization permission alongside the Required one.

## What a delete takes with it

Nothing refuses the delete, and nothing is left dangling — every reference is removed with
the category or label, whichever route the delete comes through.

- **Advertising category:** every advertiser that carried it loses it, and so does every rule
  match line that named it.
- **Inventory category:** every site, every rule match line and every campaign and banner
  auto-link set loses it; the campaign's per-category rate rows go with it.
- **Label:** every banner, campaign and placement that carried it loses it, as do every
  banner's *Link to placements with label(s)* set and every rule match line that named it.
  A default label's configuration goes with the label.

## Corner cases and gotchas

> **Corner case:** a rule match line that named only the deleted category silently stops
> matching anything on that line — the line survives, empty. Rules are the least visible
> consumer of a taxonomy, so audit **Admin → Ad serving → Rules** after any delete.

> **Corner case:** deleting the last inventory category out of a campaign's or banner's
> auto-link set leaves auto-linking switched on with nothing selected. The entity keeps
> serving, but the next person to open and save it is blocked by *Select at least one
> category* until they pick one or turn auto-linking off.

> **Corner case:** a failed delete still reports success: you get a green **Done** and the
> row simply reappears when the grid reloads. If a row comes back, the delete did not happen.

> **Corner case:** *Show only used categories* changes the rule entirely. With that
> permission enabled, a user's category picker is built from the categories already
> attached to the advertisers or sites **shared with them** — so a category you have just
> created is invisible to those users until somebody who can see it assigns it somewhere.
> The Public/Internal filter still applies on top.

> **Corner case:** flipping a category from Public to Internal does not strip it from
> entities that already carry it, and a user who cannot see it will not wipe it by
> accident either — the save re-attaches the categories the current user is not permitted
> to see before writing. They just cannot see or re-add it.

> **Corner case:** an advertiser or site save that names a category id which no longer exists —
> for example one you deleted a moment ago while the entity form was still open — is refused
> rather than silently dropped from the list. Reopen the form to get the current list.

> **Corner case:** there is no merge tool. If two spellings of the same category have
> accumulated entities, re-categorise the entities by hand *before* deleting the
> duplicate — deleting it does not move its assignments anywhere.

> **Corner case:** the label picker on the campaign form is fed by an endpoint gated on
> *Banner Labels* **or** *Placement Labels*. A role
> granted *Campaign Labels* alone therefore sees the Label field on a campaign with an
> empty option list. Grant one of the other two alongside it.

> **Corner case:** with **Create Labels**, a network user can type a new label straight into
> the Labels picker on a banner, campaign or placement, and the save creates it network-wide.
> Without it, naming an unknown label is refused with *"Label … not found and you don't have
> permission to create new labels"*. Withhold it to keep the label list under admin control.

## Per-role notes

- **Administrators** need the matching Admin UI permission to change a vocabulary; building a
  rule needs only **Rules**.
- **Publishers, advertisers and network managers** assign categories on sites and advertisers
  but cannot create, rename or delete one.
- **Network users with Create Labels** can add new labels from an entity's Labels picker.
- **Read-only grants** show the Category or Labels field disabled; a **Can View** share is
  read-only whatever the grant.

## Related

- [Matching rules and network defaults](https://epom.com/ad-server/docs/guides/admin/rules-and-defaults.md) — matching rules, platform
  defaults, custom ad sizes and country groups
- [Keep unwanted ad categories off your inventory](https://epom.com/ad-server/docs/guides/targeting/block-ad-categories-on-inventory.md)
  — IAB blocking versus name blocks, and which one is a hard stop
- [Attach matching rules to an entity](https://epom.com/ad-server/docs/guides/targeting/entity-matching-rules.md) — how
  account users apply category/label rules per entity
- [Admin area map](https://epom.com/ad-server/docs/guides/admin.md)