Automatically generate WooCommerce product SKUs from the product / attribute slugs and/or IDs.
|Author:||SkyVerge (profile at wordpress.org)|
|WordPress version required:||4.4|
|WordPress version tested:||5.4.1|
|Added to WordPress repository:||13-04-2014|
|Total downloads:||125 188|
|Active installs:||10 000+|
Click to start download
Requires: WooCommerce 3.0.9 or newer
Automatically generate a SKU for parent / simple products, variations, or both when the product is published or updated.
IMPORTANT: The SKU field will be disabled for SKUs being generated by the plugin. Your own previously created SKUs will be overridden if you update a product while generating SKUs, and they will change if you change your product slug (while using this to generate them). Be sure you want to complete automate SKUs if you leave this enabled all of the time.
You can also selectively enable and disable the plugin if you don’t want to override existing SKUs when saving products. You can view product documentation for help.
SKUs for simple, external, or parent products can be generated from the product’s slug (hyphenated name) or ID. For example, a product with the slug
wp-tee-shirt can have a SKU of
192 (whatever the product’s ID is). This SKU will be generated any time the product is published or updated.
If the product is a variable product, this plugin can also generate SKUs for the product variations if desired (these typically inherit the parent SKU). Variation SKUs can either append attribute slugs or variation IDs for each variation to the parent SKU.
Here are some samples of different SKU formats that can be created with this plugin.
You can also manually set simple / parent SKUs, or manually set the variation SKUs, if you don’t want the plugin to generate them for you.
This plugin provides options to:
- automatically generate simple / parent product SKUs when the product is published or updated
- generate simple / parent product SKUs using the product slug or ID
- automatically generate SKUs for product variations when the product is published or updated
- generate variation SKUs using the attribute slugs or variation ID
- use the bulk product update action to easily force SKU generation for more than one product — handy to bulk-generate SKUs for products created before installing this plugin
SKUs for all product types
The WooCommerce Product SKU generator lets you determine which SKUs should be generated automatically, and whether these SKUs should use product slugs or IDs. If a SKU is generated, the input for that SKU will be disabled since you cannot adjust it.
If you choose not to generate a SKU, then you can enter your own SKU. For example, if you only generate variation SKUs, then you can enter a parent product SKU. This will be used as the base for your generated variation SKUs, and slugs or IDs will be appended to it.
If you only create parent / simple SKUs, you will be able to manually create your own variation SKUs, as these will not be overridden by saving or updating a product.
You can bulk add SKUs to products that you’ve created prior to installing this plugin. If you select the products you want to update, then bulk edit them, all you have to do is hit “Update”. When the products are saved, SKUs will be generated for all products.
This action will also automatically generate the SKUs for product variations if you have them enabled.
- See the product page for full details and documentation
- View more of SkyVerge’s free WooCommerce extensions
- View all WooCommerce extensions from SkyVerge
The plugin text domain is:
By default, if you have an attribute name with a space (such as “Burnt Marshmallow” for color), the SKU will use this exact formatting. A SKU for this variation would look like:
If you enable the setting to replace spaces, this will instead look like:
parentSKU-Burnt-Marshmallow — depending on which setting you’ve chose. This is helpful if your external fulfillment service does not allow spaces in SKUs.
In very rare cases, you may find that variation SKUs do not sort attributes in the same order. For example, one variation may be
tee-shirt-large-black, and another could be
If this occurs, you can force attributes to sort themselves consistently before generating the SKU, which will resolve this problem. You could also consider this for new installations.
Be sure you want to enable this if you have existing SKUs, as variation SKUs that were generated previously could be overridden while updating a product – they’ll be re-generated with the forced attribute order.
To force attribute sorting, add this code snippet where you add your site modifications, such as a custom plugin or theme’s functions.php:
add_filter( 'wc_sku_generator_force_attribute_sorting', '__return_true' );
Automatic SKU generation upon publish / update
Automatic variation SKUs based on attributes (if enabled)
Variation SKU generated when you set the parent SKU (if you only generate variation SKUs)
Some sample generated SKU formats
What happens to my old SKUs?
This plugin generates SKUs any time products are created or updated. Your old SKUs will be overridden if you use it – only leave the plugin enabled if you don’t want to manage SKUs yourself.
You can also selectively disable and re-enable the plugin if you don’t want to override SKUs when saving products.
How do I add SKUs to old products?
Select the products you’d like to generate SKUs for under Products. Go to the bulk actions in the top left and click “Edit”, then apply. All you need to do is hit “Update” to save these products, and SKUs will automatically be added.
Why does whatever I enter for the variation SKU get overridden?
Variation SKUs can be set manually if you’re not generating them. They will be overridden if your settings are set auto-generate them, even if you try to change them manually. Please check your settings here.
If you’d like to change a SKU for a product, disable the plugin, change the SKU, and update the product. You can re-enable the plugin as needed.
I’m using IDs for SKUs. Will they be sequential?
Roughly, yes. Actually, no. The SKUs will increase as you add more products / variations, but these use the post ID from WordPress (similar to your orders). Each SKU will be higher than the last, but they won’t be exactly in order, as other posts (like blog posts, orders or products), also use the same ID counter. Your SKUs will increase, but skip numbers.
Can I use something other than the product slug to generate the SKUs?
Yep! Version 2.0 added the ability to use product slugs or IDs.
For more advanced uses, you can use the
wc_sku_generator_sku filter, which passes the parent SKU as the value and the product as a variable, to change what’s used as the parent SKU. You can change the variation SKU using the
You must use a unique value for SKUs (WooCommerce checks this). For example, you could generate a unique string or number in a custom snippet to use for the SKU with the help of a developer.
Sometimes attributes for my variation SKUs aren’t in the same order. Can I fix this?
We’ve seen this happen in only one situation, so we have a filter + code snippet rather than a setting for this. Please see the instructions in Other Notes to force the attribute order.
This is handy! Can I contribute?
Yes you can! Join in on our GitHub repository and submit a pull request 🙂
2020.05.04 – version 2.4.5
- Misc – Add support for WooCommerce 4.1
2020.03.10 – version 2.4.4
- Misc – Add support for WooCommerce 4.0
2020.02.12 – version 2.4.3
- Fix – Prevent PHP 7.4 deprecated notice while generating variation SKUs
2020.02.05 – version 2.4.2
- Misc – Add support for WooCommerce 3.9
2019.11.11 – version 2.4.1
- Misc – Add support for WooCommerce 3.8
2019.08.15 – version 2.4.0
- Misc – Add support for WooCommerce 3.7
- Misc – Remove support for WooCommerce 2.6
2019.06.12 – version 2.3.5
- Tweak – Ensure generated SKUs are unique before saving
- Fix – Prevent errors when saving invalid SKUs
2018.07.17 – version 2.3.4
- Misc – Remove support for WooCommerce 2.5
2017.09.10 – version 2.3.3
- Tweak – POST variable SKUs when disabled to ensure plugins checking for this specifically find it
2017.08.22 – version 2.3.2
- Tweak: Disable variation SKU inputs when being generated
- Fix: PHP warning when WooCommerce is outdated
2017.03.27 – version 2.3.1
- Fix: Skip trying to generate a SKU for removed variations, which will cause errors
2017.03.23 – version 2.3.0
- Feature: adds setting to remove spaces from attribute names
- Fix: SKUs are now set for out of stock variations
- Misc: bump required WP version to 4.1
- Misc: added support for WooCommerce 3.0
- Misc: removed support for WooCommerce 2.3.x and 2.4.x
2016.05.31 – version 2.2.0
- Feature: attribute names can now replace spaces with hyphens in addition to underscores
- Misc: added support for WooCommerce 2.6
- Misc: removed support for WooCommerce 2.2
2016.01.18 – version 2.1.0
- Feature: adds setting to replace spaces in attribute names with underscores if variation SKUs use them
- Misc: updated text domain to
woocommerce-product-sku-generator— please update translations!
- Misc: added WooCommerce 2.5 support
2015.08.20 – version 2.0.1
- Fix: SKUs generated from UTF-8 characters are no longer encoded
2015.08.19 – version 2.0.0
- Feature: You can now generate SKUs using slugs or IDs for products / variations
- Misc: confirms WooCommerce 2.4 compatibility
- Misc: requires WooCommerce 2.2 or newer
- Misc: refactored for better performance and to add install / upgrade routine
- Misc: introduce
wc_sku_generator_variation_sku_formatfilters to adjust generated SKU for variations
- Misc: introduce
wc_sku_generator_force_sortingfilter to force attribute sorting in SKUs, props @humancopy!
2015.03.03 – version 1.2.2
- Misc: added
wc_sku_generator_skufilter to change generated SKU base for simple / parent products
2015.02.06 – version 1.2.1
- Fix: bug with loading translations
2015.02.04 – version 1.2.0
- Misc: WooCommerce 2.3 compatibility
- Misc: Settings moved to Product Data (WC 2.2)
- Misc: Text domain updated to
2014.08.29 – version 1.1.1
- Fix: issue with default option being selected
2014.08.12 – version 1.1
- New: Option to generate only variation SKUs automatically
2014.07.23 – version 1.0.2
2014.06.13 – version 1.0.1
- Re-versioned + incremented for bug fix
2014.04.15 – version 0.1
- Initial Release