Product Label

v1.2.0 Updated Aug 18, 2026

Product Label

Module de labels et badges produit pour Magento 2 et MageOS. Affiche des pastilles, rubans et etiquettes par-dessus les images produit, avec des formes SVG…
Hyvä Compatible Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
€79.00
Try the live demo
  • Updates and support included for 12 months
  • License key delivered immediately by email
  • 30-day money-back guarantee
  • Full documentation included
  • Compatible with Hyvä themes
  • Composer-ready installation

Product Labels

Sale badges, new-arrival flashes and low-stock warnings are the cheapest conversion levers in a catalogue, and the ones most often bolted on with a third-party script that slows the page down. This module puts them back where they belong: rendered by Magento itself, over the product image, on every surface where a product appears.

Nothing is drawn in the browser. Labels are computed against a dedicated index and printed into the HTML, so they survive the Full Page Cache, cost no layout shift, and are visible to search engines. A category page carries its labels for one extra database query, whatever the number of products on it.

Who it's for

  • Merchants running promotions who want the discount visible in the listing, not only on
  • the product page

  • B2B catalogues where quantity discounts and stock levels drive the buying decision
  • Teams who care about Core Web Vitals and refuse to add another render-blocking script

Key benefits

  • Fourteen shapes, no image files — corner ribbons, banners, starbursts, hexagons,
  • price tags and more, all generated as vector graphics. Crisp on any screen, recoloured from the back-office, and not a single extra HTTP request.

  • Colours picked, not coded — background, text and accent colours come from the
  • native Magento colour picker. The text colour is derived from the background's luminance using the WCAG formula, so a pale badge never ships unreadable white text.

  • Dynamic values that stay honest — show the live discount percentage, the amount
  • saved, the tier price and its quantity threshold, days left on a promotion, or any product attribute. Percentages round down by default, because a badge promising 30% on a 29.6% discount is a claim you cannot defend.

  • Targeting you already know — the same condition builder as catalog price rules,
  • plus ready-made shortcuts for on sale, new, out of stock, low stock and quantity discounts. Presets fill that builder rather than hiding a second, simpler engine behind it.

  • Every surface, one setup — category listings, search results, widgets, related and
  • cross-sell blocks, the comparison list, the wishlist, the cart page, the mini-cart and the product page. Configure once, then override only where a context should differ.

  • Fluid on every screen — badge sizes are relative to the product image rather than
  • to the viewport, so the same label is correctly proportioned in a two-column mobile grid and on a full-width product image, with no breakpoints to maintain.

  • Cache-safe by design — rendering varies by store view and customer group through
  • the same context Magento already folds into its cache key, so group-specific labels cannot leak between visitors. Saving a label invalidates the affected pages.

  • Accessible and inclusive — a hidden readable sentence accompanies each badge so
  • "-30%" is announced in words, positions use logical properties so right-to-left store views work without extra configuration, and reduced-motion preferences are respected.

Compatibility

  • Magento 2.4.x / Mage-OS 2.x and 3.x equivalents
  • PHP 8.1, 8.2, 8.3, 8.4, 8.5
  • Requires wimakeit/module-core 3.0.9 or later
  • Works on Luma and Breeze out of the box; wimakeit/module-product-label-hyva adds the
  • Hyvä product page gallery anchor and Tailwind sources

  • Multi Source Inventory is optional: salable quantity uses it when installed, and falls
  • back to the legacy stock registry otherwise

  • Bundled i18n: English, French, Dutch

Install this module via Composer. Make sure your auth.json is configured with your Wimakeit credentials.

Terminal
$ composer require wimakeit/module-product-label:^1.2.0
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile

Installation notes

The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.

Required dependency

This module requires wimakeit/module-core 3.0.9 or later. Composer will pull it automatically from the Wimakeit registry as long as the registry is declared in your project's composer.json.

Multi Source Inventory is optional. When magento/module-inventory-sales-api is present, the salable quantity condition and the {{qty}} value account for reservations; without it they fall back to the legacy stock registry. Nothing needs to be configured either way.

