Shopify text field surcharge product option: free-text name or note, numeric value only when the shopper types. Empty stays 0 in the formula.
2026-10-31

Add a flat fee when a Shopify text option is filled in

Monogramming is optional. Leave the box blank and the mug stays $18. Type “Alex” and you want a single $6 personalisation fee — not a per-letter rate, not a second SKU. Shopify variants do not store a sentence. A theme field `properties[Monogram]` prints on the order and does not change price. The search is Shopify text field surcharge product option.

Options Price Calculator has a Text Field for that: free text, optional required flag, and a float that enters the formula only after the shopper types something.

Shopify Help Adding variants is still 3 options / 2048 variants. A name is not option four. Related: swap the product image from an option. That post is media. This one is the flat fee on a filled box.

Variants cannot hold an open string

Colour and size are SKUs. “Whatever the customer types” is not. Common workarounds:

A “Personalised” variant at +$6. People buy it with an empty theme field, or buy the cheap variant and still type a name. You reconcile in draft orders.

Line item properties only. The packing slip has the name. The cart charged $18.

Per-character pricing when you meant a setup fee. Long names cost more than “Bo”. The same docs page has a Number of characters helper for that model. Keep it out of this formula if you want one amount.

None of those is: empty → `0`, any text → your float, added to `product_price`.

What the Text Field actually stores

From the docs:

Label sits above the input. Example: `Text on product`. Write storefront language.

Placeholder is the hint inside the box (`e.g. John Doe`). It is not a default that bills the fee on page load.

Key is the formula id: lowercase, numbers, underscores. `text_input`, `custom_name_1`. No spaces.

Required field blocks Add to cart when empty. Leave it off for optional engraving.

Default value pre-fills on load. A pre-filled name already counts as “typed” for the numeric value — skip it unless you mean that.

Numeric value (float):

  • Empty field → `0` in formulas.

  • Any input, with e.g. `5` set on the field → that `5` is what the formula sees.

The docs’ example is a flat personalisation charge once text exists. That is this article.

Per-character is the other path on the same page: drop Number of characters into the formula and multiply. Spaces and line breaks count. Do not stack that helper on the same float if you wanted a setup fee.

Live listing (31 Oct 2026): Built for Shopify, 5.0 from 29 reviews. Free (20 uses). Starter $9.99/mo: unlimited options, AI, formula builder, metafields, styling, multilingual. Premium $19.99/mo: conditional logic, font picker, live preview, price breakdown. $39.99/mo: conditional fields, draft-order checkout. USD. The text field + numeric value is formula-builder territory. Extra if/then on top of that fee is Premium.

Wire the formula, then the theme

Link the calculator to the variant. Theme app extension on the product template. Bindings for price and Add to cart, or the theme keeps showing the variant amount.

Example:

  • Text Field key `monogram`, required off, numeric value `6`.

  • Formula:

``` product_price + monogram ```

Blank → catalog price. “Alex” → +$6. No extra variant.

A checkbox “Add text” that reveals the field is conditional show/hide ($39.99 plan) plus Premium conditionals if the fee should depend on the tick. Optional type-or-leave-blank does not need that.

Leave server-side price validation on so checkout recomputes the formula.

QA: empty add-to-cart, one character, a long sentence. Cart line should gain $6 only when the box is non-empty. The string still lands as a line item property.

Shop floor: ceramic mug

Shop “Kiln & Co”. Variants stay Glaze: oat / ink — two of three native options, real inventory. Monogram is the Text Field `mug_name`, label “Name on the mug (optional)”, placeholder “e.g. Alex”, numeric value `6`. Formula `product_price + mug_name`.

Font picker and live letter preview are Premium. Skip them for a flat fee.

Test in a private window on both glazes. Empty box matches the variant price. Filled box adds six dollars. Order confirmation shows the name.

Install and open the builder from Options Price Calculator. That listing is the only CTA here.

What not to mix into this field:

  • Conditional pricing (Premium) for “first 10 characters free, then a fee” — that is a different model. This article is one float when the box is non-empty.

  • File upload for a logo next to the name. Separate field, separate key. Do not reuse `monogram` for a file.

  • Default value set to a space or a placeholder name. The docs treat any typed value as non-empty, so the fee fires on load. Leave default blank for optional work.

  • Claiming the app replaces inventory SKUs. Glaze stays a variant. The name does not.

If the cart ignores the fee, the formula is rarely the first suspect. Theme bindings still have to point at price and Add to cart. A calculator that “works in the preview” and dies on Dawn is the bindings page, not the Text Field.

Get it live

  1. Free plan to trial (20 uses); Starter if the calculator stays on the storefront.

  2. Add a Text Field. Key in snake_case. Required off for optional work.

  3. Numeric value = the fee. Empty stays zero.

  4. Formula: `product_price +` that key.

  5. Pick price and Add to cart in theme bindings.

  6. Two test orders, empty vs filled.

Docs: Text Field. Character billing is a different topic.

Wrap-up

A Shopify text field surcharge product option is not a “with text” SKU. The field contributes `0` until someone types, then your float. Shopify’s 3-option grid cannot do that. The calculator can, with checkout validation behind the number.

Put the field on the product via Options Price Calculator. One key, one float, two carts.

online origins logo full

The Shopify Select partner for ambitious e-commerce businesses that want to grow!

linkedin online origins iconinstagram online origins icon

Reviews

5/5

Check on Google

Mail: info@onlineorigins.nl

Tel: 073 234 0612

KVK: 89825624

BTW: NL865123639B01

Bruistensingel 500,
5232 AH 's-Hertogenbosch
Cookies

© 2026 Online Origins