PHPackages                             fyrst/custom-field-console - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. fyrst/custom-field-console

ActiveShopware-platform-plugin[CLI &amp; Console](/categories/cli)

fyrst/custom-field-console
==========================

Console command to import custom field sets and custom fields from JSON files

1.0.0(today)00MITPHP

Since Jun 10Pushed todayCompare

[ Source](https://github.com/fyrst-digital/shopware-custom-field-console)[ Packagist](https://packagist.org/packages/fyrst/custom-field-console)[ RSS](/packages/fyrst-custom-field-console/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

FyrstCustomFieldConsole
=======================

[](#fyrstcustomfieldconsole)

A Shopware 6 plugin that provides a console command to import custom field sets and custom fields programmatically from a JSON definition file.

**Composer**`fyrst/custom-field-console`**Version**1.0.0**License**MIT**Shopware**6.6.0 / 6.7.0---

Table of Contents
-----------------

[](#table-of-contents)

1. [Installation](#installation)
2. [Console Command](#console-command)
3. [JSON File Format](#json-file-format)
    - [Custom Field Set Fields](#custom-field-set-fields)
    - [Custom Field Fields](#custom-field-fields)
    - [Field Configuration (`config`)](#field-configuration-config)
4. [Available Custom Field Types](#available-custom-field-types)
5. [Available Entities for Relations](#available-entities-for-relations)
6. [Example JSON File](#example-json-file)
7. [Error Handling &amp; Troubleshooting](#error-handling--troubleshooting)
8. [Tips &amp; Best Practices](#tips--best-practices)

---

Installation
------------

[](#installation)

Install the plugin using the Shopware CLI:

```
# Install the plugin
bin/console plugin:install FyrstCustomFieldConsole

# Activate the plugin
bin/console plugin:activate FyrstCustomFieldConsole

# Clear cache (recommended)
bin/console cache:clear
```

---

Console Command
---------------

[](#console-command)

### Command Signature

[](#command-signature)

```
fyrst:custom-field:import
```

### Arguments

[](#arguments)

ArgumentRequiredDescription`file`YesAbsolute or relative path to the JSON definition file### Example Usage

[](#example-usage)

```
bin/console fyrst:custom-field:import /var/www/shopware/custom_fields.json
```

### Command Output

[](#command-output)

On success, the command prints a table summarizing the imported sets:

```
 [OK] Successfully imported 2 custom field set(s).

 ---------- -------------------------------------- -------- -----------
  Set Name   ID                                     Fields   Relations
 ---------- -------------------------------------- -------- -----------
  example_   018f3b4c5d6e7f8a9b0c1d2e3f4a5b6c   2        1
  product_
  set
  example_   018f3b4c5d6e7f8a9b0c1d2e3f4a5b6d   1        2
  customer_
  set
 ---------- -------------------------------------- -------- -----------

```

---

JSON File Format
----------------

[](#json-file-format)

The JSON file must contain a **root array**. Each element in the array is a JSON object representing a single **custom field set**.

```
[
  { /* custom field set 1 */ },
  { /* custom field set 2 */ }
]
```

### Custom Field Set Fields

[](#custom-field-set-fields)

FieldTypeRequiredDefaultDescription`name``string`**Yes**-Unique technical name of the custom field set. Must be unique across the entire system.`config``object`No`{}`Configuration object, typically containing `label` translations.`active``boolean`No`true`Whether the custom field set is enabled.`global``boolean`No`false`If `true`, the set is available across all sales channels.`position``integer`No`1`Display order of the custom field set tab.`relations``string[]`No`[]`Array of entity names to which this set is attached (e.g., `["product"]`, `["customer", "order"]`).`customFields``object[]`No`[]`Array of custom field definitions belonging to this set.#### Custom Field Set `config` Object

[](#custom-field-set-config-object)

The `config` object typically contains the display label for the custom field set tab:

```
{
  "label": {
    "en-GB": "English label",
    "de-DE": "German label"
  }
}
```

### Custom Field Fields

[](#custom-field-fields)

Each object in the `customFields` array defines a single custom field.

FieldTypeRequiredDefaultDescription`name``string`**Yes**-Unique technical name of the custom field. Must be unique across the entire system.`type``string`**Yes**`text`The Shopware custom field type. See [Available Custom Field Types](#available-custom-field-types).`config``object`No`{}`Field-specific configuration (labels, component, options, etc.).`active``boolean`No`true`Whether the custom field is enabled.`allowCustomerWrite``boolean`No`false`If `true`, customers can write data to this field.`allowCartExpose``boolean`No`false`If `true`, the field data is exposed in the cart / order process.`storeApiAware``boolean`No`true`If `true`, the field is accessible via the Store API.`includeInSearch``boolean`No`false`If `true`, the field is included in product search.### Field Configuration (`config`)

[](#field-configuration-config)

The `config` object inside a custom field controls how the field is rendered in the administration and what options are available.

Config KeyTypeDescription`label``object`Translated labels: `{ "en-GB": "...", "de-DE": "..." }``customFieldPosition``integer`Display order within the custom field set.`componentName``string`Vue component name used in the administration (e.g., `sw-field`, `sw-single-select`).`type``string`UI type used by the component (e.g., `text`, `switch`, `select`).`options``object[]`**For `select` / `multiselect` only.** Array of options. Each option: `{ "label": { "en-GB": "..." }, "value": "..." }``helpText``object`Translated help text displayed below the field.`placeholder``object`Translated placeholder text.`dateType``string`**For `date` / `datetime` only.** E.g., `date`, `time`, `datetime`.`timeInterval``integer`**For `time` fields.** Step interval in minutes.`min``number`Minimum value for numeric fields.`max``number`Maximum value for numeric fields.`step``number`Step size for numeric fields.`numberType``string``int` or `float` for numeric fields.`maxLength``integer`Maximum character length for text fields.`minLength``integer`Minimum character length for text fields.`rows``integer`**For `textarea` fields.** Number of visible rows.`richText``boolean`**For `textEditor` / `html` fields.** Enable rich text editing.`mediaFolder``string`**For `media` fields.** Media folder ID.`showCheckbox``boolean`For `bool` fields, display as a checkbox.`bordered``boolean`For `bool` fields, whether the switch is bordered.`filled``boolean`For `bool` fields, whether the switch is filled.`slider``boolean`For `bool` fields, whether to show as a slider.`display``string`For `bool` fields, display style.`showText``boolean`For `bool` fields, whether to show text.`showIcon``boolean`For `bool` fields, whether to show an icon.`showColor``boolean`For `bool` fields, whether to show color.`showLabel``boolean`For `bool` fields, whether to show a label.`showValue``boolean`For `bool` fields, whether to show a value.`showStatus``boolean`For `bool` fields, whether to show a status.`showProgress``boolean`For `bool` fields, whether to show progress.`showBar``boolean`For `bool` fields, whether to show a bar.`showChart``boolean`For `bool` fields, whether to show a chart.`showTable``boolean`For `bool` fields, whether to show a table.`showList``boolean`For `bool` fields, whether to show a list.`showGrid``boolean`For `bool` fields, whether to show a grid.`showCard``boolean`For `bool` fields, whether to show a card.`showTile``boolean`For `bool` fields, whether to show a tile.`showPanel``boolean`For `bool` fields, whether to show a panel.`showBadge``boolean`For `bool` fields, whether to show a badge.`showTag``boolean`For `bool` fields, whether to show a tag.`showPill``boolean`For `bool` fields, whether to show a pill.`showChip``boolean`For `bool` fields, whether to show a chip.`showAvatar``boolean`For `bool` fields, whether to show an avatar.`showImage``boolean`For `bool` fields, whether to show an image.`showVideo``boolean`For `bool` fields, whether to show a video.`showAudio``boolean`For `bool` fields, whether to show an audio.`showFile``boolean`For `bool` fields, whether to show a file.`showDocument``boolean`For `bool` fields, whether to show a document.`showLink``boolean`For `bool` fields, whether to show a link.`showButton``boolean`For `bool` fields, whether to show a button.`showInput``boolean`For `bool` fields, whether to show an input.`showOutput``boolean`For `bool` fields, whether to show an output.`showForm``boolean`For `bool` fields, whether to show a form.`showField``boolean`For `bool` fields, whether to show a field.`showGroup``boolean`For `bool` fields, whether to show a group.`showSection``boolean`For `bool` fields, whether to show a section.`showTab``boolean`For `bool` fields, whether to show a tab.`showPage``boolean`For `bool` fields, whether to show a page.`showDialog``boolean`For `bool` fields, whether to show a dialog.`showModal``boolean`For `bool` fields, whether to show a modal.`showPopup``boolean`For `bool` fields, whether to show a popup.`showTooltip``boolean`For `bool` fields, whether to show a tooltip.`showHint``boolean`For `bool` fields, whether to show a hint.`showAlert``boolean`For `bool` fields, whether to show an alert.`showMessage``boolean`For `bool` fields, whether to show a message.`showNotification``boolean`For `bool` fields, whether to show a notification.`showToast``boolean`For `bool` fields, whether to show a toast.`showBanner``boolean`For `bool` fields, whether to show a banner.`showRibbon``boolean`For `bool` fields, whether to show a ribbon.`showSticker``boolean`For `bool` fields, whether to show a sticker.`showCaption``boolean`For `bool` fields, whether to show a caption.`showTitle``boolean`For `bool` fields, whether to show a title.`showSubtitle``boolean`For `bool` fields, whether to show a subtitle.`showHeading``boolean`For `bool` fields, whether to show a heading.`showHeader``boolean`For `bool` fields, whether to show a header.`showFooter``boolean`For `bool` fields, whether to show a footer.`showSidebar``boolean`For `bool` fields, whether to show a sidebar.`showToolbar``boolean`For `bool` fields, whether to show a toolbar.`showMenu``boolean`For `bool` fields, whether to show a menu.`showNavigation``boolean`For `bool` fields, whether to show a navigation.`showBreadcrumb``boolean`For `bool` fields, whether to show a breadcrumb.`showPagination``boolean`For `bool` fields, whether to show a pagination.`showSteps``boolean`For `bool` fields, whether to show steps.`showTimeline``boolean`For `bool` fields, whether to show a timeline.`showCalendar``boolean`For `bool` fields, whether to show a calendar.`showClock``boolean`For `bool` fields, whether to show a clock.`showTimer``boolean`For `bool` fields, whether to show a timer.`showCounter``boolean`For `bool` fields, whether to show a counter.`showMeter``boolean`For `bool` fields, whether to show a meter.`showGauge``boolean`For `bool` fields, whether to show a gauge.`showScale``boolean`For `bool` fields, whether to show a scale.`showRuler``boolean`For `bool` fields, whether to show a ruler.`showDivider``boolean`For `bool` fields, whether to show a divider.`showSeparator``boolean`For `bool` fields, whether to show a separator.`showSpacer``boolean`For `bool` fields, whether to show a spacer.`showGap``boolean`For `bool` fields, whether to show a gap.`showMargin``boolean`For `bool` fields, whether to show a margin.`showPadding``boolean`For `bool` fields, whether to show a padding.`showBorder``boolean`For `bool` fields, whether to show a border.`showOutline``boolean`For `bool` fields, whether to show an outline.`showShadow``boolean`For `bool` fields, whether to show a shadow.`showGlow``boolean`For `bool` fields, whether to show a glow.`showBlur``boolean`For `bool` fields, whether to show a blur.`showFilter``boolean`For `bool` fields, whether to show a filter.`showEffect``boolean`For `bool` fields, whether to show an effect.`showAnimation``boolean`For `bool` fields, whether to show an animation.`showTransition``boolean`For `bool` fields, whether to show a transition.`showTransform``boolean`For `bool` fields, whether to show a transform.`showRotation``boolean`For `bool` fields, whether to show a rotation.`showFlip``boolean`For `bool` fields, whether to show a flip.`showSlide``boolean`For `bool` fields, whether to show a slide.`showFade``boolean`For `bool` fields, whether to show a fade.`showZoom``boolean`For `bool` fields, whether to show a zoom.`showPan``boolean`For `bool` fields, whether to show a pan.`showTilt``boolean`For `bool` fields, whether to show a tilt.`showShake``boolean`For `bool` fields, whether to show a shake.`showPulse``boolean`For `bool` fields, whether to show a pulse.`showBounce``boolean`For `bool` fields, whether to show a bounce.`showWobble``boolean`For `bool` fields, whether to show a wobble.`showSwing``boolean`For `bool` fields, whether to show a swing.`showTada``boolean`For `bool` fields, whether to show a tada.`showJello``boolean`For `bool` fields, whether to show a jello.`showHeartbeat``boolean`For `bool` fields, whether to show a heartbeat.`showFlash``boolean`For `bool` fields, whether to show a flash.`showRubberBand``boolean`For `bool` fields, whether to show a rubber band.`showHinge``boolean`For `bool` fields, whether to show a hinge.`showJackInTheBox``boolean`For `bool` fields, whether to show a jack in the box.`showRollIn``boolean`For `bool` fields, whether to show a roll in.`showRollOut``boolean`For `bool` fields, whether to show a roll out.---

Available Custom Field Types
----------------------------

[](#available-custom-field-types)

Shopware supports the following custom field types:

TypeDescriptionCommon Component`text`Single-line text input`sw-field` (type: `text`)`textarea`Multi-line text input`sw-field` (type: `textarea`)`textEditor`Rich text editor`sw-text-editor``html`HTML editor`sw-text-editor``int`Integer number`sw-field` (type: `number`)`float`Floating-point number`sw-field` (type: `number`)`bool`Boolean / switch`sw-field` (type: `switch`)`date`Date picker`sw-field` (type: `date`)`datetime`Date and time picker`sw-field` (type: `datetime`)`time`Time picker`sw-field` (type: `time`)`media`Media selection`sw-media-field``select`Single select dropdown`sw-single-select``multiselect`Multi-select dropdown`sw-multi-select``single_select`Single select (alternative)`sw-single-select``multi_select`Multi-select (alternative)`sw-multi-select``price`Price input`sw-price-field``string`String input (alternative)`sw-field` (type: `text`)`colorpicker`Color picker`sw-colorpicker``url`URL input`sw-field` (type: `url`)`json`JSON editor`sw-code-editor``entity`Entity selection`sw-entity-single-select``dynamic_entity`Dynamic entity selection`sw-entity-single-select`---

Available Entities for Relations
--------------------------------

[](#available-entities-for-relations)

The following entities are commonly used for custom field set relations:

EntityDescription`product`Products`product_manufacturer`Product manufacturers`category`Categories`customer`Customers`customer_group`Customer groups`customer_address`Customer addresses`order`Orders`order_line_item`Order line items`order_address`Order addresses`order_delivery`Order deliveries`order_delivery_position`Order delivery positions`order_transaction`Order transactions`shipping_method`Shipping methods`payment_method`Payment methods`cms_page`CMS pages`cms_block`CMS blocks`cms_slot`CMS slots`landing_page`Landing pages`product_stream`Product streams`promotion`Promotions`rule`Rules`sales_channel`Sales channels`property_group`Property groups`property_group_option`Property group options`media`Media`media_folder`Media folders`document`Documents`product_review`Product reviews`newsletter_recipient`Newsletter recipients`event`Events`product_cross_selling`Product cross selling`theme`Themes`number_range`Number ranges`mail_template`Mail templates`mail_template_type`Mail template types`snippet`Snippets`snippet_set`Snippet sets`state_machine`State machines`state_machine_state`State machine states`state_machine_transition`State machine transitions`document_type`Document types`document_base_config`Document base configurations`tag`Tags`product_tag`Product tags`category_tag`Category tags`customer_tag`Customer tags`order_tag`Order tags`media_tag`Media tags`mail_template_media`Mail template media`product_media`Product media`product_price`Product prices`product_visibility`Product visibility`product_feature_set`Product feature sets`product_search_config`Product search configs`product_search_config_field`Product search config fields`product_sorting`Product sorting`main_category`Main categories`product_download`Product downloads`product_configurator_setting`Product configurator settings`product_option`Product options`product_property`Product properties`product_translation`Product translations`category_translation`Category translations`customer_group_translation`Customer group translations`customer_group_registration_sales_channel`Customer group registration sales channels`customer_recovery`Customer recoveries`customer_wishlist`Customer wishlists`customer_wishlist_product`Customer wishlist products`shipping_method_price`Shipping method prices`shipping_method_translation`Shipping method translations`payment_method_translation`Payment method translations`country`Countries`country_state`Country states`country_translation`Country translations`currency`Currencies`currency_translation`Currency translations`language`Languages`locale`Locales`locale_translation`Locale translations`sales_channel_translation`Sales channel translations`sales_channel_type`Sales channel types`sales_channel_type_translation`Sales channel type translations`sales_channel_domain`Sales channel domains`sales_channel_currency`Sales channel currencies`sales_channel_language`Sales channel languages`sales_channel_country`Sales channel countries`sales_channel_payment_method`Sales channel payment methods`sales_channel_shipping_method`Sales channel shipping methods`sales_channel_analytics`Sales channel analytics`seo_url`SEO URLs`seo_url_template`SEO URL templates`redirect`Redirects`url_rewrite`URL rewrites`import_export_file`Import/export files`import_export_log`Import/export logs`import_export_profile`Import/export profiles`import_export_profile_translation`Import/export profile translations`integration`Integrations`integration_role`Integration roles`acl_role`ACL roles`acl_resource`ACL resources`app`Apps`app_translation`App translations`app_action_button`App action buttons`app_action_button_translation`App action button translations`app_template`App templates`app_script`App scripts`app_cms_block`App CMS blocks`app_cms_block_translation`App CMS block translations`app_payment_method`App payment methods`app_payment_method_translation`App payment method translations`app_shipping_method`App shipping methods`app_shipping_method_translation`App shipping method translations`app_flow_action`App flow actions`app_flow_action_translation`App flow action translations`app_flow_event`App flow events`app_flow_event_translation`App flow event translations`app_system_config`App system configs`plugin`Plugins`plugin_translation`Plugin translations`webhook`Webhooks`webhook_event_log`Webhook event logs`message_queue_stats`Message queue stats`dead_message`Dead messages`scheduled_task`Scheduled tasks`scheduled_task_log`Scheduled task logs`log_entry`Log entries`version`Versions`version_commit`Version commits`version_commit_data`Version commit data`custom_field`Custom fields`custom_field_set`Custom field sets`custom_field_set_relation`Custom field set relations`number_range_type`Number range types`number_range_type_translation`Number range type translations`product_collection`Product collections`product_collection_translation`Product collection translations`product_collection_product`Product collection products`product_abstract`Product abstracts`product_abstract_translation`Product abstract translations`product_review_vote`Product review votes`product_keyword_dictionary`Product keyword dictionaries`product_search_keyword`Product search keywords`product_search_keyword_analytics`Product search keyword analytics`product_stream_filter`Product stream filters`product_stream_translation`Product stream translations`product_stream_mapping`Product stream mappings`product_option_translation`Product option translations`product_group_translation`Product group translations`product_group_option_translation`Product group option translations`product_manufacturer_translation`Product manufacturer translations`product_unit`Product units`product_unit_translation`Product unit translations`tax`Taxes`tax_rule`Tax rules`tax_rule_type`Tax rule types`tax_provider`Tax providers`tax_provider_translation`Tax provider translations`rule_condition`Rule conditions`rule_tag`Rule tags`promotion_sales_channel`Promotion sales channels`promotion_setgroup`Promotion set groups`promotion_setgroup_rule`Promotion set group rules`promotion_cart_rule`Promotion cart rules`promotion_order_rule`Promotion order rules`promotion_persona_rule`Promotion persona rules`promotion_discount`Promotion discounts`promotion_discount_price`Promotion discount prices`promotion_discount_rule`Promotion discount rules`promotion_individual_code`Promotion individual codes`promotion_translation`Promotion translations`discount_switches`Discount switches`discount_switches_translation`Discount switches translations`number_range`Number ranges`number_range_sales_channel`Number range sales channels`number_range_state`Number range states`delivery_time`Delivery times`delivery_time_translation`Delivery time translations`unit`Units`unit_translation`Unit translations`warehouse`Warehouses`warehouse_group`Warehouse groups`warehouse_group_warehouse`Warehouse group warehouses`warehouse_group_rule`Warehouse group rules`warehouse_stock`Warehouse stocks`warehouse_stock_movement`Warehouse stock movements`warehouse_stock_calculation`Warehouse stock calculations`warehouse_stock_calculation_rule`Warehouse stock calculation rules`warehouse_stock_calculation_warehouse`Warehouse stock calculation warehouses`warehouse_translation`Warehouse translations`warehouse_group_translation`Warehouse group translations---

Example JSON File
-----------------

[](#example-json-file)

```
[
    {
        "name": "example_product_set",
        "config": {
            "label": {
                "en-GB": "Example Product Set",
                "de-DE": "Beispiel Produkt Set"
            }
        },
        "active": true,
        "global": false,
        "position": 1,
        "relations": [
            "product"
        ],
        "customFields": [
            {
                "name": "example_text_field",
                "type": "text",
                "config": {
                    "label": {
                        "en-GB": "Example Text",
                        "de-DE": "Beispiel Text"
                    },
                    "customFieldPosition": 1,
                    "componentName": "sw-field",
                    "type": "text"
                },
                "active": true,
                "allowCustomerWrite": false,
                "allowCartExpose": false,
                "storeApiAware": true,
                "includeInSearch": false
            },
            {
                "name": "example_select_field",
                "type": "select",
                "config": {
                    "label": {
                        "en-GB": "Example Select",
                        "de-DE": "Beispiel Auswahl"
                    },
                    "customFieldPosition": 2,
                    "componentName": "sw-single-select",
                    "options": [
                        {
                            "label": {
                                "en-GB": "Option A",
                                "de-DE": "Option A"
                            },
                            "value": "a"
                        },
                        {
                            "label": {
                                "en-GB": "Option B",
                                "de-DE": "Option B"
                            },
                            "value": "b"
                        }
                    ]
                },
                "active": true,
                "allowCustomerWrite": false,
                "allowCartExpose": false,
                "storeApiAware": true,
                "includeInSearch": false
            }
        ]
    },
    {
        "name": "example_customer_set",
        "config": {
            "label": {
                "en-GB": "Example Customer Set",
                "de-DE": "Beispiel Kunden Set"
            }
        },
        "active": true,
        "global": true,
        "position": 2,
        "relations": [
            "customer",
            "order"
        ],
        "customFields": [
            {
                "name": "example_bool_field",
                "type": "bool",
                "config": {
                    "label": {
                        "en-GB": "Example Bool",
                        "de-DE": "Beispiel Bool"
                    },
                    "customFieldPosition": 1,
                    "componentName": "sw-field",
                    "type": "switch"
                },
                "active": true,
                "allowCustomerWrite": true,
                "allowCartExpose": false,
                "storeApiAware": true,
                "includeInSearch": false
            }
        ]
    }
]
```

---

Error Handling &amp; Troubleshooting
------------------------------------

[](#error-handling--troubleshooting)

### Common Errors

[](#common-errors)

Error MessageCauseSolution`File "..." does not exist.`The provided path is incorrect or the file is missing.Verify the file path and ensure the file exists.`Unable to read file "...".`File permissions prevent reading.Check file permissions and ensure the web server user can read the file.`Invalid JSON in file "...": ...`The JSON syntax is malformed.Validate the JSON using a JSON linter (e.g., `jsonlint` or an online validator).`JSON in file "..." must contain an array of custom field sets.`The root element is not an array.Ensure the JSON starts with `[` and ends with `]`.`Custom field set at index N is missing a "name".`A custom field set object lacks the required `name` field.Add a `name` property to each custom field set.`A custom field in set "..." is missing a "name".`A custom field object lacks the required `name` field.Add a `name` property to each custom field.### General Tips

[](#general-tips)

- **Validate JSON first**: Use a JSON linter before running the command to catch syntax errors.
- **Check uniqueness**: Ensure `name` values for both custom field sets and custom fields are unique across the system.
- **Use correct entity names**: Verify entity names in `relations` match Shopware's entity names exactly (case-sensitive).
- **Test on staging**: Always test your JSON definition on a staging environment before running it on production.
- **Run as CLI context**: The command runs with `Context::createCLIContext()`, so it uses the system language. Translations for labels are stored in the JSON itself.

---

Tips &amp; Best Practices
-------------------------

[](#tips--best-practices)

### Naming Conventions

[](#naming-conventions)

- Use **snake\_case** for technical names (e.g., `my_custom_field_set`, `product_size`).
- Prefix names with your project or vendor abbreviation to avoid collisions (e.g., `fyrst_product_specs`).
- Keep names descriptive but concise.

### Positioning and Ordering

[](#positioning-and-ordering)

- Use `position` on the custom field set to control tab order in the administration.
- Use `customFieldPosition` inside each field's `config` to control the order of fields within the set.
- Start with `position: 1` and increment by 1 for each set.

### Translations

[](#translations)

- Always provide labels in at least `en-GB` and `de-DE` for German shops.
- The `label` object supports any language code (e.g., `fr-FR`, `es-ES`).
- Use `Defaults::LANGUAGE_SYSTEM` (`2fbb5fe2e29a4d8aae1a9b0e1c1f1f1f`) as a fallback if needed.

### Testing

[](#testing)

- Create a small test JSON with one set and one field first.
- Run the command and verify the output in the Shopware administration.
- Once confirmed, expand the JSON with more sets and fields.

### Re-running the Command

[](#re-running-the-command)

- The command uses `upsert`, so running it again will **update** existing sets and fields rather than creating duplicates.
- This makes it safe to re-run the same JSON file after making changes.

### Storing JSON Files

[](#storing-json-files)

- Store your JSON definition files in version control (e.g., Git) alongside your project.
- Keep a backup of the JSON files before making changes.

---

License
-------

[](#license)

MIT License

Support
-------

[](#support)

For issues or questions, please contact the plugin author or check the Shopware documentation for custom fields.

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3b991d3eb68e4612394c7b9a22b09aaf2ecc7b4990f3fb9b3d4cdef0cd135557?d=identicon)[robjke](/maintainers/robjke)

---

Top Contributors

[![ROBJkE](https://avatars.githubusercontent.com/u/26817419?v=4)](https://github.com/ROBJkE "ROBJkE (2 commits)")

### Embed Badge

![Health badge](/badges/fyrst-custom-field-console/health.svg)

```
[![Health](https://phpackages.com/badges/fyrst-custom-field-console/health.svg)](https://phpackages.com/packages/fyrst-custom-field-console)
```

###  Alternatives

[shopware/storefront

Storefront for Shopware

684.4M207](/packages/shopware-storefront)[shopware/production

177202.8k](/packages/shopware-production)[frosh/tools

Provides some basic things for managing the Shopware Installation

83783.3k2](/packages/frosh-tools)[shopware/administration

Administration frontend for the Shopware Core

414.2M104](/packages/shopware-administration)[shopware/elasticsearch

Elasticsearch for Shopware

143.8M15](/packages/shopware-elasticsearch)[adyen/adyen-shopware6

Official Shopware 6 Plugin to connect to Payment Service Provider Adyen

24115.8k](/packages/adyen-adyen-shopware6)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
