Title: Merchlint
Author: baltano
Published: <strong>September 1, 2026</strong>
Last modified: September 1, 2026

---

Search plugins

![](https://ps.w.org/merchlint/assets/banner-772x250.png?rev=3676536)

![](https://ps.w.org/merchlint/assets/icon.svg?rev=3676536)

# Merchlint

 By [baltano](https://profiles.wordpress.org/baltano/)

[Download](https://downloads.wordpress.org/plugin/merchlint.0.2.0.zip)

 * [Details](https://wordpress.org/plugins/merchlint/#description)
 * [Reviews](https://wordpress.org/plugins/merchlint/#reviews)
 *  [Installation](https://wordpress.org/plugins/merchlint/#installation)
 * [Development](https://wordpress.org/plugins/merchlint/#developers)

 [Support](https://wordpress.org/support/plugin/merchlint/)

## Description

Merchlint reads your WooCommerce catalogue and tells you where it is losing you 
money. Every
 finding comes with the value it was based on, so you can check it 
yourself instead of taking our word for it.

It changes nothing. No product, no price, no stock level, no order. The audit reads
and reports;
 every fix is yours to make, in your own admin.

#### What it looks for

Fifteen checks, in five groups:

 * **Money** — products that sold in the past year and can no longer be bought; 
   goods selling
    without a photo or hidden from the catalogue; sales whose end 
   date has passed and are still running; products with no price at all.
 * **Catalogue and navigation** — products outside every category; duplicated SKUs;
   variable
    products with every variation sold out.
 * **Content** — descriptions too short to answer a customer’s question; images 
   with no alternative
    text.
 * **Performance and media** — oversized image files; bloated autoloaded options;
   media entries
    whose file is missing from disk.
 * **Environment** — PHP, WordPress or WooCommerce on a version that no longer gets
   security fixes;
    a background queue that stopped running, which is what stalls
   scheduled work on a store.

#### What makes it different

 * **Every finding shows its evidence.** Not “12 636 problems” but the field we 
   read, the value we
    found and the threshold we compared it against.
 * **It tells you where to start.** The three items with the largest amount at stake,
   first — before
    the full list.
 * **A zero means “checked, clean”.** A rule that could not run says so instead 
   of quietly
    reporting nothing. “No data” and “no problems” are different answers,
   and you get the right one.
 * **It never adds up currencies.** A store selling in euros and dollars gets a 
   separate figure for
    each. Adding them without an exchange rate would be inventing
   a number.
 * **Two scans of an unchanged store give the same result**, item for item. When
   something does
    change, a separate screen tells you what — and whether the difference
   came from your store or from a rule of ours that got smarter.
 * **“Hide” is permanent.** Seasonal stock you already know about stops coming back
   after every
    scan, and stays hidden across plugin updates.

#### Your data stays yours

The free version works entirely on your server. No account, no sign-up, no phoning
home: the
 plugin makes no outbound connections at all, and an automated check enforces
that on every build.

## Screenshots

[⌊Results: what is at stake, where to start, and every rule with its count — including
the ones
that found nothing.⌉⌊Results: what is at stake, where to start, and every
rule with its count — including the ones
that found nothing.⌉[

Results: what is at stake, where to start, and every rule with its count — including
the ones that found nothing.

[⌊A single rule: what it checks, how to fix it, and the list with the evidence for
each item.⌉⌊A single rule: what it checks, how to fix it, and the list with the 
evidence for each item.⌉[

A single rule: what it checks, how to fix it, and the list with the evidence for
each item.

[⌊Product editor: what the audit found about this product, its variations and its
images.⌉⌊Product editor: what the audit found about this product, its variations
and its images.⌉[

Product editor: what the audit found about this product, its variations and its 
images.

## Installation

 1. Install and activate the plugin. WooCommerce must be active first — WordPress enforces
    this for you.
 2. Open **Store audit** in the admin menu.
 3. Press **Scan now**. A store with 50 000 products takes about a minute and a half
    on the hardware we measure on; a slower host takes longer. You can stop the scan
    at any point.

The audit reads your catalogue and writes only to its own tables. Removing the plugin
removes them.

**Short PHP time limit?** Nothing to do — the audit reads your host’s own limit 
and sizes each chunk to fit inside it, then books the next one itself. A shorter
chunk means more of them, not less work: the audit still finishes, and it still 
resumes from where it stopped.

If your host reports a limit it does not actually enforce, you can set the chunk
yourself in wp-config.php:

    ```
    define( 'MERCHLINT_BUDGET_SECONDS', 8 );
    ```

## FAQ

### Does it change anything in my store?

No. It reads your catalogue and reports what it finds. Every change is made by you,
in your own
 admin. This is enforced in the code, not just promised: an automated
check refuses to build the plugin if it calls any function that would modify products,
categories, media or orders.

### Will it slow my store down?

The scan runs in the background, in short slices, and it only touches the admin 
side. Your
 storefront is not involved. If the scan is interrupted — a server restart,
a deployment — it picks up where it left off and gives the same result as an uninterrupted
run.

### Can I audit a store with tens of thousands of products?

Yes. A scan of 50 000 products completes in about 90 seconds and the results are
paginated, so
 a rule with twelve thousand findings still opens instantly.

### Does it work with multilingual stores?

Yes. Translations of one product are counted as one product: their SKU is shared
deliberately, and
 their stock is one physical stock, so we never report the same
goods twice or double the amount at stake. Polylang is tested with the plugin itself;
WPML is recognised through its translation table, which we test against the same
data it produces.

### Does it work with HPOS (High-Performance Order Storage)?

Yes, with HPOS on and off. Both modes give identical results, amounts included.

### Some of the findings do not apply to my store.

Then hide them. Every rule’s page explains when the finding is NOT a problem — seasonal
goods,
 spare parts, products sold only by phone — and hiding is one click. The 
decision survives future scans, and the hidden items stay visible as a count, so
nothing disappears silently.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Merchlint” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ baltano ](https://profiles.wordpress.org/baltano/)

[Translate “Merchlint” into your language.](https://translate.wordpress.org/projects/wp-plugins/merchlint)

### Interested in development?

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

## Changelog

#### 0.2.0

 * **First public release.** Versions 0.1.0 and 0.1.1 below were pre-release: they
   were reviewed but
    never published, so this is the first version you can install
   from the directory. Everything the audit does is listed under 0.1.0.
 * Two extension points so add-ons can build on the audit: an action when a scan
   finishes and
    a filter over the scan settings, plus the scan history behind both.
 * Rules the current scan did not run are now marked “not in this audit” instead
   of “clean”.
 * A scan now keeps its settings even if an add-on hands it a value that cannot 
   be stored — before,
    one such value silently dropped every threshold the scan
   was running with, and the second half of the scan used the defaults.
 * Comparing two audits no longer writes a PHP notice to the log when a setting 
   holds a list rather
    than a number.
 * No change to what the audit checks on its own.

#### 0.1.1

 * Translations now come from translate.wordpress.org instead of files bundled in
   the plugin.
 * No change to what the audit checks or reports.

#### 0.1.0

 * First release. Fifteen checks, resumable scanning, CSV export, per-rule knowledge
   pages,
    permanent “hide”, English and Polish.

## Meta

 *  Version **0.2.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [audit](https://wordpress.org/plugins/tags/audit/)[inventory](https://wordpress.org/plugins/tags/inventory/)
   [product data](https://wordpress.org/plugins/tags/product-data/)[seo](https://wordpress.org/plugins/tags/seo/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/merchlint/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/merchlint/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/merchlint/reviews/)

## Contributors

 *   [ baltano ](https://profiles.wordpress.org/baltano/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/merchlint/)