> For the complete documentation index, see [llms.txt](https://staylime.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://staylime.com/docs/volume-themes/faq/products-and-variants/can-customers-add-their-own-text-choices-or-files-to-a-product.md).

# Can customers add their own text, choices or files to a product?

Adding personalization fields to a Volume product page with custom options, and what they do and do not affect.

Yes — Volume has a family of **Custom options** blocks built in, no app needed. There is one block per input type, and they are all named the same way in the **Add block** list:

**Custom options: Single line text**, **Custom options: Multi line text**, **Custom options: Checkbox**, **Custom options: Dropdown**, **Custom options: Pills**, **Custom options: Swatches**, **Custom options: Color picker**, **Custom options: Date**, **Custom options: Measurement** and **Custom options: File upload**.

They are available in the **Product overview** section, and also in **Featured product** and the **Quick view** section.

{% stepper %}
{% step %}

### Add the block

In the Theme Editor, open the product template, click **Add block** in the **Product overview** section and pick the type you need. Add one block per question.
{% endstep %}

{% step %}

### Fill in Option name

**Option name** is the key the answer is saved under, so it is what you will see on the order — use `Engraving`, not `Option 1`. It has to be unique across the blocks on the page.

If **Option name** is empty the block renders nothing at all and the answer cannot be saved with the order. If a custom option is invisible on the storefront, check this field first.
{% endstep %}

{% step %}

### Fill in Option label and the rest

**Option label** is what the customer reads above the field. Then, depending on the type: **Options** (the choices, comma-separated — `Option 1, Option 2`), **Make required**, **Info tooltip**, **Layout** (**One column**, **Two columns**, **In a row**), **Swatch size**, minimum and maximum number of selections, **Max character length**, **Minimum number of days from today** and **Last allowed date**.

**Custom options: Measurement** takes its units in square brackets inside **Options**: `Chest[cm], Waist[cm], Hip[cm]`.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
If the fields appear but their labels do not, the culprit is a theme setting, not the block: **Theme settings → Variant picker → Show labels** hides the labels of custom options along with the variant labels.
{% endhint %}

### What they are, and are not

Custom options are saved as Shopify **line item properties**. They travel with the order and appear in the cart, at checkout and in the Shopify admin.

They do **not** create variants. They do not change the price and they are not tracked in inventory. If a choice has to cost extra or be counted in stock, it needs to be a separate product or variant — or an app that turns properties into charges.

{% hint style="warning" %}
**Make required** is enforced by the product form, so the **Buy now** button — Shopify's dynamic checkout — skips it. If a required option must not be bypassed, open the **Buy buttons** block and untick **Show dynamic checkout buttons**. The same applies to anything else that adds to cart outside the form, such as a quick-buy button on a collection card or an app.
{% endhint %}

{% hint style="success" icon="lightbulb" %}
Full walkthrough, including how to show custom options on some products only, in [Custom options](/docs/volume-themes/products/custom-options.md).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://staylime.com/docs/volume-themes/faq/products-and-variants/can-customers-add-their-own-text-choices-or-files-to-a-product.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
