Save hours of manual work by automating how your WooCommerce products are categorized.
Automatic Product Categories helps you keep your store structured, searchable, and up-to-date - whether you're managing 30 or 3,000 products.
Define flexible rules to assign product categories and tags based on product data, events, or schedules - no coding required.
Build rules with many condition types (including stock status, whether stock is managed, attribute values, attribute term names, and category lists with is/is not matching), reorder conditions as needed, and use inline help where selections work as multiselects.
Example use cases
- After imports or migrations - bring large catalogs in line by assigning categories and tags from product data as you standardize.
- Parent and child categories - e.g. when a product is in a child category, automatically add a parent category too.
- Stock or sales-based merchandising - organize or highlight products using stock status, stock quantity, total sales, or sale state.
- "New" or "recently updated" collections - use days since created or modified to keep time-based categories or tags accurate.
- Seasonal or promotional groups - move products in or out of promo categories using titles, tags, attributes, or scheduled runs.
More context and ideas on the BerryPress blog.
1.2.10
- Fix: "For new products" now works for products created with the WooCommerce CSV importer, the REST API, sync plugins and the product editor. Rules now run after WooCommerce has finished saving a new product, instead of on the empty auto-draft or before the product's categories were saved.
- Change: Rules set to "For existing products (when updated)" no longer run when a product is first saved in the editor. Use "For new products" for that case.
- Add: Optional debug log (new "Debug log" page, off by default) showing which trigger ran which rule on which product, and the terms before and after. It can be cleared at any time and keeps the last 30,000 entries (approximately).
- Fix: Fatal error when saving rules without any rule in the submitted form (for example after removing the last rule), which also left the scheduled event in place.
- Fix: The rule settings toggle ignored clicks on its arrow icon.
- Styling improvements in the rules table
- Add Black Friday promo bar
1.2.9
- Improvement: For manual runs, disable WordPress object caching while the rules were running, which may significantly impact performance when processing a large number of products.
- Styling improvements
1.2.8
- Fix: Performance, process 50 products per AJAX batch instead of 5 when running rules manually.
1.2.7
- Add: New condition "attribute term name" - text comparison on attribute term names across all attributes
- Add: New condition "category value" - select categories from list with is/is not matching
- Add: "is not" option for the "attribute value" condition
- Add: Tooltips explaining multiselect behavior for category value and attribute value conditions
- Add: Option to reorder rule conditions
1.2.6
- Fix: Stock status condition now works for products without "manage stock" enabled
- Add: New condition "manage stock enabled" (yes/no)
1.2.5
- Fix: Scheduled trigger issues
- Add: New hooks for plugin extensibility
1.2.4
- Add: Process rules in batches to avoid timeout issues
- Fix: Daily schedule rule execution
- Fix: potential run order issue
1.2.3
- Don't exclude the default category from the category list in rules
1.2.2
Fix: Resolved an issue where product rules failed to match tags and categories containing special characters (e.g. &)
1.2.1
- Fix: When bulk-editing rules, settings were not saved for newly added rules.
1.2.0
- Store rules in a separate table
- Add columns sorting
- Mixed styling changes
- Add created date column
1.1.8
- Fix new actions not saving
- Fix error outline icon not displaying
1.1.7
1.1.6
- Styling changes, optimize icon font size
- Minify CSS files
- Plugin check fixes
- Page length option save
1.1.5
- Fix potential memory issues
1.1.4
- Add: pagination to rule list
- Mixed small fixes
1.1.3
- Fix: Save all and run selected doesn't run the rule
1.1.2
- Fix: Limit submitted rule fields to prevent exceeding PHP max_input_vars
- Change: Update menu item
- Add documentation tooltips
- Update: Rename condition matches and adjust "not" condition behavior to resolve confusion with category/tag conditions
- Update: Rename condition comparison options
1.1.1
1.1.0
- Completely refreshed plugin UI.
- Refactored logic, removed unnecessary code, improved error handling.
- JavaScript: Fixed JS inconsistencies.
- Updated rule execution to apply to all product statuses, not just published ones.
- Add to conditions "product status"
- Add rule name field
- Rebrand to BerryPress
1.0.8
- Fix error when a rule references a category or tag that has been removed.
1.0.7
1.0.6
- Show "and" operator between multiple rule conditions
- Declare text domain
- Declare plugin dependency
1.0.5
- Add rule condition: Product total sales
- Add rule condition: Days since product created
- Add rule condition: Days since product modified
- Add rule condition: Product category
- Add the ability to automatically run rules daily on publicly published products
- Add case insensitive match types for "Product meta field" condition
- Improve UI layout on smaller monitors
- Fix: Certain comparison settings (for example, "less than") result in an exception when saving
- Fix: PHP fatal error related to exception
- Fix: Certain match settings on numeric conditions result in an exception when saving rules
- Fix: Exception when saving rule including a "Product price" condition
- Fix: JavaScript error related to "Product meta field" condition
- Fix: Product attribute value condition not working correctly
1.0.4
- When removing product categories due to an enabled rule not matching, add the default (Uncategorized) category if the product has no other categories
- Don't show the default (Uncategorized) category in the "Categories/Tags to Add/Remove" column
- Label tweak
1.0.3
- Added case-insensitive string matching options
- Added option not to remove categories/tags for non-matching rules
- Added product tag rule condition
- Clarified button label
1.0.2
- Add header comments to JS and CSS files
1.0.1
- Add an additional permissions check to admin functionality
1.0.0