Title: Marks &#8211; Sale &amp; Stock Badges for WooCommerce
Author: Mariusz Szatkowski
Published: <strong>17. julija 2026</strong>
Last modified: 5. oktobra 2026

---

Tykace pytaś

![](https://ps.w.org/plogins-sale-stock-badges/assets/banner-772x250.png?rev=3708930)

![](https://ps.w.org/plogins-sale-stock-badges/assets/icon-256x256.png?rev=3707865)

# Marks – Sale & Stock Badges for WooCommerce

 Wót [Mariusz Szatkowski](https://profiles.wordpress.org/motylanogha/)

[Ześěgnuś](https://downloads.wordpress.org/plugin/plogins-sale-stock-badges.1.0.31.zip)

 * [Drobnostki](https://dsb.wordpress.org/plugins/plogins-sale-stock-badges/#description)
 * [Pógódnośenja](https://dsb.wordpress.org/plugins/plogins-sale-stock-badges/#reviews)
 *  [Instalacija](https://dsb.wordpress.org/plugins/plogins-sale-stock-badges/#installation)
 * [Wuwiśe](https://dsb.wordpress.org/plugins/plogins-sale-stock-badges/#developers)

 [Pódpěra](https://wordpress.org/support/plugin/plogins-sale-stock-badges/)

## Wopisanje

Sale & Stock Badges puts badges on your WooCommerce products. Some appear on their
own from each
 product’s current state (**Sale**, **New**, **Low stock**, **Bestseller**,
and a few others), and you can also set one manual badge per product using a store-
wide label and colour.

The badges are drawn with CSS and sit over the product image, so they add no
 JavaScript
and don’t shift the layout when the page loads. They show on the single product 
page and on shop, category and tag listings.

The code is open and lives on [GitHub](https://github.com/wppoland/plogins-marks)
if you want to read
 it, file a bug or send a patch.

Configuration lives under a top-level **Sale & Stock Badges** admin menu: a global
on/off
 toggle, placement controls, per-rule toggles with custom labels, thresholds,
an appearance section (shape, uppercase, per-context caps) and the manual badge 
label and colour. Settings are sanitised and clamped on save.

#### Documentation and links

 * **Documentation** – [plogins.com/plogins-marks/docs](https://plogins.com/plogins-marks/docs/)
 * **Plugin page** – [plogins.com/plogins-marks](https://plogins.com/plogins-marks/)
 * **Source code** – [github.com/wppoland/plogins-marks](https://github.com/wppoland/plogins-marks)
 * **Bug reports and feature requests** – [GitHub issues](https://github.com/wppoland/plogins-marks/issues)

#### Features

 * Automatic badges: Sale, New, Low stock, Bestseller, Discount percent, Free shipping,
   Out of stock.
 * Custom label text for every automatic badge.
 * Configurable thresholds: newness window, low-stock level, bestseller sales.
 * Free-shipping detection by product shipping class.
 * Placement controls: single product page and/or shop and category listings.
 * Appearance controls: pill or square shape, uppercase, and a per-context badge
   cap.
 * `[marks_badges]` shortcode to place badges anywhere.
 * A single manual badge (label + colour) shown per product via meta.
 * CSS-only rendering: no JavaScript, no layout shift.
 * Global on/off toggle and per-rule toggles.
 * Translation ready (POT included) and clean uninstall.
 * HPOS and cart/checkout blocks compatible.

#### The [marks_badges] shortcode

Use `[marks_badges]` to drop a product’s badges into any page, post or widget. With

no attributes it uses the current product (inside a loop or on a single product 
page). Pass `id` to target a specific product and `context` (`single` or `loop`)
to pick the render style:

    ```
    [marks_badges id="123" context="loop"]
    ```

Reporting a security issue: email hello@wppoland.com, and under our [coordinated disclosure policy](https://wppoland.com/en/security-policy/)
we confirm within two business days, assess within five, and patch a critical issue
within seven days of confirming it.

### Sale & Stock Badges PRO

The free edition ships the core CSS badges (Sale, New, Low stock, Bestseller, manual).**
Sale & Stock Badges PRO** adds campaign and rules-based badging:

 * **Scheduled and targeted badges** – campaign badges with custom colours, a start/
   end window and targeting by product, category or tag
 * **Conditional display rules** – store-wide rules that badge a product by category,
   price threshold or low stock
 * **Image badges** – show a certification or brand logo (PNG/SVG) on a product
 * **A/B label sets** – rotate competing badge labels with sticky cookies and per-
   variant impression counts

Everything in the free edition stays free and open. Sale & Stock Badges PRO starts
at 19 EUR per year, billed in EUR.

Compare editions and pricing: [plogins.com/plogins-marks-pro/pricing](https://plogins.com/plogins-marks-pro/pricing/)

### External Services

Sale & Stock Badges does not connect to any external services. Badges are computed
and drawn entirely on your own server from WooCommerce data already in your database(
price, stock, sales, product dates and shipping class), and the badge CSS is served
from the plugin’s own assets.

The plugin stores its configuration in two WordPress options (`marks_settings` and`
marks_db_version`) and reads per-product post meta (`_marks_manual_text` and `_marks_manual_style`)
for the manual badge. No visitor or store data is sent anywhere, and the plugin 
does not call home, load remote scripts or fonts, or send email.

### Translations

Sale & Stock Badges is fully translatable and ships the `plogins-sale-stock-badges.
pot` template. Translations are delivered by WordPress.org language packs from translate.
wordpress.org, which is where Polish, German and Spanish are being contributed; 
the package itself carries no compiled translation files.

## Screenshots

[⌊Automatic badges on a shop listing.⌉⌊Automatic badges on a shop listing.⌉[

Automatic badges on a shop listing.

[⌊The Sale & Stock Badges settings screen.⌉⌊The Sale & Stock Badges settings screen
.⌉[

The Sale & Stock Badges settings screen.

## Instalacija

 1. Upload the plugin to `/wp-content/plugins/marks`, or install via Plugins > Add 
    New.
 2. Activate it. WooCommerce must be active.
 3. Go to the **Sale & Stock Badges** menu, enable badges, and choose which automatic
    badges to show.

## FAQ

### Does it require WooCommerce?

Yes.

### When does the „New“ badge show?

On products created within the newness window (30 days by default).

### When does the „Low stock“ badge show?

On stock-managed products whose remaining quantity is at or below the configured

low-stock threshold.

### How do I add a manual badge to a single product?

Set the manual badge label and colour on the Sale & Stock Badges settings screen,
then set the
 product meta `_marks_manual_text` (and optionally `_marks_manual_style`)
on the products that should display it.

### Does this plugin work on WordPress Multisite?

Yes. This plugin is compatible with WordPress Multisite. Network activate it or 
activate it on individual sites; each site keeps its own settings and data.

## Reviews

![](https://secure.gravatar.com/avatar/d87735216bfa9770ddb7792bffe1e719eb4e3ca47db51dac06049cbf3ca8632b?
s=60&d=retro&r=g)

### 󠀁[super](https://wordpress.org/support/topic/super-3206/)󠁿

 [Hanna](https://profiles.wordpress.org/frogqi/) 31. julija 2026

I’ve tested several plugins for this purpose, and this one stands out for its simplicity
and effectiveness.

 [ Read all 1 review ](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/)

## Sobustatkujuce a wuwijarje

„Marks – Sale & Stock Badges for WooCommerce“ jo software wótwórjonego žrědła. Slědujuce
luźe su pśinosowali k toś tomu tykacoju.

Sobustatkujuce

 *   [ Mariusz Szatkowski ](https://profiles.wordpress.org/motylanogha/)

“Marks – Sale & Stock Badges for WooCommerce” has been translated into 1 locale.
Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/plogins-sale-stock-badges/contributors)
for their contributions.

[Translate “Marks – Sale & Stock Badges for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/plogins-sale-stock-badges)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/plogins-sale-stock-badges/),
check out the [SVN repository](https://plugins.svn.wordpress.org/plogins-sale-stock-badges/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/plogins-sale-stock-badges/)
by [RSS](https://plugins.trac.wordpress.org/log/plogins-sale-stock-badges/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.31

 * Security (low): the [marks_badges id=N] shortcode showed the badges of any product
   ID, including drafts, private and password protected products. A contributor 
   could put the shortcode in a post and read, in preview, which badges an unpublished
   product would get. It now renders nothing for a product the viewer cannot open.

#### 1.0.30

 * Fixed: on block themes, including the default Twenty Twenty-Five, the shop and
   category badges of every product piled up in one corner of the page instead of
   sitting on each product image.
 * Fixed: on block themes the single product badges sat at the top edge of the page,
   over the breadcrumb, instead of on the product image. They now render inside 
   the product gallery.
 * Fixed: „Hide theme Sale! flash“ did nothing on block themes, where the sale flash
   is a block rather than the classic flash.
 * Fixed: badges in shop listings were rendered with the single product styling,
   because the template never received its context.

#### 1.0.29

 * The upgrade notice’s „Coming soon“ and „Get notified“ labels are English source
   strings for every language; Polish sites used to get their own Polish source 
   text, which translators in other languages then saw untranslated.

#### 1.0.28

 * Display name is now „Marks – Sale & Stock Badges for WooCommerce“, matching the
   name the plugin is sold under. The slug, the text domain and every option key
   are unchanged, so nothing on an existing install moves.

#### 1.0.27

 * The Plugin URI in the header pointed at a page that does not exist. It used the
   WordPress.org slug, while the plugin page on plogins.com uses the original one.

#### 1.0.26

 * The sidebar upgrade promo now follows the same dismissal as the banner. Dismissing
   the banner used to leave a full-height advert on the settings screen for good,
   which is not what the WordPress.org guideline on upgrade prompts means by used
   with moderation.

#### 1.0.25

 * Fixed: the Discount percent badge loaded one product object per variation, every
   time it rendered, and again for every variable product in the shop loop. The 
   percentage now comes from the cached variation prices WooCommerce already built
   to print the price range on the same card. Two side effects worth knowing: the
   percentage is calculated from the prices as displayed, so a shop showing prices
   with tax can see a rounding difference of one point, and a variation hidden from
   the storefront no longer sets the badge.

#### 1.0.24

 * Fixed: the PRO upgrade promo kept selling to people who had already bought the
   paid edition. Only the banner could be dismissed, so the sidebar promo and the
   locked feature cards followed a paying customer around for good. The promo now
   checks whether the paid edition is active and steps aside when it is.
 * Fixed: arrow glyphs in the admin menu paths, and in the strings handed to translators.
   An arrow inside a translatable string makes the glyph every translator’s problem
   and changes the layout in any locale that drops it.

#### 1.0.23

 * Changed: the PRO feature cards printed an arrow glyph in menu paths where the
   rest of the plugin and the documentation use a plain „>“. Same navigation, one
   character that renders everywhere.

#### 1.0.22

 * Fixed: deleting the plugin left the per-user „dismiss“ flag from the PRO notice
   in the database. Uninstall now removes it for every user, not just the one who
   dismissed it.

#### 1.0.21

 * The translation template was regenerated. 13 strings added to the plugin since
   the template was last built were missing from it, so no translator could reach
   them in any language, and 12 strings the plugin no longer uses have been dropped.
   Nothing you see changes; what a translator can see does.

#### 1.0.20

 * Fixed: the plugin reported an older version number internally than the one it
   was released under. That number versions the stylesheets and scripts the admin
   screen loads, so a browser holding the previous files kept them after an update
   instead of fetching the corrected ones.
 * Fixed: the package no longer ships its own translation files. WordPress.org builds
   language packs from translate.wordpress.org, and a bundled catalogue shadows 
   that pack, so a translation corrected upstream could not reach you until the 
   next release. Your language now comes from the language pack, which is the copy
   that stays current.

#### 1.0.19

 * Declared compatibility with WooCommerce 11.0.

#### 1.0.18

 * Fixed the PRO promo on the settings screen quoting a price in PLN. PRO is priced
   and charged in EUR, so an admin on a Polish site was shown a zloty amount and
   then billed in euro, and the zloty figure was a fixed conversion that drifted
   from the real charge as the rate moved. The promo now shows the euro price that
   is actually taken.

#### 1.0.17

 * Docs: corrected the PRO pricing line. PRO is 19 EUR per year and is billed in
   EUR. The previous wording implied a PLN option, which we do not offer.

#### 1.0.16

 * Fix: the Discount percent badge now shows on variable products, using the biggest
   saving across their variations. Until now a variable product on sale got the 
   Sale badge but never the percentage.
 * Fix: „Hide theme Sale! flash“ now works on its own. Before, it only did anything
   while the Sale badge was also ticked, so hiding the flash and using the Discount
   percent badge instead left the theme’s „Sale!“ on every card.

#### 1.0.15

 * Fix: the manual badge label on the settings screen is finally used. Set `_marks_manual_text`
   to 1 on a product and it shows that label; type your own wording in the meta 
   and that product uses it instead. Until now the label was saved and ignored, 
   so a product flagged with 1 wore a badge that said „1“.

#### 1.0.13

 * Translations: completed Polish, German and Spanish for the PRO upgrade panel.

#### 1.0.12

 * Added an in-plugin PRO upgrade panel on the settings screen (dismissible).

#### 1.0.11

 * Declared compatibility with WooCommerce 10.9.

#### 1.0.10

 * Translation quality pass: corrected Polish, German and Spanish (product names
   kept in English, legal withdrawal terminology, WooCommerce glossary and grammar
   fixes).

#### 1.0.9

 * Simplified the display name to Sale & Stock Badges for WooCommerce (slug and 
   text domain unchanged).
 * Added an Elementor widget for product badges (self-guarding: loads only when 
   Elementor is active).
 * Admin settings screen now supports dark colour scheme.

#### 1.0.8

 * Renamed the plugin to Plogins Sale & Stock Badges for WooCommerce (new slug: 
   plogins-sale-stock-badges) for a clearer, distinctive name per WordPress.org 
   review. Text domain updated to match; internal data keys unchanged.

#### 1.0.7

 * Shortened display name to Marks (dropped the Plogins brand prefix; slug unchanged).

#### 1.0.6

 * Corrected the product-badges filter prefix to marks_product_badges to match the
   plugin prefix.

#### 1.0.5

 * Prefixed the product-badges filter hook (plogins_marks_product_badges) to satisfy
   WordPress plugin naming guidelines.

#### 1.0.4

 * Accessibility improvements to the admin and storefront markup.
 * Fixed low-contrast admin headings under an OS dark-mode preference.

#### 1.0.3

 * Clearer name: Plogins Marks – Sale & Stock Badges for WooCommerce.

#### 1.0.2

 * Added bundled Polish, German and Spanish translations for the plugin interface.

#### 1.0.1

 * First stable release.

#### 0.3.1

 * Renamed to Plogins Marks for WooCommerce for a more distinctive plugin name.

#### 0.3.0

 * New: optional hide of the default WooCommerce sale flash when the Marks sale 
   badge is enabled.
 * Admin settings help tooltips polish.

#### 0.2.0

 * Add Discount percent, Free shipping and Out of stock automatic badges.
 * Add custom label text for every automatic badge.
 * Add configurable newness-window and bestseller thresholds, plus free-shipping
   class detection.
 * Add placement controls (single product page and/or listings).
 * Add appearance controls: badge shape, uppercase and per-context badge caps.
 * Add the `[marks_badges]` shortcode for manual placement.
 * Add a translation template (languages/marks.pot) and an uninstall cleanup.

#### 0.1.0

 * Initial release: automatic Sale / New / Low stock / Bestseller badges, a manual
   badge, and a settings screen. CSS-only.

## Meta

 *  Version **1.0.31**
 *  Last updated **1 tyźeń**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 abo nowša **
 *  Tested up to **7.1.3**
 *  PHP version ** 8.1 abo nowša **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/plogins-sale-stock-badges/) a [Polish](https://pl.wordpress.org/plugins/plogins-sale-stock-badges/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/plogins-sale-stock-badges)
 * Tags
 * [low stock](https://dsb.wordpress.org/plugins/tags/low-stock/)[product badges](https://dsb.wordpress.org/plugins/tags/product-badges/)
   [sale badge](https://dsb.wordpress.org/plugins/tags/sale-badge/)[woocommerce](https://dsb.wordpress.org/plugins/tags/woocommerce/)
 *  [Rozšyrjony naglěd](https://dsb.wordpress.org/plugins/plogins-sale-stock-badges/advanced/)

## Pógódnośenja

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/plogins-sale-stock-badges/reviews/)

## Sobustatkujuce

 *   [ Mariusz Szatkowski ](https://profiles.wordpress.org/motylanogha/)

## Pódpěra

Got something to say? Need help?

 [Forum pomocy pokazaś](https://wordpress.org/support/plugin/plogins-sale-stock-badges/)