---
title: Configurable Options
description: Configurable options are custom fields attached to a product or a product group, each with its own visibility and locking behaviour. Defining a field creates it; assigning it decides where it is asked for, who may change it, and what…
url: "https://rackhelm.com/documentation/configurable-options/"
updated: "2026-09-24"
category: "Products & Catalogue"
---

# Configurable Options

Configurable options are custom fields attached to a product or a product group, each with its own visibility and locking behaviour. Defining a field creates it; assigning it decides where it is asked for, who may change it, and what the provisioner receives. This article is for operators.

## Before you start

- Create the fields you want to assign under **Catalogue → Custom Fields**. See [Custom Fields](/docs/custom-fields/).

> **Note:** Assigning options to a product goes through the product editor (`edit_products`, plus the unseeded `admin` capability the save path checks). Assigning to a group goes through the group modal, gated by the unseeded `staff_panel` capability. In a default install both are effectively **Super Admin** only. See [Roles & Permissions](/docs/roles-and-permissions/).

## The options picker

The same picker is used in three places: the product editor's **Options & Add-ons** tab, the **Create Product Group** modal's **Configurable Options** tab, and the **Edit Group** modal's equivalent tab. It lists every custom field on the install, with a search box and a "N selected" counter.

![The configurable options picker showing a searchable list of custom fields, each with a checkbox and three switches](/wp-content/uploads/rackhelm-docs/catalogue-options-selector.png)
Ticking a field reveals its three per-assignment switches; untick it and the switches collapse again.

Each row shows the field's display name, its system key in brackets and a badge with its type. Tick the checkbox to attach the field, then set its switches.

## The three switches

| Switch | Default | What it does |
| --- | --- | --- |
| **Show on Order Page** | On | Offers the field to the customer on the product's order page. Off keeps the field attached but never asks for it. |
| **Show in Admin** | On | Recorded against the assignment. Nothing currently reads it to filter an admin screen, so treat it as documentation of intent rather than an effective control. |
| **User Changeable** | On | Off does two things at once: it hides the input from the customer, *and* it makes the server discard any value the buyer submits for that key. The provisioner then falls back to the value configured on the product, add-on option or integration. |

> **Tip:** **User Changeable** off is the correct way to pin a value such as a node or location ID. Hiding the input alone would not be enough — the switch is what makes the server ignore a hand-crafted form submission.

## Product-level versus group-level

You can attach a field in two places, and they combine:

1. **On the group** — every product in the group inherits it. Use this for anything the whole range needs, such as a hostname on all VPS plans.
2. **On the product** — applies to that product only.

When a customer opens an order page, RackHelm builds the list from the product's own assignments first, then adds any of the group's assignments the product does not already carry. That means:

> **Note:** A product-level assignment **overrides** the group-level one for the same field. Assign the field on the product with different switches when one product needs to behave differently from the rest of its group.

## Assigning options to a product

1. Open **Catalogue → Catalogue & Groups** and edit the product.
2. Go to the **Options & Add-ons** tab.
3. Search for a field, tick it and set its three switches.
4. Save the product. The tab's counter badge updates to show attached options plus attached add-ons.

> **Note:** This picker reflects the product's own assignments only. A field inherited from the group shows here *unticked* — that is expected, and it still reaches the order page. Tick it only when you want this product to override the group's switches.

Assignments are replaced wholesale on save — a field you untick is detached, and its switches are forgotten. Duplicating a product carries the assignments *and* their switch settings across to the copy.

## Assigning options to a group

1. On **Catalogue → Catalogue & Groups**, open a group's **⋯ → Edit Group** (or click **New Group**).
2. Switch to the **Configurable Options** tab.
3. Tick fields and set their switches.
4. Click **Save Changes**.

## Domain Search groups behave differently

In a group whose **Page Layout** is **Domain Search**, every assigned field is offered on the order page regardless of its **Show on Order Page** switch. This is deliberate — it is what keeps the domain name field visible on a registration or transfer, which would otherwise be filtered out. **User Changeable** still applies as normal, and the domain-specific keys are re-injected from validated input after the locking pass, so registrations are unaffected.

## What the customer sees

Assigned, visible fields render under a **Configuration** heading on the order page, above the add-ons, each using the input type its definition specifies. Required fields carry a red asterisk. If a product has no fields of its own and no add-ons, its store card's button reads **Order Now** instead of **Configure** — the link is the same order page either way.

## Legacy "Product Variables"

> **Warning:** RackHelm previously had a separate *Product Variables* feature with its own screens and its own variable-assignment pages. Custom Fields replaced it. The old variables screens are no longer registered on any route, and the two remaining variable-assignment routes (`/admin/groups/{group}/variables` and `/admin/products/{product}/variables`) call relationships that no longer exist on the models, so they error rather than working. Do not use them — configure everything through **Custom Fields** and the pickers described above.

## Troubleshooting

| Symptom | Cause and fix |
| --- | --- |
| The picker says "No custom fields found." | None are defined yet. Follow the "Create one" link, or go to **Catalogue → Custom Fields**. |
| A field assigned to the group does not show on one product. | The product has its own assignment for the same field, and that one wins. Check the product's **Options & Add-ons** tab. |
| A field is ticked but the customer never sees it. | Either **Show on Order Page** or **User Changeable** is off. The second one hides the input on purpose. |
| A customer's value is being ignored. | **User Changeable** is off for that assignment, so the server drops buyer input for that key by design. |
| Switches reverted after saving. | Assignments are synced wholesale from the form. If a switch was not visible because its field was unticked, its value was not submitted. Tick the field first, then set the switches, then save. |
| Opening a "variables" URL throws an error. | Those are the legacy Product Variables routes described above. Use Custom Fields instead. |
| Saving a group returns 403. | The group controller checks the unseeded `staff_panel` capability; only Super Admin satisfies it by default. |
