Сүрөттөө
Run a complete supplier-to-shelf workflow inside WordPress — free, with no monthly fee and no SaaS account required. Built specifically for WooCommerce stores that have outgrown basic stock management but don’t want to pay enterprise prices for inventory software.
Create purchase orders by SKU, send them to suppliers, receive stock in one click, and watch WooCommerce stock counts update automatically — including per-warehouse counts if you run multiple locations or use OpenPOS. All from a clean new WC-Manager menu in your WordPress admin.
Free forever. Why?
We build a paid SaaS dashboard at wc-manager.com that adds AI insights, reports, restock forecasting and live POS feeds on top of the same data. The procurement modules in this plugin stay free for everyone — most stores need basic purchase orders before they need analytics, and we’d rather earn your trust now than charge you for the basics.
What you get, for free
Purchase Orders
* Build a PO by SKU — variations fully supported.
* Mark as draft, send, partial, received or cancelled with a clear status workflow.
* Receive in one click — WooCommerce stock_quantity, manage_stock and stock_status are bumped automatically.
* Per-warehouse stock updates if the receiving warehouse is mapped to an OpenPOS outlet (the _op_qty_warehouse_{id} meta OpenPOS uses).
* Auto-generated PO numbers (PO-00001, PO-00002, …).
* Notes, line-item costs and a running subtotal.
Suppliers directory
* Name, email, phone, payment terms and lead time.
* Keep all your supplier contacts in one place — no more digging through emails or spreadsheets.
Warehouses / stock locations
* Define your physical stock locations.
* Optionally map each one to an existing OpenPOS outlet so receives write to the same per-location meta key OpenPOS already uses — no double counting, no drift.
Secure REST API
* Endpoints under /wp-json/woo-manager/v1/ for suppliers, warehouses and purchase orders (GET, POST, PUT, DELETE).
* Authenticates with your existing WooCommerce REST consumer key — no new connection key, no WordPress Application Password.
* Read-only data endpoints for OpenPOS outlets/registers, TeraWallet/WooWallet balances and WooCommerce Memberships (data WooCommerce’s standard REST API can’t see).
OpenPOS terminal panels (optional)
* Members panel — cashiers look up a customer at the register and see their active WooCommerce Memberships.
* Stock Take panel — run a category-by-category count at the register; counts auto-save.
Telegram alerts (free)
* Real-time notifications for every new WooCommerce order to any Telegram chat — group, channel or DM — via the WC-Manager bot.
* Hooks woocommerce_new_order (and optionally woocommerce_order_status_changed) and forwards instantly — sub-second alerts on every checkout.
* Manage chats from WP admin (WC-Manager → Telegram): chat ID, events (new / completed / refunded / PO received / low stock / new customer), order-status filter, POS-only vs Online-only filter (when OpenPOS is detected), minimum order total, custom HTML template.
* Same config syncs with the WC-Manager dashboard — manage from either place.
* Customer notes & tags syncing (VIP, wholesale, prefers WhatsApp, at risk, etc.) keyed by email so guest checkouts are annotatable too — managed under WC-Manager → Customer Notes.
Install once, activate. There is nothing to configure for the free procurement features.
Problems this plugin solves
- “I can’t manage purchase orders inside WooCommerce.” Built-in PO module, free.
- “I lose track of which supplier sent which order.” Suppliers directory linked to every PO.
- “Stock at my second outlet is invisible from WP admin.” Multi-warehouse, with OpenPOS outlet sync.
- “Receiving stock means hand-editing every product.” One-click receive bumps WC stock automatically.
- “I want to know the second an order comes in.” Free Telegram alerts to your phone, group, or warehouse screen — sub-second.
- “Different staff use different spreadsheets.” One source of truth, in WordPress, with the rest of your store.
Optional upgrade — WC-Manager dashboard
Want analytics and AI on top of all this? Connect a free WC-Manager account at wc-manager.com and the same suppliers, POs and warehouses sync both ways with our hosted dashboard, which adds:
- AI Insights — plain-English summary of your sales, customers and POS data with action list and business valuation.
- AI product descriptions — generate SEO-ready copy in your chosen tone and push to WooCommerce in one click.
- Reports — profit by month or year, units sold, order-timing heatmap, repeat-buyer rate and customer lifetime value.
- Multi-location stock transfers — move inventory between warehouses with full audit trail.
- Restock Predictor — velocity-based reorder forecasts so you never run out of best sellers.
- Spreadsheet product editing — bulk-edit prices, stock, supplier prices and meta fields.
- Live POS feed — real-time sales view across all outlets and registers.
- Membership management, category stock takes, full activity log, team access.
Free plan available. No credit card to start.
Works great with
- OpenPOS — outlets, registers, the in-terminal Members & Stock Take panels, and per-warehouse stock that stays in sync with the same meta key OpenPOS uses (
_op_qty_warehouse_{id}). - WooCommerce Memberships — read plans and per-customer memberships.
- TeraWallet / WooWallet — read store-credit balances.
- Telegram — instant order notifications via the WC-Manager bot (@wc_manager_bot) — add it to any group, channel or DM, send
/id, paste into the plugin’s Telegram page. - Works on any store running standard WooCommerce too — the optional integrations only activate when their host plugin is present.
REST endpoints
All endpoints authenticate with your existing WooCommerce REST consumer key (or any logged-in user with the manage_woocommerce capability). No separate connection key needed.
Procurement (free):
GET, POST /wp-json/woo-manager/v1/suppliers— list / create suppliers.GET, PUT, DELETE /wp-json/woo-manager/v1/suppliers/{id}— read / update / delete one supplier.GET /wp-json/woo-manager/v1/warehouses— list warehouses.GET, POST /wp-json/woo-manager/v1/purchase-orders— list / create POs.GET, DELETE /wp-json/woo-manager/v1/purchase-orders/{id}— read / delete one PO.POST /wp-json/woo-manager/v1/purchase-orders/{id}/send— mark a PO as sent.POST /wp-json/woo-manager/v1/purchase-orders/{id}/cancel— cancel a PO.POST /wp-json/woo-manager/v1/purchase-orders/{id}/receive— receive stock (updates WooCommerce stock + per-warehouse meta).POST /wp-json/woo-manager/v1/purchase-orders/{id}/sync-receive— bumpqty_receivedwithout touching WooCommerce stock (used when the dashboard already updated stock itself).
OpenPOS, wallet & membership reads:
GET /wp-json/woo-manager/v1/openpos-outlets— OpenPOS outlets (_op_warehouseposts).GET /wp-json/woo-manager/v1/openpos-registers— OpenPOS registers (_op_registerposts).GET /wp-json/woo-manager/v1/terawallet/balances— users with a non-zero TeraWallet balance.GET /wp-json/woo-manager/v1/terawallet/balance/{user_id}— a single user’s TeraWallet balance.GET /wp-json/woo-manager/v1/memberships/plans— WooCommerce Memberships plans.GET /wp-json/woo-manager/v1/memberships/user/{user_id}— a user’s memberships.
OpenPOS panels (optional)
- Members — cashiers can look up a customer at the register and see their active WooCommerce Memberships.
- Stock Take — run a category-by-category stock count at the register; counts auto-save and sync to the WC-Manager web app.
External service
The Stock Take panel communicates with the WC-Manager web app at https://wc-manager.com to load and save stock takes for your organisation. It authenticates with a per-organisation “plugin token” you paste into the plugin’s settings page (WooCommerce WC-Manager Stock Take). No data is sent until you configure that token and use the Stock Take panel. WC-Manager’s terms and privacy policy: https://wc-manager.com/terms and https://wc-manager.com/privacy.
The REST endpoints, the Members panel, and TeraWallet/membership reads make no external requests — they only respond to authenticated requests into your own site.
Privacy
This plugin does not collect, store, or transmit personal data on its own beyond the Stock Take sync described above, which only sends the stock-count data you create to your own WC-Manager account. See https://wc-manager.com/privacy.
Note on trademarks
WooCommerce is a registered trademark of Automattic Inc. This plugin is an independent companion plugin and is not affiliated with or endorsed by Automattic. OpenPOS and TeraWallet are products of their respective owners. WC-Manager is a separate product by Ops Assist.
Орнотуу
- Install via Plugins Add New in your WordPress admin (search “WC-Manager”) or upload the plugin zip.
- Activate. A new WC-Manager menu appears in the WordPress sidebar.
- Go to WC-Manager Suppliers to start adding suppliers, then Purchase Orders to create your first PO. No further configuration required.
- (Optional) Sign up for a free WC-Manager dashboard account if you want AI insights, reports and a SaaS view of your data. Your suppliers and POs will sync both ways automatically using your existing WooCommerce REST consumer key — no new connection key, no Application Password.
- (Optional) To use the Stock Take panel inside the OpenPOS terminal, go to WC-Manager Stock Take and paste your plugin connection token from the WC-Manager dashboard.
FAQ.KG
-
Are the procurement features really free?
-
Yes. Purchase orders, suppliers, warehouses and one-click receive are 100% free, with no usage limits, forever. We make money from the optional WC-Manager dashboard (AI insights, reports, multi-location transfers) — but the procurement workflow in WP admin is yours to use at no cost.
-
Do I need a WC-Manager account to use the purchase orders?
-
No. The free procurement modules work entirely inside WordPress with no account, no API call out and no payment. Connect a WC-Manager account only if you want the optional dashboard features on top.
-
Does it work with stock-managed products and variations?
-
Yes. POs accept any WooCommerce product or variation by SKU (or by product/variation ID). Receiving updates
stock_quantity, setsmanage_stock, and recomputesstock_statusautomatically. WooCommerce product transients are cleared so the front-end stays accurate. -
Can I manage inventory across multiple warehouses or outlets?
-
Yes. Define warehouses under WC-Manager Warehouses. If a warehouse is mapped to an OpenPOS outlet, receives also write to the per-outlet meta key OpenPOS uses (
_op_qty_warehouse_{id}) — so OpenPOS sees the new stock instantly with no sync step. -
How is this different from a WooCommerce inventory plugin like ATUM or Stock Manager?
-
This plugin is purpose-built for stores that want a simple, clean purchase-order workflow without paying a monthly enterprise subscription, and that want optional cloud analytics on the same data. It’s lightweight, ships only the modules listed above, and integrates directly with OpenPOS for per-location stock.
-
Does it work with OpenPOS, WooCommerce Memberships, TeraWallet and WooWallet?
-
Yes. OpenPOS is the deepest integration (outlet sync, in-terminal Members and Stock Take panels). Memberships and TeraWallet/WooWallet get read-only REST endpoints so the WC-Manager dashboard can show member status and store-credit balances. The plugin works fine on stores without any of these — those features simply stay dormant.
-
Is my store data safe?
-
Yes. Procurement data lives in your own database in tables prefixed
wp_oadb_. REST endpoints authenticate with your existing WooCommerce REST consumer key — no public endpoints, no third-party services. The Stock Take sync only fires after you explicitly paste a connection token in settings. -
Will this plugin slow down my store?
-
No. Admin pages only load when an admin opens them. REST endpoints respond only to authenticated requests. The wallet-balances query is cached for one minute. There is no front-end overhead at all.
-
How do I uninstall?
-
Deactivate and delete via WordPress Plugins. The procurement tables (
wp_oadb_suppliers,wp_oadb_warehouses,wp_oadb_pos,wp_oadb_po_items) stay in place so you don’t lose your supplier list and PO history; drop them manually if you want a fully clean removal.
Сын-пикирлер
There are no reviews for this plugin.
Contributors & Developers
“Purchase Orders, Suppliers & Multi-Warehouse Inventory for WooCommerce — Free” is open source software. The following people have contributed to this plugin.
МүчөлөрүInterested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Өзгөртүүлөр
1.5.19
- Re-release of 1.5.18 with a fresh tag — an earlier SVN deploy committed a partial / stale 1.5.18 tag before the working copy locks could be cleared. This version is the same code under a clean tag so WordPress’ auto-update reliably picks it up.
1.5.18
- Channels stored locally too — alongside the bot token, the channel list is now pulled into
wp_optionson connect / Refresh / daily cron. The order-hook dispatch is now fully network-free for config: zero outbound HTTP calls for credentials or routing, only the final Telegram API send. This is the root cause of “manual test works but real orders don’t” — the per-order fetch was failing silently on hosts with cURL/DNS hiccups. - Debug logging on the dispatch path — every order hook now writes a line to
wp-content/debug.log(withWP_DEBUG_LOG=true): “dispatch fire”, “dispatch ok / fail to chat X”, “dispatch skip — no bot token”, “dispatch skip — 0 channels matched”. Lets you tail one file and immediately see why an order didn’t alert. - HPOS compatibility declared — runs on stores with WC’s High-Performance Order Storage enabled without throwing the incompatibility warning.
1.5.17
- Bot token is now cached locally on plugin-token save. The dashboard’s
TELEGRAM_BOT_TOKENenv value is pulled intowp_optionsthe moment you connect, so the order-hook dispatch never touches the network for credentials — alerts keep firing even if your host has a transient DNS/cURL hiccup. Auto-refreshes daily via WP-Cron; manual Refresh bot token button on the Connection page picks up rotations immediately. - Connected state is now lock-edit — once a valid token is saved you see a status card (plugin token tail, bot username, last-synced time) plus Refresh and Delink buttons. To change the token, click Delink first. Prevents accidental token changes.
- Auto-bail on rejected tokens — if the dashboard responds 401 during the initial fetch, the saved token is cleared rather than left in a “saved but doesn’t work” limbo.
1.5.16
- Reliable Telegram alerts — now hooks five WooCommerce actions at priority 99 (
woocommerce_new_order,checkout_order_processed,thankyou,payment_complete,order_status_changed) with per-(order, event) dedup. Previously onlynew_orderfired, which some payment gateways (PayFast, async redirects, COD) don’t reach reliably — so paid orders silently never alerted. Multiple hooks now mean any path through checkout triggers exactly one Telegram message per status flavour. - “Send test alert” button on the Telegram page that runs the full direct-send pipeline (bot token fetch channel match Telegram API) using your most recent real order. Surfaces a per-chat success/failure summary inline so you know exactly which channel didn’t receive (and why).
- Better diagnostics on the channels list — retries the dashboard fetch on transient cURL errors (DNS exhaustion, “thread failed to start” on shared hosts), falls back to a 24h cached copy so the list doesn’t go blank on a blip, and shows specific host-side troubleshooting tips when cURL error 6 is detected.
1.5.15
- Fix: Connection page returned “Sorry, you are not allowed to access this page” — the submenu was registered before its parent menu existed. Adjusted hook priority so the parent always comes first.
- Fix: Stock Take page wasn’t listing in-progress stocktakes — the dashboard returns
{ stocktakes, outlets }and the plugin was iterating the outer object instead of the inner array. Now reads.stocktakes, drops the fake count columns, and renders the real fields (outlet, started by, started, last updated).
1.5.14
- New: Connection page (WC-Manager → Connection) — dedicated home for the plugin token with paste / save / validate / clear, mirroring the dashboard’s Plugin Connection card. One token powers every WC-Manager feature (Telegram, customer notes, stocktake sync, supplier & PO sync) so this is now the single place to configure it.
- Token paste also embedded on the Telegram page — if the bot can’t connect, the same token card shows inline so you don’t have to bounce pages.
- Stock Take page is now an actual stocktake interface — lists in-progress stocktakes pulled live from the dashboard, with shortcuts to start one at the till (OpenPOS) or in the dashboard for the full UI. Token settings removed from here (lives on the Connection page now).
1.5.13
- Telegram alerts simplified: always send direct from WP, no forwarder fallback, no bot token to paste. Plugin auto-fetches the token from WC-Manager (env var
TELEGRAM_BOT_TOKENon the dashboard) using your existing plugin token, cached for 5 min. Channels still configured in the dashboard and synced to WP admin. Sub-second alerts; admin never handles the secret.
1.5.12
- Direct Telegram mode — paste your Telegram bot token under WC-Manager → Telegram and the plugin sends alerts straight to Telegram from WP on every order, skipping the dashboard webhook entirely. Fewer failure points (no Vercel env to configure, no webhook URL, no proxy to whitelist) and a more reliable sub-second alert path. Falls back to the forwarder if you leave the token blank. Channels (chat IDs, events, filters, templates) still managed in the dashboard and synced to WP admin — one source of truth.
1.5.11
- Telegram forwarder now defaults to ON for both “New order created” AND “Order status changed”. Without the status-change hook, completed-order (and paid-order) alerts never reach the dashboard, because WooCommerce fires
woocommerce_new_orderwhile the order is still in “pending” state — before payment clears. Existing installs keep their saved preference; only fresh setups get the new default.
1.5.10
- Readme refresh — Telegram alerts and Customer Notes now front-and-centre in the feature list, “Problems this plugin solves” and “Works great with” sections. No functional changes.
1.5.9
- Telegram channel form: hides the Order statuses picker unless New order is checked. The Order completed and Order refunded events already imply their status, so asking for status would be confusing (and could silently never fire if you picked a mismatched pair).
1.5.8
- Updates the bot deep-link to
@wc_manager_bot(the actual Telegram bot username).
1.5.7
- Full Telegram channel manager in WP admin — add, edit, test, delete chats from WC-Manager → Telegram with the same controls the dashboard offers (chat ID, events, statuses, POS / online source filter when OpenPOS is detected, min order total, custom HTML template). Reads + writes the dashboard via the existing plugin token — what you change in either place reflects in both instantly.
1.5.6
- New: Telegram Alerts module under WC-Manager → Telegram. Forwards every new WooCommerce order (and optionally every status change) to the WC-Manager dashboard the moment it happens, which then routes it to your chosen Telegram groups, channels or DMs via the WC-Manager bot. Faster than the dashboard’s own polling — alerts hit your phone within a second of checkout. Per-channel filters (events, statuses, POS vs online, min total, custom HTML template) all live in the dashboard.
1.5.5
- New: Customer Notes & Tags under WC-Manager → Customer Notes. Free per-customer free-form notes plus tags (VIP, Wholesale, Prefers WhatsApp, At risk, etc.) keyed by email so guest checkouts are annotatable. Includes 9 quick-tag suggestions, 4 000-char notes, and a search box. Two-way sync with the WC-Manager dashboard via new
GET / PUT /woo-manager/v1/customer-annotationsendpoints. - New
wp_oadb_customer_annotationstable created automatically on upgrade.
1.5.4
- New: dark + purple admin theme matching the WC-Manager dashboard. Loaded only on this plugin’s WP admin pages — the rest of WP admin is untouched.
- Warehouses auto-mirror from OpenPOS. Every published OpenPOS outlet is now created as a Warehouse on first page load with the OpenPOS link pre-set. No more empty Warehouses page if you already use OpenPOS.
- Live stock lookup on the Purchase Order builder. As you type a SKU on a PO line, the plugin fetches the product’s name and current stock under the input and auto-fills the unit cost from the WooCommerce price if you haven’t set one. Variations supported.
- PO status badges restyled as proper pill badges (draft / sent / partial / received / cancelled).
1.5.3
- New REST endpoint
POST /woo-manager/v1/purchase-orders/{id}/sync-receivethat bumps per-lineqty_receivedwithout touching WooCommerce stock. Lets the WC-Manager dashboard mirror its own receive and return flows into the plugin’s PO status (draft sent partial received) without double-counting stock.
1.5.2
- New REST endpoints under
woo-manager/v1/for the procurement module — Suppliers (GET/POST/PUT/DELETE), Warehouses (GET), Purchase Orders (GET/POST/DELETE) plus PO send / cancel / receive actions. - Same authentication as the rest of the bridge — no additional connection key needed; the WooCommerce REST consumer key handles it.
- Lets the WC-Manager dashboard mirror suppliers and POs both ways: changes made in WP admin appear in the dashboard, and vice versa.
1.5.1
- Renamed the top-level admin menu from “OpsAssist” to “WC-Manager” to match the dashboard branding.
- New REST endpoints for the procurement modules so the WC-Manager dashboard can read and write the same suppliers, warehouses and purchase orders:
GET/POST /woo-manager/v1/suppliers,GET/PUT/DELETE /woo-manager/v1/suppliers/{id}GET/POST /woo-manager/v1/warehouses,GET/PUT/DELETE /woo-manager/v1/warehouses/{id}GET/POST /woo-manager/v1/purchase-orders,GET/PUT/DELETE /woo-manager/v1/purchase-orders/{id}POST /woo-manager/v1/purchase-orders/{id}/send | /cancel | /receive
- All endpoints authenticate with the existing WooCommerce REST consumer key — no new connection token needed.
1.5.0
- New: built-in Procurement modules in the WP admin under a new top-level OpsAssist menu.
- Suppliers — directory with contact details, payment terms and lead time.
- Warehouses — stock locations, with optional mapping to OpenPOS outlets so receives write to the same
_op_qty_warehouse_{id}meta OpenPOS already uses. - Purchase Orders — create draft POs with line items by SKU (variations supported), mark as sent, then receive in one click to bump WooCommerce stock + per-warehouse counts.
- Stock Take settings page moved from the WooCommerce submenu into the new OpsAssist menu, keeping all OpsAssist tools in one place.
- Database tables are created automatically on upgrade — no manual setup.
1.4.3
- Added a custom-header authentication method (X-WC-Manager-Key / X-WC-Manager-Secret). Some sites run a Basic-Auth or security plugin that intercepts the standard Authorization header and rejects non-WooCommerce REST routes as a failed login. The custom headers bypass that cleanly, survive redirects, and keep credentials out of the URL/access logs. The dashboard uses them automatically when available.
1.4.2
- Fixed authentication on servers where the Authorization header is consumed by PHP (most Apache mod_php and many FastCGI setups). The endpoints now read the WooCommerce consumer key/secret from PHP_AUTH_USER/PHP_AUTH_PW and REDIRECT_HTTP_AUTHORIZATION as well, matching how WooCommerce’s own REST API authenticates. This resolves the dashboard reporting the plugin as “not detected” even when it is active.
1.4.1
- Hardened the plugin loader: if an upload is incomplete and an internal file is missing, the plugin now shows an admin notice and stops loading instead of triggering a fatal error. This prevents a partial update from taking a site down.
1.4.0
- The woo-manager/v1 endpoints now authenticate with your existing WooCommerce REST consumer key/secret — no WordPress Application Password needed. Store setup is just the API key plus this plugin.
- Added
/ping(authenticated handshake + companion-plugin detection),/media(image upload), and/cashiers(user name resolution) endpoints so the dashboard can do everything through this plugin with one credential.
1.3.0
- Restructured into a multi-folder plugin.
- Added WooCommerce Memberships REST endpoints (
/memberships/plans,/memberships/user/{id}). - Merged the standalone “WC-Manager: Members” and “WC-Manager: Stock Take” companion plugins into this plugin as optional OpenPOS terminal panels. They load only when OpenPOS is present.
- Added the Stock Take settings page (WooCommerce WC-Manager Stock Take). Existing tokens from the standalone Stock Take plugin are read automatically.
- Removed the self-hosted updater from the merged plugins — updates now come through WordPress.org.
1.2.0
- Renamed plugin to “OpsAssist Data Bridge for WooCommerce”.
- Function prefix renamed to
oadb_*. - No changes to the REST endpoints or response shapes.
1.1.0
- Added a one-minute cache around the wallet-balances query.
1.0.0
- Initial release.