First reindex

Labels only appear once the index has been built. After enabling the module, run:

bin/magento indexer:reindex wimakeit_product_label_rule

Two indexers share one index table, mirroring how Magento splits catalog price rules:

IndexerReacts to
wimakeit_product_label_rulea label being created, edited or deleted
wimakeit_product_label_productproduct, price, stock and category changes

Both are safe in Update by Schedule, which is the recommended mode on large catalogues.

ACL permissions

After installation, four ACL resources are registered under System → Permissions → User Roles:

ResourceDefault
Wimakeit_ProductLabel::label (view the label grid)granted to Administrator role only
Wimakeit_ProductLabel::label_save (create and edit labels)granted to Administrator role only
Wimakeit_ProductLabel::label_delete (delete labels)granted to Administrator role only
Wimakeit_ProductLabel::config (edit module configuration)granted to Administrator role only

The conditions builder is served by this module's own controller, so managing labels does not require catalog price rule permissions.

Configuration

The module ships with safe production defaults. Go to Stores → Configuration → WiMakeIT → Product Labels only if you want to change them.

General settings

SettingDefault
Enable Product LabelsYes
When several labels share a positionStacked side by side (alt: only the highest priority)
Enable Debug LoggingNo — leave off in production

Display

SettingDefault
Show labels onall contexts (listing, search, product page, gallery, related, cart, mini-cart, wishlist, comparison, widgets)
Maximum labels per position2
Write label colours as inline stylesNo — colours are emitted once per page in a single nonce-carrying <style> block, which is smaller and survives an enforced style-src policy

Dynamic values

SettingDefault
Discount percentage roundingRound down — a badge promising 30% on a 29.6% discount is not defensible
Discount percentage decimals0

Indexing

SettingDefault
Reindex on save up to this many products20000 — above this, saving a label marks the index invalid instead of rebuilding synchronously, so the admin save never hangs
Refresh date-driven labels by cronYes

Performance

SettingDefault
Preload labels for up to this many products per page500
Cache rendered label markupNo — the Full Page Cache already covers this; enable only on very large catalogues that make heavy use of product attributes in label text
Rendered markup cache lifetime (seconds)86400

Accessibility

SettingDefault
Announce labels to screen readersYes

Cron jobs (registered automatically)

JobSchedule
wimakeit_product_label_refresh_dated5

This job re-indexes products whose special price or new-product date window opened or closed, and cleans the page cache for those products. It runs hourly rather than daily so store views in different timezones each get their date boundary handled on the hour it actually occurs for them. This mirrors what Magento itself does for catalog price rules.

Hyvä storefronts

Labels already render on Hyvä without any extra module: the listing, search, widgets, related blocks, comparison, wishlist and the cart page all go through the standard Magento image block.

Install wimakeit/module-product-label-hyva to add the two surfaces Hyvä builds differently — the product page gallery and the Alpine mini-cart drawer — and to expose the wm-* classes to your theme's Tailwind build:

composer require wimakeit/module-product-label-hyva
bin/magento module:enable Wimakeit_ProductLabelHyva
bin/magento setup:upgrade
bin/magento hyva:config:generate
cd app/design/frontend/<Vendor>/<theme>/web/tailwind && npm run build

Command line

bin/magento wimakeit:product-label:reindex                    # rebuild everything
bin/magento wimakeit:product-label:reindex --label=on_sale    # one label, by code or id
bin/magento wimakeit:product-label:reindex --product=42,43    # specific products
bin/magento wimakeit:product-label:list                       # labels and their match counts

wimakeit:product-label:list shows how many products each label currently matches, which is the fastest way to confirm a conditions tree does what was intended without opening the storefront.

Cache types

The module registers a Product Labels cache type, holding the label definitions per store view. It is invalidated automatically whenever a label is saved or deleted.

Version
v1.2.0
Support
12 months
Last updated
Aug 18, 2026
Magento
Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
PHP
PHP 8.1 PHP 8.2 PHP 8.3
Hyvä
Compatible
Package
wimakeit/module-product-label

