Plugixa Inventory

Most WordPress inventory plugins store stock as posts and post meta, give an item one number and one address, and let you edit the history afterwards. All three decisions look harmless on day one and get expensive later: lists slow down as the history grows, “how much is in the west depot” stops being answerable, and an audit trail somebody can edit is not an audit trail. Plugixa Inventory takes the other side of each.

Stock is held against a specific item and warehouse pair, in the plugin’s own normalised tables. Every change is written to an append-only ledger that nothing can edit or delete - no REST route, no admin screen, and a veto in the data layer - and on-hand quantities are derived from it, with a reconcile that proves they still are. Documents are drafted, then finalised, and finalising is what writes the ledger.

Bring a catalogue in from a spreadsheet with a column-matching step, lookups by name or code, and errors reported by line number rather than invented for you. Opening stock arrives as a real finalised movement, so the valuation agrees with the ledger from the first day, and an import can be reverted. Put the whole application on a page of your own site with one shortcode, inside your theme, with the same API and the same permissions as the admin screen - so staff who should not be in wp-admin never have to go there.

WP 6.5+ PHP 8.2+ Tested up to 7.1
Download Now Documentation Changelog
Customer testimonial avatar Customer testimonial avatar Customer testimonial avatar +2
Trusted by WordPress professionals

Screenshots

See it in action

Features

Everything you need

What you have, and who has it

Four kinds of record, in the plugin's own tables rather than as posts, so a catalogue of thousands stays as fast as a catalogue of ten.

  • Items

    Assets, consumables and sellable goods, each with a SKU, a barcode, a reorder level and a cost and sale price.

  • Warehouses

    Locations with their own stock levels and their own valuation, rather than one address the whole catalogue shares.

  • Categories

    Group the catalogue so lists, filters and the dashboard's breakdown by type have something to work with.

  • Recipients

    The people assets are checked out to, so a laptop that has left the building is still an item you can find.

  • Custom fields Pro

    Your own data on records, grouped into field groups, for the things a stock system cannot guess you track.

  • Units of measurement Pro

    Count in boxes, metres or litres rather than in bare numbers, with the unit carried through documents and reports.

Draft it, then finalise it

A movement is a document, not a number you type over the top of a record. Finalising is the moment it becomes real.

  • Check in and check out

    Assets go out to a recipient and come back. Stock is added and removed. All four are the same document with a different direction.

  • Finalising writes the ledger

    A draft changes nothing. Finalising posts the movement, and from then on the document cannot be edited or deleted.

  • Inventory adjustments Pro

    Write off breakage, shrinkage and a count that disagrees with the system, as a document with a reason rather than a silent edit.

  • Warehouse transfers Pro

    Move stock between locations as one document, so it leaves one warehouse and arrives at another without passing through a void.

A history nothing can edit

Every change to every quantity, append-only, with on-hand figures derived from it rather than stored alongside it.

  • Append-only, by construction

    No REST route, no admin screen and a veto in the data layer. A ledger somebody can edit is not an audit trail.

  • On-hand is derived

    Quantities follow from the ledger rather than being kept beside it, so the two cannot drift apart unnoticed.

  • Reconcile proves it

    A built-in check compares every on-hand quantity against the ledger, on demand from the admin or from WP-CLI.

  • Corrections are visible

    A mistake is fixed with a second, opposite document. That is what every stock system does, and what the audit trail is for.

Each location, on its own terms

Stock belongs to an item and a warehouse pair, which is what makes a per-location question answerable at all.

  • Stock per location

    Ten in the west depot and none in the east is two facts, not an average. Netting them into one number loses both.

  • A view per warehouse

    Its own stock list, its own low-stock list and its own activity feed, rather than a filter on a global list.

  • Valuation per warehouse

    What the stock in one location is worth, which is the number a site with more than one address actually needs.

  • Transfers between them Pro

    One document that takes stock out of one warehouse and puts it into another.

What it is worth, and what is about to run out

The two questions a stock system is asked most, answered without exporting anything.

  • Stock dashboard

    Total value, broken down by type and by warehouse, with a movement trend over time.

  • Top movers

    What is actually turning over, which is rarely the same list as what takes up the most space.

  • Closest to running out

    Items ranked against their own reorder level, so the list is about urgency rather than about quantity.

  • Reports and analytics Pro

    Deeper reporting across movements, valuation and activity, beyond what the dashboards summarise.

