Product Custom Inputs: Configuration
Configure Product Custom Inputs in the Sylius admin: shop-wide switch, defining fields, eight field types with limits, attaching fields to products and practical examples.
Product Custom Inputs: Configuration
This documentation always describes the latest published version.
The plugin has no config keys in config/packages/. Everything is managed in the admin: one switch for the whole plugin, the field definitions and the attachment of fields to products. The names below match the English admin interface (en_US).
Settings page
Admin sidebar -> MMKreativ Plugins -> Product Custom Input Fields (page title "Custom Input Fields Settings", route mmd_sylius_product_custom_inputs_plugin_admin_settings)
| Setting | Default | Description |
|---|---|---|
| Enabled | On | Shop-wide switch. Off: the add-to-cart form shows no custom input fields, and the Shop API rejects write requests with 404 |
The switch applies to the whole shop, not per channel. Values already collected stay visible, and field definitions can still be managed while the plugin is disabled.
The "Custom Input Fields" button on the settings page takes you to the list of field definitions.
The admin prefix in the paths of this documentation (
/admin/...) depends onsylius_admin.path_namein your installation.
Defining fields
The list is an admin grid at <admin prefix>/product-custom-input-fields/ with the columns Label, Field type, Required and Position, sorted by position. Create new fields with the create button, edit or delete existing ones with the row actions, or delete several at once with bulk delete.
A field is global: it does not belong to a single product but can be attached to any number of products. Required flag, position and every other property apply identically everywhere, there is no per-product override.
General properties
| Property | Default | Description |
|---|---|---|
| Label | Required, translatable per locale | |
| Placeholder | Optional, translatable per locale. Only shown for single-line text, multi-line text and number | |
| Field type | Single-line text | One of the eight types below |
| Required | Off | Without input, the product cannot be added to the cart |
| Position | 0 | Order in the form, ascending |
Label and placeholder are limited to 255 characters in the database. Longer values are not caught by the form but cause a database error.
Field types and their limits
| Field type in the admin | Value | Limits |
|---|---|---|
| Single-line text | text |
Minimum length, Maximum length |
| Multi-line text | textarea |
Minimum length, Maximum length |
| Number | number |
Minimum value, Maximum value (whole numbers each), Step (e.g. 0.5) |
| Checkbox | boolean |
If required, the box must be ticked |
| Date | date |
Minimum date, Maximum date, disabled days |
| Time | time |
Minimum time, Maximum time |
| Date and time | datetime |
Minimum and maximum date (inclusive through 23:59), disabled days |
| Select | select |
Select options made of value and label |
These limits apply in the storefront form as well as through the Shop API. If no maximum length is set for text and multi-line text, both paths cap input at 5000 characters. Dates and times are checked strictly, values like 2026-02-30 or 25:00 are invalid.
In the storefront select field, options with an empty value are skipped and duplicate values are merged (the last option wins). If the field is not required, an empty choice is added.
All values are stored as text: checkbox as 1 or 0, date as YYYY-MM-DD, time as HH:MM, date and time as YYYY-MM-DD HH:MM.
Attaching fields to a product
Attaching happens on the product, not on the field: in the admin product form (create and edit, "General" tab), pick one or more already defined fields in the "Custom input fields" field. Removing a field from the selection only detaches it, the field and values already collected stay in place.
Practical examples
Individual URL on a plugin product
| Property | Value |
|---|---|
| Label | Shop URL |
| Placeholder | https://your-shop.com |
| Field type | Single-line text |
| Required | On |
| Maximum length | 255 |
Name to embroider on a quilt
| Property | Value |
|---|---|
| Label | Name for the embroidery |
| Placeholder | e.g. Anna |
| Field type | Single-line text |
| Required | On |
| Minimum length / Maximum length | 2 / 30 |
| Position | 10 |
Preferred delivery date
| Property | Value |
|---|---|
| Label | Preferred date |
| Field type | Date |
| Required | Off |
| Minimum date | 2026-12-01 |
| Disabled days | 2026-12-24, 2026-12-25 |
Color choice
| Property | Value |
|---|---|
| Label | Thread color |
| Field type | Select |
| Select options | red = Red, blue = Blue, green = Green |
| Required | On |