Sayan Variation Swatches
for WooCommerce
Replace WooCommerce dropdowns with color, image, label, and radio swatches on product, shop, and archive pages. Everything described on this page is included in the free plugin — no key or account needed.
Applies to version 1.0.6 · Last updated October 19, 2026
Overview & Features
Sayan Variation Swatches for WooCommerce is a lightweight WooCommerce plugin that replaces the default variation dropdown selects with visually rich swatches — color pickers, image tiles, label buttons, and radio selectors.
4 Swatch Types
Color, Image, Label/Button, and Radio — each with full customization.
3 Swatch Shapes
Square, Rounded, and Circle — set globally or override per attribute term.
Archive Page Swatches
Show compact swatches on shop, category, and archive pages.
Variation Image Auto-Swap
Gallery image updates instantly on swatch click — no AJAX, zero lag.
Dual / Split Colors
Show two colors in a single swatch with a diagonal split gradient.
Out-of-Stock Handling
Blur with cross, blur only, or hide unavailable swatches automatically.
Notify Me Message
Optional message and link when a shopper picks an unavailable option.
Smart Variation Finder
Optional search box on product pages. Off until you enable it.
Export / Import
Move your settings between sites with a JSON file.
Live Swatch Preview
Below is a preview of how each swatch type renders on your product page:
Color Swatches
Label / Button Swatches
Radio Swatches
System Requirements
| Component | Minimum | Recommended |
|---|---|---|
| WordPress | 6.4 | 7.0+ |
| WooCommerce | 7.0 | Latest stable |
| PHP | 7.4 | 8.3+ |
| MySQL / MariaDB | 5.6 / 10.1 | 8.0+ / 10.4+ |
| Browser | Chrome 90+, Firefox 88+, Safari 14+, Edge 90+ | |
Installation
Method 1 — WordPress Admin (Recommended)
Upload the plugin
Go to Plugins → Add New → Upload Plugin, choose the sayan-variation-swatches.zip file, and click Install Now.
Activate
Click Activate Plugin after installation completes.
Configure
Go to Variation Swatches in the left WordPress admin menu to adjust global settings.
Set up attributes
Go to Products → Attributes, click any attribute name, then edit individual terms to assign swatch types and colors.
Method 2 — Manual FTP
# Unzip and upload to your plugins directory
unzip sayan-variation-swatches.zip
# Upload the folder via FTP to:
/wp-content/plugins/sayan-variation-swatches/
Then activate from Plugins → Installed Plugins.
Swatch Types
The plugin supports 4 swatch types plus the default dropdown. Set the type on each attribute term, or override it for a single product (see Setting Up Attribute Swatches).
| Type | Best For | Data Required |
|---|---|---|
| Color | Color variants, fabric shades, paint options | Hex color (+ optional second color for dual) |
| Image | Patterns, textures, material previews | Upload an image per term |
| Label | Sizes (S/M/L/XL), styles, materials as text | None — uses term name |
| Radio | Yes/No options, simple choices | None — uses term name |
| Select | Keep as default WooCommerce dropdown | None |
Admin Screenshot — Attribute Term Edit
Dual / Split Color
When you fill in both the Swatch Color and Second Color fields, the swatch renders as a diagonal split — useful for multicolor or two-tone fabric options.
Swatch Shapes
Three shape options are available globally from Variation Swatches → General → Swatch Shape. To use a different shape for one attribute value (for example Circle for colors, Square for sizes), edit the term and choose Swatch Shape Override. It applies on product pages and archive pages.
Square
Sharp 90° corners. Clean and modern.
Rounded
Soft corners. Default and most versatile.
Circle
Fully round. Ideal for color swatches.
Archive / Shop Page Swatches
Enable compact swatches on your shop, category, and archive pages so customers can preview color options without clicking into each product.
Enable this from Variation Swatches → Shop / Archive → Show Swatches on Archive. You can also set a smaller swatch size specifically for archive pages.
- When a product has more options than fit, a +N badge shows how many are hidden.
- Archive swatches also appear inside the WooCommerce Product Collection and All Products blocks.
- Archive swatches are built from global attributes only.
Variation Image Auto-Swap
When a customer clicks a swatch, the main product gallery image automatically updates to show the matching variation image — with no page reload, no AJAX request, and no configuration required.
How it works
Set variation images in WooCommerce
In the product editor, go to Product data → Variations. For each variation, upload a dedicated image using the variation image picker (the small camera icon).
Plugin builds image map at page load
When the product page loads, the plugin reads all variation images and embeds a slug → image data map directly into the swatch HTML. No AJAX calls are ever made.
Swatch click triggers instant swap
Clicking a swatch updates the gallery <img> src, srcset, sizes, and alt — as well as the PhotoSwipe / lightbox href. The transition is immediate.
Deselect restores original image
Clicking a selected swatch again (or pressing the WooCommerce "Clear" button) restores the product's original main gallery image.
Out-of-Stock Styles
Configure from Variation Swatches → General → Out-of-Stock Style. Three options are available:
| Style | Appearance | Best For |
|---|---|---|
| Blur with Cross Default | Swatch is faded (38% opacity) with a diagonal line across it | Most stores — clearly communicates unavailability |
| Blur only | Swatch is faded without the cross line | Cleaner look when the cross feels too aggressive |
| Hide | Out-of-stock swatches are completely removed | Stores where showing unavailable options causes confusion |
Notify Me Message
When a shopper picks an option that is not available, a short message appears under the swatches. Configure it under Variation Swatches → General → Out-of-Stock "Notify Me":
| Setting | Default | Description |
|---|---|---|
| Show Notify Me | Yes | Turns the message on or off. |
| Message Text | Notify me when available | Up to 80 characters. |
| Link URL | Empty | Optional. Only http and https links are accepted. Leave empty to show the text without a link. |
Tooltip
When enabled, hovering over any swatch shows a small label with the attribute term name (e.g. "Ocean Blue", "Size M"). By default it appears above the swatch; you can move it to the bottom, left or right.
Customize tooltip colors and font size from Variation Swatches → Design & Style → Colors.
Tooltip Position
Top, Bottom, Left or Right of the swatch. Set under Variation Swatches → Design & Style → Tooltip Position. Default: Top
Tooltip BG Color
Background color of the tooltip bubble. Default: #333333
Tooltip Text Color
Text color inside the tooltip. Default: #ffffff
Tooltip Font Size
Font size in pixels (10–24px). Default: 13px
Enable/Disable
Toggle from Variation Swatches → General → Enable Tooltip.
Smart Variation Finder
The Smart Variation Finder adds a small search box above the swatches on variable product pages. A shopper can type words such as "dark blue large" and the matching swatches are selected for them.
Turn it on
Go to Variation Swatches → General → Smart Variation Finder and switch on Enable Finder, then save.
Try it on a product
Open a variable product page, type an option name in the Find a variation box and pick a suggestion.
Setting Up Attribute Swatches
Step-by-Step: Setting up Color Swatches
Go to Products → Attributes
Find your Color attribute (e.g. pa_color) in the list.
Click the attribute name
This opens the term list for that attribute — you'll see all color options (Red, Blue, Green, etc.).
Edit each term
Click Edit next to a term (e.g. "Ocean Blue"). You'll see the plugin's new fields at the bottom of the edit form.
Set Swatch Type to "Color"
The Swatch Color field will appear. Click it to open the color picker and choose the color.
Optionally add a Second Color
Fill in the Second Color field to create a dual/split swatch.
Click Update
Repeat for each term. Your product pages will now show color swatches instead of the dropdown.
Step-by-Step: Setting up Image Swatches
Edit the attribute term
Follow steps 1–3 above for your texture or pattern attribute.
Set Swatch Type to "Image"
The Swatch Image uploader will appear.
Upload or select an image
Click Upload / Select Image to open the WordPress Media Library. Choose or upload your image. Recommended size: at least 80×80px.
Click Update
The image thumbnail will be shown in both the term list (Swatch column) and on the product page.
Per-Product Swatch Type
Add a global attribute to the product
In the product editor open Product data → Attributes, add the attribute and click Save attributes (or update the product).
Choose a type
Below the attribute list, under Swatch type for this product, pick a type for each attribute. Leave — Use attribute setting — to keep the term settings.
Update the product
The override applies to that product only and takes precedence over the term settings.
Per-Term Shape Override
Edit an attribute term and use Swatch Shape Override to give that value its own shape. Choose — Use Global Setting — to follow the global shape.
Settings — General
Access settings at Variation Swatches → General in the WordPress admin.
| Setting | Default | Description |
|---|---|---|
| Enable Swatches | Yes | Master toggle. Disabling reverts all product pages to default WooCommerce dropdowns. |
| Auto-convert Dropdowns | No | When on, any attribute term that has no swatch type saved yet is shown as a label/button swatch instead of a dropdown. |
| Swatch Shape | Rounded | Global shape: Square, Rounded, or Circle. Can be overridden per attribute term. |
| Out-of-Stock Style | Blur with Cross | How unavailable swatches appear. Options: Blur with Cross, Blur only, Hide. |
| Show Selected Name | Yes | Shows the selected attribute value name next to the swatch group (e.g. "Color: Ocean Blue"). |
| Enable Tooltip | Yes | Shows attribute name on swatch hover. |
| Show Notify Me | Yes | Shows a message when a shopper picks an unavailable option. See Out-of-Stock Styles. |
| Notify Me Message Text / Link URL | Notify me when available / empty | Text (max 80 characters) and optional http/https link for the message. |
| Enable Finder (Smart Variation Finder) | No | Adds the search box on product pages. See Smart Variation Finder. |
Settings — Design & Style
| Setting | Default | Description |
|---|---|---|
| Width (px) | 36 | Swatch width on product pages (20–120px). |
| Height (px) | 36 | Swatch height on product pages (20–120px). |
| Border Color | #dddddd | Default border color for unselected swatches. |
| Selected Border Color | #333333 | Border color when a swatch is selected. |
| Checkmark | Enabled / #ffffff | Show a white checkmark on the selected swatch. Toggle + color picker. |
| Tooltip Position | Top | Top, Bottom, Left or Right of the swatch. |
| Tooltip BG Color | #333333 | Tooltip background. |
| Tooltip Text Color | #ffffff | Tooltip text color. |
| Tooltip Font Size | 13px | Tooltip font size (10–24px). |
Settings — Shop / Archive
| Setting | Default | Description |
|---|---|---|
| Show Swatches on Archive | Yes | Display compact swatches on shop, category, and archive pages. |
| Archive Swatch Width | 28px | Width of archive page swatches (16–80px). |
| Archive Swatch Height | 28px | Height of archive page swatches (16–80px). |
Custom CSS
Access at Variation Swatches → Advanced → Custom CSS. Enable the toggle and paste your CSS. All swatch elements use the .svsw-* class prefix. Only administrators can edit custom CSS; HTML tags and @import rules are removed when you save.
Useful CSS Classes
| Class | Description |
|---|---|
.svsw-swatches-wrap | Outer wrapper for each attribute's swatch group |
.svsw-swatches | Flex container holding all swatches |
.svsw-swatch | Individual swatch element |
.svsw-type-color | Color swatch type |
.svsw-type-image | Image swatch type |
.svsw-type-label | Label/button swatch type |
.svsw-type-radio | Radio swatch type |
.svsw-swatch.selected | Currently selected swatch |
.svsw-swatch.svsw-unavailable | Out-of-stock swatch |
.svsw-tooltip | Tooltip bubble |
.svsw-selected-name | Span showing selected attribute name |
.svsw-archive-swatches | Archive page swatch container |
.svsw-shape-square | Applied when shape is square |
.svsw-shape-rounded | Applied when shape is rounded |
.svsw-shape-circle | Applied when shape is circle |
CSS Custom Properties
The plugin injects these CSS variables dynamically based on your settings. You can override them in your custom CSS:
:root {
--svsw-width: 36px; /* Product page swatch width */
--svsw-height: 36px; /* Product page swatch height */
--svsw-archive-width: 28px; /* Archive swatch width */
--svsw-archive-height: 28px; /* Archive swatch height */
--svsw-border-color: #dddddd; /* Default border */
--svsw-selected-border-color: #333333; /* Selected border */
--svsw-checkmark-color: #ffffff; /* Checkmark color */
--svsw-tooltip-bg: #333333; /* Tooltip background */
--svsw-tooltip-color: #ffffff; /* Tooltip text */
--svsw-tooltip-font-size: 13px; /* Tooltip font size */
}
Example: Make label swatches pill-shaped
.svsw-type-label .svsw-swatch {
border-radius: 50px !important;
padding: 0 16px;
min-width: auto;
}
Example: Larger color swatches only
.svsw-type-color .svsw-swatch {
width: 48px !important;
height: 48px !important;
}
Example: Custom selected state highlight
.svsw-swatch.selected {
box-shadow: 0 0 0 3px #ff6b35 !important;
}
Export / Import & Data
Find these options at Variation Swatches → Advanced. Export and import are available to administrators.
Export and import settings
Export
Click Download settings (JSON). The file contains the plugin settings only; swatch colors and images saved on attribute terms are not included.
Import
On the other site choose the file under Import and click Import settings. Only a .json file exported from this plugin, up to 64 KB, is accepted. Unknown or invalid values are rejected.
Delete data on uninstall
Turn on Delete Data on Uninstall (Advanced → Data) if you want the plugin's settings and the swatch values saved on terms and products removed when you delete the plugin. It is off by default, so your swatches survive a reinstall.
Keyboard Navigation & Accessibility
All swatches are fully keyboard-navigable and screen-reader friendly. They use role="radio", aria-checked, aria-label, and tabindex="0".
| Key | Action |
|---|---|
| Tab | Move focus to the swatch group |
| → / ↓ | Move to the next swatch |
| ← / ↑ | Move to the previous swatch |
| Enter / Space | Select the focused swatch |
| Escape | Deselect the current swatch |
Compatibility
✅ WordPress 7.1
Tested up to WordPress 7.1. The plugin uses taxonomy term screens, the product editor attribute panel and its own settings page.
✅ WooCommerce HPOS
High-Performance Order Storage compatibility explicitly declared. No order data is touched by this plugin.
✅ WC Blocks
Cart & Checkout Blocks compatibility declared. Swatches operate on the product page and do not touch the block cart/checkout.
✅ Variable Products
Full support for variable products. Works with all standard WooCommerce variation selectors and the wc-add-to-cart-variation script.
✅ Popular Themes
Built on standard WooCommerce hooks, so it is designed to work with most themes, for example Storefront, Astra and GeneratePress. Please check your own theme before going live.
✅ WPML / Polylang
Translation-ready. All strings use the sayan-variation-swatches text domain and a .pot file is included. Attribute term names follow your multilingual plugin. Please test your own setup.
✅ Product Blocks
Archive swatches work inside the Product Collection and All Products blocks.
✅ Elementor & Quick View
Product page swatches re-initialize in Elementor product widgets and quick view popups. On archive pages in Elementor Loop Grid or Loop Builder, swatches appear when the template runs WooCommerce's standard product loop hooks — please test your template.
Free vs Pro
The free plugin is complete and fully functional on its own. Nothing in it is locked or time-limited. A separate Pro plugin adds extra features for stores that want them.
| Feature | Free | Pro |
|---|---|---|
| Color, dual-color, image, label and radio swatches | Included | Included |
| Shop and archive swatches, product blocks | Included | Included |
| Out-of-stock styles and Notify Me message | Included | Included |
| Design controls, tooltips, custom CSS, export / import | Included | Included |
| Smart Variation Finder | Included | Included |
| Sticky Add-to-Cart bar | — | Pro |
| Per-swatch badges | — | Pro |
| Multi-gallery per variation | — | Pro |
| Bulk swatch generator | — | Pro |
| Live stock badge | — | Pro |
Pro is a separate plugin and is not installed from inside the free plugin. More at webtend.net.
Frequently Asked Questions
My swatches are not showing. What should I check?
Ensure: (1) Enable Swatches is toggled ON in Variation Swatches → General. (2) Each attribute term has a Swatch Type set — go to Products → Attributes → edit any attribute term. (3) The product uses a global attribute (custom attributes only support Label and Radio swatches). (4) WooCommerce is active and up to date. (5) If you use a caching plugin, clear the cache.
Can I set different swatch types for different products?
Yes. In the product editor, go to Product data → Attributes, save the attributes, then use Swatch type for this product below the attribute list. The override applies to that product only and takes precedence over the term settings.
The variation image is not swapping when I click a swatch.
Ensure the variation has a dedicated image set in the product editor (Variations tab → each variation row → the small camera icon). If a variation uses the parent product image, no swap occurs. Only variations with unique images trigger the swap.
My theme has a custom gallery. Will image swap still work?
The plugin updates the standard WooCommerce gallery img element, the wrapping a href (for lightboxes), and fires the woocommerce_gallery_reset_slide_position event. Most themes built on WooCommerce standards will work. If your theme uses a completely custom gallery, you may need a small CSS/JS integration.
How do I remove all plugin data when uninstalling?
Turn on Variation Swatches → Advanced → Delete Data on Uninstall and save. When you then delete the plugin (not just deactivate it), its settings, term meta and post meta are removed. With the option off, your data is kept.
Is there a Pro version?
Yes, as a separate plugin. It adds a sticky add-to-cart bar, per-swatch badges, per-variation galleries, a bulk swatch generator and a live stock badge. The free plugin stays fully functional on its own. See Free vs Pro.
Can I change the tooltip direction?
Yes. Go to Variation Swatches → Design & Style → Tooltip Position and choose Top, Bottom, Left or Right.
What is the Smart Variation Finder and how do I turn it on?
It is a search box on product pages that selects matching swatches from typed words. Enable it under Variation Swatches → General → Smart Variation Finder. See Smart Variation Finder.
Does it support custom (local) attributes?
Partly. Color and Image swatches need global attributes because the colors and images are stored on attribute terms. A custom attribute on a single product can be shown as Label or Radio swatches.
Will it slow my store?
The plugin's CSS and JavaScript load on product, shop and archive pages and wherever a swatch is rendered, not on every page. It makes no external requests.
Does the plugin collect data or contact external servers?
No. It does not collect personal data and makes no external requests.
Can I use custom CSS to style swatches differently per attribute?
Yes. Use the attribute name in the selector via the data-attribute attribute on the wrapper:
/* Style only the color attribute swatches */
.svsw-swatches-wrap[data-attribute="pa_color"] .svsw-swatch {
border-radius: 50%;
}
/* Style only the size attribute swatches */
.svsw-swatches-wrap[data-attribute="pa_size"] .svsw-swatch {
min-width: 48px;
font-size: 13px;
}
Changelog
This page mirrors the changelog in the plugin's readme.txt.
1.0.6
| New | Pro Features tab under Variation Swatches with an overview of the separate Pro plugin |
| New | Smart Variation Finder switch under General (off for new installs, stays on for existing stores) |
| New | "Delete Data on Uninstall" switch under Advanced (off by default) |
| New | Per-product swatch type on the product's Attributes panel |
| New | Docs and Support links on the Plugins screen and in the settings header |
| Improved | CSS and JavaScript now load only on product, shop and archive pages and where swatches are shown |
| Improved | The review notice counts login sessions, appears only on the Dashboard, Plugins and settings screens, and has a permanent "Don't ask again" button |
| Fixed | Settings Export / Import now works on the Advanced tab |
| Fixed | Tooltip Position and the Notify Me text and link can now be changed in the settings |
| Fixed | The per-term shape override is now applied on product and archive pages |
| Fixed | "Show Selected Name" now works, and "Auto-convert dropdowns" now converts unset attributes to label swatches (off by default) |
| Fixed | Shop managers can now save the plugin settings |
| Fixed | Block archive swatches no longer appear when swatches are switched off |
| Fixed | A PHP error when rendering archive swatches |
| Security | Stricter custom CSS (administrators only), http and https only for the Notify Me link, escaped output, capability check when saving term swatches |
| Dev | New filter svsw_load_assets to load the swatch assets on a custom page |
1.0.5
| New | WooCommerce Product Blocks compatibility for Product Collection (WC 8.0+) and All Products blocks |
| New | Out-of-Stock Notify Me message with optional link |
| New | Tooltip Position setting under Design & Style |
| New | Selected swatch highlight animation that respects prefers-reduced-motion |
1.0.4
| New | Elementor Loop Builder compatibility for archive swatches |
| New | Settings Export / Import |
| New | Per-attribute term shape override |
| New | Styled "Clear Selection" button |
| Improved | Admin term list column shows a type badge, shape badge and a more accurate preview |
1.0.3
| New | Review notice, archive "+N more" badge, attribute label next to swatches, Quick View compatibility |
| Improved | Settings are read once per request instead of once per swatch |
| Fixed | "Tested up to" values, plugin name and Author URI |
1.0.2
| Fixed | Saving settings on one tab reset the other tabs to defaults |
1.0.1
| New | Compatibility guard so the plugin runs next to Sayan Variation Swatches Pro |
1.0.0
| New | Initial release |
Sayan Variation Swatches for WooCommerce v1.0.6 · GPL-2.0 · WordPress.org · Support forum