Valued at what it cost you

Stock on hand is worth what you paid, not what you hope to sell it for. Valuing at the sale price overstates it by your whole margin.

  • Average costing

    What the free edition costs stock at. The item's cost price, falling back to its sale price where no cost has been recorded.

  • Outgoing costed separately

    What a movement cost is recorded on the ledger row that removed it, so it is a different question from what the remaining stock is worth.

  • FIFO and LIFO Pro

    Layer costing, where stock is consumed oldest-first or newest-first and each layer keeps the cost it arrived at.

  • Opening balances seeded Pro

    Layers are seeded from what you already hold, so switching costing method does not start your history again.

In from a spreadsheet, out to one

Getting a catalogue in is the first thing anybody has to do, and getting it out again is what makes trusting the plugin reasonable.

  • A column-matching step

    Match your file's columns to the fields before anything is written, so an unexpected header is a question rather than a mess.

  • Looked up by name or code

    A file can say "Power tools" rather than an id, and a line naming something that does not exist is reported by line number instead of invented for you.

  • Opening stock is a real document

    It arrives as a finalised movement rather than a number written onto a record, so the ledger and the valuation agree with it from day one.

  • Batched, resumable, revertible

    Large files import in batches and can be resumed, and an import can be undone: the records go to the trash and the stock is taken back out with a reversing document.

  • Export what you are looking at

    Every list has an Export button that writes the current view to CSV, filters and all.

Staff never have to see wp-admin

One shortcode puts the whole application on a page of your site, inside your theme.

  • One shortcode

    [plugixa_inventory_app] with width, height and mode attributes. Your header and footer stay where they are, and there is a full-screen button in the toolbar.

  • The same API, the same rules

    It is the application the admin screen loads, talking to the same API, so there is no second set of permissions to keep in step.

  • Install it as an app Pro

    A progressive web app, so the inventory can live on a phone or a tablet home screen on the warehouse floor.

  • Dark mode Pro

    For the people who are in it all day, and for a screen mounted somewhere the lights are low.

Turn off what you do not need

Every feature is an app you can switch off, and switching one off keeps its data.

  • App manager

    Switching an app off hides it everywhere, stops its endpoints answering and stops its background work, and keeps every record it holds.

  • Settings

    Formatting, currency, appearance and each app's own options, in one place.

  • Notifications and alerts

    Low stock and the things that need somebody, raised where whoever is working will see them.

  • Desktop notifications Pro

    The same alerts as browser notifications, for a screen nobody is watching continuously.

  • Roles and permissions Pro

    Who may see and change what, separately from their WordPress role.

The numbers have to still be true next year

Four decisions that cost nothing on day one and are the whole difference on day five hundred.

  • Concurrent finalises cannot oversell

    The sufficiency check is the WHERE clause of the write, so there is no window between deciding and writing. The second person is told the stock changed and nothing is written.

  • A daily check that reports

    It compares every on-hand quantity against the ledger and reports anything that disagrees. It reports; it never silently corrects.

  • Reconcile from the command line

    wp plugixa-inventory stock reconcile does the same thing, for sites too large for a browser request.

  • Its own tables, not posts

    Stock levels, ledger rows and document lines are relational data. As posts and post meta, every list and report gets slower as history grows.

Simple pricing

Choose your growth plan

Start building with Plugixa Inventory today. Upgrade anytime as your needs grow.

Free

$ 0

Free forever

A complete stock system, not a trial

  • Items, warehouses, categories & recipients
  • Stock held per item and warehouse
  • Draft-then-finalise stock movements
  • Append-only ledger with reconcile
  • Stock dashboard & warehouse overview
  • Average costing & stock valuation
  • Barcode scanning & quick search
  • CSV import with column matching
  • CSV export on every list
  • The whole app on your own site
  • Community support
Start with Free
Most Popular

Pro

$ 39

1-Year License

