plugin-icon

EmberPrice

Import a supplier price list (Excel or CSV), auto-match products, and bulk-update WooCommerce prices with rules, preview, and rollback.
Version
1.0.1
Last updated
Jul 20, 2026
EmberPrice

EmberPrice imports supplier price lists (Excel XLSX/XLS or CSV) into WooCommerce, so you can update WooCommerce prices from Excel or run a bulk price update from CSV without editing products one by one. Upload the file and EmberPrice auto-detects the columns, matches each row to your real catalog (learned alias, SKU/GTIN, exact name, or fuzzy match), and applies a pricing rule (margin, VAT, rounding) you control. Every price update goes through a full preview, with old price, new price, and percent change, that you can export before anything touches your store, plus a snapshot-based rollback if you change your mind after applying it.

Try it before you trust it with real data: every install ships with a sample supplier price list, so you can run the whole wizard end to end in a couple of minutes with nothing at stake. And it scales past the demo: matching and pricing a real 5,000-row supplier list against a 10,000-product catalog, start to finish, takes under 4 minutes (see the Performance section below).

The full wizard:

  1. Upload a supplier’s XLSX, XLS, or CSV price list.
  2. Map columns: code, description, price are auto-detected; confirm or correct once per supplier.
  3. Review matches: a matching cascade (learned aliases SKU/GTIN exact name fuzzy matching) resolves each row against your real catalog; anything uncertain is flagged for a quick manual confirm, reject, or assign.
  4. Set pricing rules: margin (percentage or fixed), VAT handling, rounding (none, decimals, psychological .99/.90 endings, or nearest multiple), existing sale-price policy, and per-category overrides.
  5. Preview the diff: old price new price, percent change, confidence, and guardrail flags, exportable to CSV before anything touches your store.
  6. Apply: batched in the background via Action Scheduler, with a snapshot taken first so the whole import can be rolled back in one click.

Why not just edit prices manually?

Because supplier lists are messy: headers that aren’t on row 1, merged cells, prices as $ 1.234,56, codes with leading zeros or no code column at all, section rows, discontinued items. EmberPrice’s column detection and matching cascade are built around exactly these cases, and nothing is ever written to a product until you’ve seen the diff.

Safety by design

  • A hard floor prevents any computed price from falling below the supplier’s own list price (catches parsing errors before they reach your store).
  • Guardrails flag any change beyond a configurable percentage for manual review, even when the product match itself is perfect.
  • Every apply takes a snapshot first, so a rollback restores prices byte-for-byte.
  • AI-assisted matching, planned as a future opt-in Pro feature (Anthropic or OpenAI, bring your own API key), is designed to only ever see the supplier’s row text and your own catalog’s product names/SKUs. It never sees customer, order, or other personal data.

What’s in this release

This release covers the full wizard for CSV/XLSX imports on simple and variable products: manual column mapping, alias/SKU/exact-name/fuzzy matching with no row limit, learned-alias memory (so re-imports from the same supplier resolve instantly), a global margin rule, guardrails, preview/export, and full rollback history.

A paid Pro tier is planned for a future update and will add: AI-assisted matching and column mapping, PDF price lists, and per-category pricing rules and rounding.

Performance and tested limits

Measured against a real WooCommerce catalog of 10,000 products (9,700 simple + 300 variable products with 3,000 variations total) and a real 5,000-row supplier price-list import, driven through the actual REST endpoints (no mocks):

  • Matching (full 4-stage cascade against the real catalog): ~71 seconds total (10 Action Scheduler batches of 500 rows, worst single batch 7.7s). Comfortably under 5 minutes.
  • Apply: ~144 seconds total (38 batches of 100 rows, worst single batch 13.9s). Comfortably under a typical 30-second PHP execution limit on shared hosting.
  • Seeder script and reproducible perf harness: tests/seed-catalog.php and tests/run-perf-test.php (WP-CLI only, not shipped in the distribution zip).

Hosting considerations found during this pass (environment characteristics, not plugin defects):

  • On hosts with innodb_flush_log_at_trx_commit=1 and slow disk I/O, every database write incurs a synchronous fsync; large batch operations (apply, rollback) will be slower than the numbers above. This is a MySQL/hosting configuration matter, outside the plugin’s control.
  • Action Scheduler’s own claim query can degrade significantly once wp_actionscheduler_actions/wp_actionscheduler_claims accumulate a very large backlog (tens of thousands of rows) without periodic cleanup. If matching or apply appear stuck, run wp action-scheduler clean first before assuming a plugin bug.

Not yet covered by this QA pass: a full compatibility matrix across WooCommerce 8.x/9.x, PHP 8.2-8.3, and the Storefront/Astra themes. This pass validated against WooCommerce 10.9 / PHP 8.3 only.

Freeon paid plans
Tested up to
WordPress 7.0.2
This plugin is available for download for your site.