What is Storzen Product Tag Assistant?
Storzen Product Tag Assistant adds product tags in WooCommerce automatically. In Rules mode (the default, free, no API key) you define simple rules and the plugin tags products on your own server. In optional AI mode it asks OpenAI, Anthropic (Claude), Google Gemini or DeepSeek for tags, categories and attributes, and lets you review them before anything is saved.
Scripts and styles load only on the product edit screen and on the plugin's own settings tab. Nothing is added to your storefront.
Requirements
| Requirement | Minimum | Tested up to |
|---|---|---|
| WordPress | 6.7 | 7.1 |
| WooCommerce | 8.0 | 9.9 |
| PHP | 8.1 | β |
| AI provider API key | Optional, AI mode only. Your own OpenAI, Anthropic, Google or DeepSeek key; the provider bills you directly | |
Installation
{S}.zip and click Install Now. You can also upload the folder to /wp-content/plugins/.File Structure
Rules Mode
Rules mode is free, needs no API key and sends no data anywhere. Add rules under WooCommerce β Settings β Tag Assistant β Tagging Rules. A product that matches a rule gets that rule's tags.
| Rule type | Matches when⦠|
|---|---|
| If text contains | The title, the description, or either contains one or more keywords (comma-separated), anywhere in the text or as a whole word. |
| If category is | The product is in that category, including its sub-categories. |
| If attribute is | The product has that attribute, optionally with a given value. |
You can also pick attribute names (for example Material) to turn their values into tags automatically. Rules only add tags; the tags a product already has are kept. Rules are evaluated on your server only when you preview, save a product with auto-tag on, or run a bulk or catalog job.
Product Panel
Every product edit screen has a Tag Assistant panel in the sidebar. Click Get AI Suggestions to get tags, categories and attributes as clickable chips. Selected chips are highlighted; click a chip to deselect it, then click Apply Selected.
What happens when you apply
| Suggestion | Behavior |
|---|---|
| Tags | Replace the product's current tags. Missing tags are created. |
| Categories | Added to the product's existing categories. Nothing is removed. |
| Attributes | Added as visible product attributes (not used for variations). |
Bulk Tagging
Select products in Products β All Products, pick a bulk action and click Apply.
| Bulk action | Result |
|---|---|
| Tag Assistant: Suggest tags (preview) | Analyses products and logs the suggestions without changing them. |
| Tag Assistant: Auto-tag & apply | Analyses products and applies the suggestions straight away. |
A notice reports how many products succeeded and failed. The plugin pauses one second between products to avoid API rate limits, so large batches take longer. Products you are not allowed to edit are skipped and counted as failed.
Catalog Tagging
Tag a whole store without keeping a browser tab open. Go to WooCommerce β Settings β Tag Assistant β Catalog Tagging and choose a job:
| Button | Result |
|---|---|
| Tag untagged products | Processes only products that have no tags. |
| Re-tag all products | Processes every product. Existing tags are replaced, so a confirmation is shown first. |
The job runs in small batches through Action Scheduler, which is included with WooCommerce, so large catalogs do not hit PHP time limits. A progress bar shows processed of total with tagged and failed counts, and you can Pause, Resume or Cancel at any time.
Built-in safety
- The job stops by itself after 5 failures in a row (for example a wrong key or no API credit). Fix the problem, then click Resume.
- If OpenAI rate-limits a request (HTTP 429), the plugin waits 60 seconds and retries the same product.
- Products the starting user cannot edit are skipped and counted as failed.
- Only one job can run at a time. Deactivating the plugin pauses a running job.
On Products β All Products, the Untagged link above the table lists products that have no tags.
Auto-tag on Save
Turn on Auto-tag on Save to call the AI each time a product is published or updated. It is off by default. If you already clicked Apply Selected in the panel, the next save skips the automatic run so the product is not tagged twice.
AI Providers
Switch to AI mode to use your own account with one provider. Each provider has a fast, low-cost default model and a higher-accuracy model.
| Provider | Models |
|---|---|
| OpenAI | GPT-4o Mini (default), GPT-4o |
| Anthropic (Claude) | Claude Haiku 4.5 (default), Claude Sonnet 5.5 |
| Google Gemini | Gemini 3.1 Flash-Lite (default), Gemini 3.5 Flash |
| DeepSeek | DeepSeek Flash (default), DeepSeek V4 Pro |
Provider model names change over time. Developers can update them without a plugin release through the aptwc_provider_models filter. DeepSeek's privacy policy says data is processed and stored in China, so review it before choosing that provider.
Developers can add more providers with the aptwc_ai_providers filter by implementing Provider_Interface. Applied AI tags replace a product's current tags; categories and attributes are added.
New & Imported Products
Products created outside the product editor never trigger Auto-tag on save. Switch on Tag new products from any source (WooCommerce β Settings β Tag Assistant β Tagging Behaviour) and the plugin tags them for you.
- Covers the WooCommerce CSV importer, the REST API, WP All Import, dropshipping tools and any other plugin that creates products.
- Each new product is queued with Action Scheduler and tagged about 30 seconds later, so the import stays fast and the product's categories and attributes are already saved.
- Works in Rules and AI mode. It is off by default.
- Skip new products that already have tags is on by default, so tags that come with your import file are never replaced.
Safeguards
- If the AI provider rate-limits a request, it is retried up to 5 times with a growing delay.
- After 10 API failures in a row (for example a wrong key or no credit), tagging of new products pauses for 15 minutes instead of retrying thousands of times.
- Products already tagged by the plugin (for example by a catalog job) are skipped.
aptwc_should_tag_new_product filter.All Settings
Found under WooCommerce β Settings β Tag Assistant.
| Option key | Setting | Default |
|---|---|---|
| aptwc_mode | Tagging mode (rules or ai) | rules; ai if an API key already existed |
| aptwc_rules | Tagging rules (array) | empty |
| aptwc_auto_tag_new | Tag new products from any source | no |
| aptwc_auto_tag_new_skip_tagged | Skip new products that already have tags | yes |
| aptwc_rules_attr_names | Attributes to turn into tags | empty |
| aptwc_api_provider | AI provider | openai |
| aptwc_api_key / aptwc_model | OpenAI key and model | empty / gpt-4o-mini |
| aptwc_key_anthropic / aptwc_model_anthropic | Anthropic key and model | empty / claude-haiku-4-5-20251001 |
| aptwc_key_gemini / aptwc_model_gemini | Gemini key and model | empty / gemini-3.1-flash-lite |
| aptwc_key_deepseek / aptwc_model_deepseek | DeepSeek key and model | empty / deepseek-flash |
| aptwc_auto_tag | Auto-tag on Save | no |
| aptwc_max_tags | Max tags per product (1β15) | 5 |
| aptwc_max_cats | Max categories per product (1β5) | 2 |
| aptwc_prompt_template | Custom system prompt (advanced) | empty |
tags, categories and attributes keys. Leave it blank to use the built-in prompt.REST API
Namespace: /wp-json/storzen-product-tag-assistant-for-woocommerce/v1. Routes need a logged-in user with a valid REST nonce. All use POST except GET /catalog and GET /products/{id}/suggest.
| Route | Permission |
|---|---|
| /products/{id}/suggest | Can edit that specific product |
| /products/{id}/apply | Can edit that specific product |
| /bulk | manage_woocommerce, plus edit rights per product |
| /test-connection | manage_woocommerce |
| GET /catalog | manage_woocommerce β current job status |
| /catalog/start | manage_woocommerce β body: mode = untagged | all |
| /catalog/{pause|resume|cancel} | manage_woocommerce |
Hooks & Data
Hooks
| Hook | Purpose |
|---|---|
| aptwc_settings_fields | Filter the settings fields array |
| aptwc_prompt_parts | Filter the product data parts sent in the prompt |
| aptwc_ai_messages | Filter the final message array sent to OpenAI |
| aptwc_suggestions_applied | Action fired after suggestions are applied. Args: product ID, suggestions, source |
| aptwc_rules_suggestions | Filter the tags produced by Rules mode |
| aptwc_should_tag_new_product | Return false to skip a new product. Args: bool, product ID |
| aptwc_new_product_delay | Seconds to wait before a new product is tagged (default 30) |
| aptwc_max_rules | Filter the maximum number of rules (default 100) |
| aptwc_ai_providers | Register or remove AI providers |
| aptwc_provider_models | Filter a provider's model list |
Stored data
- Post meta:
_aptwc_last_tagged,_aptwc_last_tokens - Options: the settings above plus
aptwc_version,aptwc_db_versionandaptwc_catalog_job(job state; the API key, custom prompt and job state are not autoloaded) - Log table
{prefix}aptwc_log: product, source, status, applied tags/categories/attributes, tokens used, time - Uninstalling removes all of the above. Tags and categories already on products are kept.
Privacy & OpenAI
In Rules mode the plugin contacts no external service. In AI mode it sends data only to the one provider you chose (api.openai.com, api.anthropic.com, generativelanguage.googleapis.com or api.deepseek.com), and only when you click Get AI Suggestions or Test API Connection, run a bulk or catalog job, or enable auto-tagging. Nothing is sent on activation.
Data sent: product title, short description, an excerpt of the description, SKU and existing category names. No customer, order or personal data is sent. See the terms and privacy policies of OpenAI, Anthropic and Google and DeepSeek.
Frequently Asked Questions
How do I tag imported products automatically?
Can I tag my whole catalog?
Do I need an API key?
Will it overwrite my existing tags?
Does it work with variable, grouped and external products?
Will it slow down my store?
Where are the logs?
Is it HPOS compatible?
Changelog
- Tag new products from any source: CSV importer, REST API, WP All Import and other plugins, in the background
- Skip products that already have tags (default); rate-limit retries and a failure circuit breaker
- New filters:
aptwc_should_tag_new_productandaptwc_new_product_delay
- Rules mode: free tagging by keyword, category or attribute, no API key (default for new installs)
- AI providers: OpenAI, Anthropic (Claude), Google Gemini and DeepSeek
- Catalog Tagging: background job with progress bar, pause, resume and cancel
- "Untagged" view on the products list
- Job stops after repeated errors and retries after rate limits
- API key, custom prompt and job state no longer autoloaded
- Stricter nonce handling on settings save; removed unneeded rewrite flush
- AI tag, category and attribute suggestions in the product panel
- Bulk preview and bulk apply actions
- Optional auto-tag on save
- Settings tab with model, limits and custom prompt
- Activity log table and WooCommerce log integration
- HPOS compatible, GDPR privacy hooks, translation-ready