FIFO and LIFO costing, transfers, reports and roles

  • Everything in Free
  • FIFO and LIFO layer costing
  • Warehouse transfers
  • Inventory adjustments
  • Reports and analytics
  • Custom fields
  • Units of measurement
  • Roles and permissions
  • Desktop notifications
  • Install as an app (PWA)
  • Dark mode
  • 1 year of updates
  • Priority email support

Instant Digital Delivery

Download immediately after checkout

Secure Payment

Encrypted, PCI-compliant checkout

Auto-Updates

One-click updates from WordPress admin

Trusted by Pros

Used on thousands of WordPress sites

FAQ

Frequently asked questions

Getting Started

Minutes. Install, activate, then open Inventory. Create a warehouse, add a few items, and post an opening stock movement. If you already have a catalogue in a spreadsheet, import it instead and the opening stock comes in with it.

Yes. Add [plugixa_inventory_app] to any page and the whole application appears on it, inside your theme, with your header and footer where they always are, and a full-screen button in the toolbar.

It is the same application the admin screen loads, talking to the same API, so permissions are identical and there is no second set of rules to keep in step. Anyone without access sees a short sign-in notice and the application is never loaded for them.

width is wide (the default), full or content, using your theme’s own alignments. height is a number of pixels; leave it out and the app sizes itself to the window. mode is embed by default, or full to give the app the whole page with no theme around it.

For example: [plugixa_inventory_app width="full" height="800"]

Because it is the only way it can keep working on any theme. The application is built with Material UI, whose styling is deliberately low-specificity so that it is easy to override, and a theme’s own form styling beats it by construction. Any reset strong enough to protect the app would also flatten the theme around it.

A frame keeps the two apart completely, so your theme stays as you designed it and the inventory looks the same on every site.

Stock and the Ledger

No. The check that there is enough stock is part of the same SQL statement that removes it, so two people finalising at the same moment cannot both succeed against the same units. The second is told the stock changed, and nothing is written.
No, and there is no setting for it. The ledger is what every on-hand quantity is derived from, and a ledger somebody can edit is not an audit trail. Correct a mistake with a second, opposite document, which is visible.
They should not, because on-hand is derived from the ledger rather than kept beside it. A daily check compares the two and reports anything that disagrees, and you can run the same check on demand from the admin or with wp plugixa-inventory stock reconcile. It reports; it never silently corrects.
Because “how much is in the west depot” is the question people actually ask. An item with one stock number and one address cannot answer it: ten in one location and none in another nets to a single figure that is true of nowhere.
What it cost you. The free edition uses average costing, taking the item’s cost price and falling back to its sale price where no cost has been recorded. Valuing inventory at what it sells for would overstate it by your whole margin. Pro adds FIFO and LIFO layer costing.

Data

Yes, for items, categories, warehouses and people, with a column-matching step before anything is written. Categories and warehouses are found by name or by code, so the file can say “Power tools” rather than an id, and a line naming something that does not exist is reported by line number rather than invented for you.

Opening stock comes in as a real, finalised movement rather than a number written onto a record, so the ledger and the valuation agree with it from the first day.

Revert it. The records it added go to the trash and the stock it posted is taken back out with a reversing document, so the ledger still tells the truth about what happened. Large files import in batches and can be resumed.
Every list has an Export button that writes exactly what you are looking at, filters and all, to a CSV. It is a free feature, on purpose.
No. It uses its own database tables. Stock levels, ledger rows and document lines are relational data, and storing them as posts and post meta makes every list and report slower as the history grows.

Licensing and Privacy

Neither. The free edition is a complete stock system. Pro is a separate download that adds features; nothing in the free build is disabled.

Nothing, unless you ask for it. Deleting the plugin removes its files and keeps every item, warehouse, document and ledger row, so installing it again picks up where you left off. Deactivating never deletes anything either.

To remove the data as well, an administrator turns on Settings -> Uninstall -> Delete all inventory data when the plugin is deleted before deleting. Even then nothing is removed while another copy of the plugin is still installed, for example the Pro build beside the free one, because that copy uses the same data.

Not to manage your inventory. Every item, warehouse, document, ledger row and report is read from and written to your own WordPress database, and no inventory data is ever sent anywhere. There is no analytics call, no remote rendering and no vendor phone-home.

The one connection the plugin can make is to Freemius, which handles licensing and updates.