Variant Manager
Version 4.0.3
September 19, 2026
Changed
- Upload Product, Export Product, Export Variant Data, Bulk edit field, and Clear activity logs now appear only for users with the matching permission.
- Raised the
league/csvrequirement to^9.27.
Fixed
- Fixed an error that occurred during garbage collection when
activityLogRetentionwas set tonull. - Fixed a bug where Date, Money, Assets, and Entries columns imported as plain text on stores with more than one product type.
- Fixed a bug where importing two SKUs that differ only by leading zeros deleted one of the variants.
- Fixed a bug where a disabled variant lost its per-site prices and inventory levels on import.
- Fixed an error that occurred when reimporting an export of a product with a disabled variant.
- Fixed a bug where “Replace all variants” left a disabled variant on the product.
- Fixed an error that occurred when exporting a product with a disabled variant.
- Fixed an error that could occur when exporting a product whose variants store different attributes.
- Fixed a bug where the export wrote a variant's attribute value under another attribute's column.
- Fixed a bug where “Bulk edit field” appeared on the Variants index when no configured handle matched a field on a variant.
- Fixed a bug where a SKU already used by a disabled variant on another product was not reported.
- Fixed an issue where an unreadable zip reported that the import had been queued.
- Fixed an issue where a column missing its
[siteHandle]or[location]suffix failed with an unrelated message. - Fixed an issue where uploading a filename whose ID prefix matched no product reported a generic server error.
Version 4.0.2
September 18, 2026
Fixed
- Fixed a failed import keeping the product it created, which blocked re-uploading the same CSV.
- Fixed a failed import losing an existing product's variants.
Version 4.0.1
September 15, 2026
Fixed
- Fixed an error that occurred when updating to 4.0.0.
Version 4.0.0
September 15, 2026
This release removes the
VariantAttributeOptionelement type. See upgrading to 4.x before updating.
Added
- Added the Variant Maker, which builds a product's variants from the attributes and options you pick, with a preview of what generating would change.
- Added a “Variant Maker Product Types” setting, for choosing which product types offer the Variant Maker. No product type offers it by default.
- Added a “SKU Partial” and a “Price Modifier” to each attribute option, which the Variant Maker assembles into a generated variant's SKU and price.
- Added a
variant-manager/variant-maker/plancommand, for previewing a plan from the command line. - Added drag ordering to the “Variant Attributes” listing, for arranging an attribute's options.
- Added a
resave/variant-attributescommand, for re-saving attributes and options and rewriting their search keywords.
Changed
- Nested attribute options under their attribute in a single “Variant Attributes” listing, replacing the separate “Attribute Options” section.
- Renamed the read-only “CSV Name” and “CSV Value” labels to “System Name”, and the Title field on an attribute or option to “Display Name”.
- Labeled an attribute or option by its system name, followed by its display name in brackets where the two differ, and made both searchable.
- Moved attribute registration from the end of a CSV import to each variant save, so a failed import can now leave registry rows that the orphan prune clears.
Fixed
- Fixed a bug where attribute values written outside the control panel stayed unregistered until the backfill ran.
Removed
- Removed the
VariantAttributeOptionelement type; an option is now aVariantAttributewith anattributeId, and its value isnamerather thanvalue.
Version 3.0.0
September 11, 2026
Run
./craft variant-manager/attributes/backfillto take advantage of new features.
Added
- Added Variant Attribute and Attribute Option elements for the names and values your variants store, listed under “Variant Attributes” and “Attribute Options”.
- Added a display type per attribute, set on the attribute itself, and a field layout for the attribute and one for its options, set at “Settings” -> “Plugins” -> “Variant Manager” and stored in project config.
- Added element chips to the Variant Attributes field, which open an attribute or option in a slideout.
- Added a “Variant Attribute: {name}” filter for each attribute, on variant and product listings.
- Added a “Variant Attributes” utility, plus
variant-manager/attributes/backfillandvariant-manager/attributes/orphanscommands, for populating and pruning the registry. - Added the
variant-manager:manage-attributespermission. - Added
craft.variantManager.getAttributeRegistry(), which pairs a product's attribute names and values with their elements. - Added support for showing a variant's attribute values in its card and as an element index column.
- Added a “Bulk edit field” action to the Variants index, configured with
bulkEditableVariantFields. - Added
defaultVariantTableAttributes, for extra default columns on the Variants index. - Added an “Available Display Types” setting, at “Settings” -> “Plugins” -> “Variant Manager”, which narrows the display types an attribute can be set to. It can also be set with
availableDisplayTypesinconfig/variant-manager.php. - Added a “Default Display Type” setting, on the same screen, which is the display type a newly registered attribute is given. It can also be set with
defaultDisplayType.
Changed
- Attributes and options can no longer be deleted from the control panel. Use “Prune orphans”, which removes only the rows no variant uses.
- The
variant-manager:managepermission now also gates bulk editing variants. - A Money column written with thousands separators, such as
1,234.56, now fails the import instead of being read as a smaller amount. productFieldMapandvariantFieldMapnow default to thetitle,slugandstatusproduct columns and the standard variant columns, soconfig/variant-manager.phpis only needed to change them.
Fixed
- Fixed a bug where import and export produced no variant columns without a
config/variant-manager.phpfile. - Fixed a bug where an empty
variantFieldMapentry exported a CSV with no variant columns. - Fixed the
src/config.phptemplate mapping'price' => 'basePrice', which named the price columnprice[default]where the rest of the documentation saysbasePrice[default]. - Fixed a CSV column for a standard variant field the map does not list, such as
enabledorisDefault, failing the import with an unknown field error. - Fixed a CSV with no
skucolumn raising a PHP error instead of reporting the missing column. - Fixed a renamed product column, such as
'Product Name' => 'title', being ignored on import and written twice on export. - Fixed a bug where the “Export Product” button reported only the HTTP status of a failed export.
- Fixed a bug where importing a Money field could store a cent less than the CSV held, such as
19.99becoming19.98, including on a straight export and reimport. - Fixed a bug where importing a Money field in a zero-decimal currency, such as JPY, stored an amount 100 times too large.
- Fixed an error that occurred when a Money column held a value that was not a number.
- Fixed a bug where “Upload Product” failed on sites with a
cpTriggerother thanadmin.
Removed
- Removed inline editing of attribute values on a variant, along with the
variant-manager/product-variants/save-variant-attributesaction and its route. A value now changes for every variant using it, edited from the option's slideout, or for one variant through a CSV import.
Version 2.1.0
May 13, 2026
- Add optional
statuscolumn for product imports and exports. - Refactor the Export Product sidebar button.
- Set
promotableto true by default - Improved documentation
- Support Date fields
Version 2.0.5
February 19, 2026
- Fix an error that would be thrown when gc runs during a web request
Version 2.0.4
February 4, 2026
- Include a Variant element index view
Version 2.0.3
December 2, 2025
- Fix an issue where custom fields weren't discovered on new variant imports
Version 2.0.2
November 27, 2025
- Add generic support for any relation field other than already supported Assets and Entries fields.
Version 2.0.1
June 16, 2025
- Fix issue where inventory transactions were being created for variants which have inventory tracking disabled.
Version 2.0.0
June 5, 2025
- Release v2 with support for Craft CMS 5+ and Craft Commerce 5+.