# Custom fields

> Add your own fields to products and variants, such as a fabric, a care guide or a size chart, with rules for what can be filled in, and send them to your website.

Source: https://docs.bifrostorbit.com/commerce/everyone/custom-fields/

Custom fields are facts your products need that Commerce Orbit has no field for, such as **Fabric** for every jacket or **Care guide** for every boot. Admins set them up under **Custom fields**; Editors fill them in on each product.

## Add a field

Choose **New field** and fill in:

- **For:** **Each product**, or **Each variant** when every size or colour has its own value, such as the length of each pole size
- **Name**, such as Fabric, and the **key** your website reads it by, such as `fabric`. The key is made from the name; it uses lower-case letters, numbers and underscores.
- **Type:** what can be filled in

| Type | Holds | Example |
| --- | --- | --- |
| **Text** | Words, with an optional list of choices or a pattern | `3-layer Gore-Tex` |
| **Number** | A number | `1.18` |
| **Yes or no** | A switch | Yes |
| **Date** | A day | `2026-11-01` |
| **Web address** | A link | `https://northwilds.com/care/leather/` |
| **JSON** | Structured data for developers | `{ "chest": [96, 104, 112] }` |
| **Image** | An image from **Media** | A size chart |

- **Fewest** and **most** characters for text, or the **lowest** and **highest** number
- **Choices** for text, such as Wool, Down and Synthetic, so everyone writes them the same way
- **Pattern** for text, a regular expression such as `[A-Z]{2}-\d{4}`
- **Required:** a product can't be saved without it
- **Show to websites and apps:** turn off for fields only your team needs, such as a supplier code

The key and the type can't change once the field exists, because your website reads the field by its key. The name, the help text and the rules can.

## Fill them in

Custom fields show at the bottom of every product, under **Custom fields**. Variant fields show once for each variant. When a rule isn't met, the field says why and the product can't be saved until it is fixed.

## On your website

The Storefront API, GraphQL and CMS Orbit's product blocks carry the fields as `metafields`, by key:

```json
{ "fabric": "3-layer Gore-Tex", "care_guide": "https://northwilds.com/care/shells/" }
```

Only fields shown to websites are sent. See [The Storefront API](https://docs.bifrostorbit.com/commerce/developers/storefront-api/).

## Remove a field

**Remove** takes the field off the product form and out of the API. Products keep what was filled in, so adding a field with the same key and type brings the values back.