Compatibility checker

Pick your stack to see if this module fits.

Changelog

Categories: Security, Feature, Fix, Perf, Admin, Deps.

[1.2.0] - 2026-08-18

Feature

  • Cibler des produits par référence. Une condition SKU s'ajoute aux règles, avec le sélecteur de produits de Magento : recherche, tri, cases à cocher. Plusieurs références se choisissent d'un coup.
  • Aperçu en direct. Le pavé Apparence affiche une carte produit d'exemple qui se met à jour à chaque réglage — forme, position, taille, couleurs — et reste visible pendant qu'on fait défiler.
  • Cinq étiquettes d'exemple livrées prêtes à l'emploi, désactivées, pour partir d'une base plutôt que d'une page blanche.

Admin

  • Rotation, opacité, arrondi et décalages se choisissent dans des listes plutôt que se saisir au clavier.
  • Les étiquettes ne collent plus au bord de l'image, sauf les rubans de coin pour lesquels c'est voulu.

Fix

  • L'écran d'édition d'une étiquette pouvait ne plus s'ouvrir du tout sur Magento 2.4.9 / Mage-OS 3.1.0.
  • Une étiquette posée sur une vignette de listing pouvait faire disparaître la photo du produit.
  • Les tailles xs à xl ne se distinguaient presque pas sur les formes pilule et texte seul.
  • Les listes Vues de magasin et Groupes de clients n'affichaient aucune option.

[1.1.0] - 2026-08-17

Fix

  • Les tables de l'extension n'étaient pas créées à l'installation, rendant l'écran des étiquettes inutilisable.

[1.0.0] - 2026-08-17

Feature

  • Product labels and badges rendered over product images across every surface: category listings, search, widgets, related and cross-sell blocks, comparison, wishlist, cart, mini-cart and the product page.
  • Fourteen parametric vector shapes — corner ribbons, banners, starbursts, hexagons, price tags, bookmarks and more — recoloured from the back-office with no image files and no extra HTTP request.
  • Dynamic values in label text: discount percentage and amount, prices, tier price and its quantity threshold, salable quantity, days left on a promotion, and any product attribute. Percentages round down by default so a badge never over-promises.
  • Targeting through the native Magento condition builder, extended with shortcuts for on sale, new, out of stock, low stock, tier price and final price, plus six presets that fill the builder rather than hiding a second engine behind it.
  • Per-context overrides, so a label can be smaller in the mini-cart or hidden in the cart without duplicating its configuration.

Perf

  • Server-side rendering with a dedicated product-to-label index: no JavaScript, no layout shift, and labels remain visible to search engines.
  • A category page resolves the labels for all its products in a single database query, whatever the number of products displayed.
  • Rendering varies by store view and customer group through the context Magento already uses for its page cache key, so group-specific labels cannot leak between visitors.

Admin

  • Label grid with live badge previews and the number of products each label currently matches, plus duplicate, mass enable, disable and delete.
  • Live preview in the edit form driven by the same renderer as the storefront, so what is approved is exactly what ships.
  • Colours chosen from the native Magento colour picker, with the text colour derived automatically from the background luminance for readable contrast.
  • wimakeit:product-label:reindex and wimakeit:product-label:list command line tools, and an admin REST API for cross-environment provisioning.

Security

  • No free-form CSS anywhere: colours and dimensions pass through a closed, validated set of CSS custom properties, emitted in a single nonce-carrying style block that survives an enforced Content-Security-Policy.
  • Label text is escaped segment by segment, so neither a merchant-entered string nor a resolved product value can inject markup.

Found a bug? Tell us about it.

A short form opens in a new tab — the module name and your language are already filled in. Share what you tried, what went wrong, and we will get back to you within one business day.

Report a bug for Product Label
Module SKU: wimakeit-module-product-label · Language: en_US

Need help?

Our team is available to assist with integration.

Contact us
Planifier un appel