What is a Magento Custom Option?
Magento Custom Options are per-product extra inputs, engraving text, gift wrap, date picker, file upload, radio buttons, checkboxes, dropdown, multi-select, that adjust the cart-line price, SKU suffix, and weight without spawning new product variants. Set per product in admin under Catalog → Product → Customizable Options. The cheaper, lighter alternative to Configurable Products when you only need one-off personalisations on top of a single SKU.
- Input types 11 (text, area, file, date, radio, select…)
- Scope Per-product (not site-wide)
- Modifies Cart-line price, SKU, weight inline
Five steps from admin config to order line
Custom Options thread cleanly from the admin product page, through the storefront PDP, into the cart, and onto the final order, without writing any code.
01Add the option in admin under Customizable Options
In the Magento admin, open Catalog → Products, edit a product, scroll to the Customizable Options tab, and click Add Option. Custom Options live on the product itself, they are not a site-wide attribute and they do not appear in catalog search filters. You can add as many options per product as you need, and reorder them with sort_order.
02Pick one of 11 input types
Magento ships 11 input types grouped into four families: Text (Field, Area), File (File upload), Select (Drop-down, Radio Buttons, Checkbox, Multiple Select), and Date (Date, Date & Time, Time). Pick the right one for the data shape, e.g. Field for engraving, File for "upload your artwork", Drop-down for gift-wrap colour, Date for booking. Each type has its own validation rules (max length, allowed extensions, min/max date).
03Add option values with label, price, sku and price_type
For Select-family inputs (drop-down, radio, checkbox, multi-select) you add a row of values per choice. Each value has a label ("Red ribbon"), a price delta ($3.00), a price_type of either fixed or percent, an optional sku suffix ("-red"), and a sort_order. Text/File/Date options carry a single price + sku on the option itself, not on values. Stored in catalog_product_option_value.
04Frontend renders inputs on the PDP and threads them into the cart
The PDP template renders each option as the matching HTML control (input / textarea / file / select / date picker), validates client-side, and on Add-to-Cart serialises the chosen values into the quote item. The mini-cart, cart, and checkout summary show the option labels under the product name, the cart-line price reflects all option price deltas, and the final SKU on the order line concatenates the product SKU with each value sku suffix.
05Order item stores option JSON; invoice + PDF inherit it
Once the order is placed, each line item persists the option selections as JSON in the product_options column on sales_order_item. The standard order confirmation email, invoice PDF, shipment PDF, and credit memo PDF all pull option labels + values from that JSON automatically, you do not customise the sales templates to support custom options. Refunds and partial shipments work unchanged. Compatible with B2B, multi-source inventory, and Hyvä storefronts.
Four scenarios where Custom Options are the right tool
Custom Options shine for personalisation on top of a single SKU. These four cases are the bread-and-butter wins.
Engraving, monogram, or personalisation text
A Text Field option on a jewellery, gifts, or electronics product is the textbook use case. The customer types the engraving text on the PDP, you charge a flat $10 fee via price_type=fixed, and the engraving copy lands on the order line so your workshop sees exactly what to engrave. Cleaner than spawning 26 SKUs per letter, and inventory stays parent-level.
Gift wrap, rush delivery, or paid upsells
A Drop-down or Radio option on each product (or via an extension that copies the option to every product) lets the customer tick "Gift wrap +$5" or "Rush delivery +$15" without leaving the PDP. Cheap, well-supported, mobile-friendly, and the upsell revenue flows straight into the order line. Use this before reaching for a heavier upsell extension, native custom options handle 80% of the use cases.
Print-on-demand "upload your artwork"
Printing services (business cards, banners, T-shirts) need the customer to upload a design file before the order can be produced. A File Upload custom option, configured with a whitelist of safe extensions (jpg, png, pdf, ai, eps), captures the file at PDP-time. The order line stores the file path and your production team picks it up from the admin order view. Tighten the whitelist, do not allow .exe / .zip / .svg.
Date-bookings for rentals, salons, catering
A Date or Date & Time option on a "product" representing a service slot lets you sell time. Party rentals pick a delivery date, salons pick an appointment slot, caterers pick an event date. Cheaper to wire up than a full booking extension if you only need basic date capture, no calendar availability, no double-booking prevention. For real calendar logic, rooms, classes, real bookings, reach for a dedicated bookings extension instead.
Three traps that turn Custom Options into a support nightmare
Every "our stock counts are wrong" / "tax is off" / "we got hacked through uploads" support ticket I have triaged on Custom Options traces back to one of these three.
Using Custom Options instead of Configurable Products
Custom Options modify the cart-line price + SKU suffix, but they do not create real variant SKUs in the catalog. If you sell a t-shirt in S/M/L/XL and you want per-size stock tracking, per-size search facets, per-size pricing rules, and per-size product URLs, you need Configurable Products. Custom Options are for one-off personalisation on top of a single SKU, not for managing real variants. Pick the wrong tool and your stock counts go wrong on day one.
Forgetting price_type=fixed vs percent
Every option value has a price_type set to either fixed ($5 flat) or percent (5% of parent price). Get this wrong and the option misbehaves under cart rules and tax. Percent options compound against catalog discounts and recompute when the parent price changes, useful for premium fabric upgrades but surprising on flash sales. Fixed options stay constant. Always document each option's price_type in the option label or the spec sheet so QA tests the right scenarios.
Leaving file uploads with no extension whitelist
A File Upload option that accepts any extension is a security incident waiting to happen, customers can upload .php / .phtml / .svg / .html files that, if your media folder is misconfigured, execute server-side. Always set the Allowed File Extensions admin field to a tight whitelist (jpg, png, pdf, ai, eps), set a sane max file size (10 MB is plenty), and double-check that pub/media/custom_options/ has no PHP execution. For high-risk stores, add antivirus scanning on the upload path.
Where Custom Options sit in the wider Magento catalog model
Five neighbour concepts most readers want to look at next. Click through for the full deep-dive.
- What is a Configurable ProductReal variant SKUs, size, colour, fabric, with per-variant stock, pricing, search facets, and URLs. The right tool when you need true variants, not just personalisation.
- What is a Magento Bundle ProductKit-style product with option groups (pick 1 case + 1 charger + 1 cable). Bundles are option-driven like custom options, but each option points to a real child SKU.
- What is a Magento Attribute SetGroup of product attributes that defines a product type (shoes, books, electronics). Different concept from custom options, attributes are reusable, indexable, filterable.
- Magento extension developmentCustom modules that extend custom options, per-value inventory, tax rules per option, "share options across products", admin UI tweaks. Fixed-price builds.
- Hire a Magento developerNeed someone to wire up complex custom options, engraving workflows, file-upload security, multi-step bookings, without breaking inventory or tax? Adobe Certified, ten years on platform.
Magento Custom Options: frequently asked questions
Custom Options vs Configurable Products: when do I pick which?
Can I track inventory per custom option value?
Do custom options affect catalog search facets?
Can I share custom options across many products at once?
How does Hyvä Themes handle Custom Options?
How do I make file uploads safe?
pub/media/custom_options/ is configured in nginx/Apache to never execute PHP: files served as static binaries only. For high-risk stores (B2C with public uploads), add an antivirus scanner (ClamAV) on the upload directory and quarantine flagged files before they reach the order workflow.Need engraving, file-upload, or booking options wired up safely?
Send your product spec: I will reply with a written build plan, fixed-price quote, file-upload security review, and earliest start date. 24-business-hour turnaround.