Plugin
FreemiumPihlfelt Cost & Margin Pricing for WooCommerce
The right margin on every product — automatic, safe and always undoable
Description
About the plugin
The price list landed in your inbox again. How many hours will it take this time?
Every store selling physical goods knows the drill: the supplier raises prices, the file arrives, and hours of Excel, VAT arithmetic and manual editing in the product screen follow. Prices end up wrong, a product gets forgotten, and the margin you thought you had is gone. Cost & Margin Pricing reworks the whole flow: upload the file, see exactly what changes — old price, new price, real margin, the full calculation for every product — and apply with one click. The column mapping is saved per supplier, so next month's list takes minutes.
Buying in EUR or USD and selling in SEK? Then your margin moves every day.
Purchasing in a foreign currency means your margin has a life of its own. The plugin fetches daily reference rates (ECB, with an automatic fallback source), converts every purchase price to your store currency and lets you add an FX buffer per supplier — so a weak home currency doesn't eat your profit between two price updates. Manual rates always win, if you'd rather lock the rate yourself.
Dare to let a plugin touch your prices? Yes — and here is why.
What separates Cost & Margin Pricing from everything else in the category is the safety net. Nothing is applied without a preview — you see every change before it happens. Every run is journaled and can be undone with one click. Manually adjusted prices are detected and never silently overwritten. Locked products are always skipped, large price changes require an extra per-row confirmation, and automatic runs are off until you explicitly enable them — and even then, every guard still applies.
Why people choose Cost & Margin Pricing
- Built on WooCommerce COGS — the cost is always written to Woo's own Cost of Goods Sold field, so reports, exports and every integration keep working. No lock-in.
- A transparent calculation chain — real cost → FX buffer → landed costs → margin → VAT → rounding. "Why this price?" shows the steps with numbers for every product.
- Imports built for reality — separator, encoding and European decimal commas are auto-detected; blank cells always mean "leave unchanged".
- Psychological rounding — land prices on …9, …95, …99 or …195, once, on the number the customer sees.
- Sales without losses — margin-based sale prices that follow the cost, and a manually set sale price always wins (Pro).
- No frontend code — all prices are plain WooCommerce prices in the database. No price filters, no performance impact, and everything stays if the plugin is uninstalled.
- Price change log & Omnibus — every price and cost change is logged, including those made outside the plugin. The dashboard warns when products sell below real cost, and the lowest price of the last 30 days is available per product — with an optional block (or shortcode) for customer display under the EU Omnibus directive.
Getting started
1. Create a supplier with its currency and an optional FX buffer. 2. Set your margin or markup in the global rule and pick a rounding. 3. Import the price list or enter costs on the product page, preview the run and apply. Done — and everything can be undone.
Free goes a long way. Pro goes big.
The free version is a complete tool: one supplier per product, one global rule, import/export, daily rates, a price change log with margin health and the Omnibus reference — and the entire safety net with journal and undo. The log also lays the groundwork for upcoming price-analysis features: data collection starts the moment you install. Pro scales up with multiple suppliers per product and cost strategies, the master list and Excel import, rules per category/supplier/product, margin-based sales with a dedicated Sales page, a margin floor, scheduled runs at any interval with email reports, a profit report showing net sales, cost, profit and margin from your orders per product and supplier, and reports with supplier comparison.
Features
What it does
Compare
Free vs Premium
| Feature | Free | Premium |
|---|---|---|
| Suppliers with currency, FX buffer & lead time | 1 per product | Multiple per product + cost strategy |
| Supplier column & filter in the products list | ||
| Preferred supplier via product page, variation box & bulk edit | ||
| Sale filter in the products list (current & upcoming sales) | ||
| Margin/markup rules | 1 global rule | Per category, supplier & product |
| Per-product overrides on the product page | ||
| Price list import (CSV) with preview & undo | ||
| Master list — one file for all suppliers | ||
| Excel import (.xlsx) | ||
| Daily exchange rates (ECB) + manual rates | ||
| Write-back to WooCommerce COGS | ||
| Journal, drift detection & one-click undo | ||
| Price change log, margin health & Omnibus reference (block + shortcode) | ||
| Margin-based sales with a Sales page | ||
| Margin floor with warnings | ||
| Scheduled runs | Monthly | Daily–monthly |
| Email report after automatic runs | ||
| Reports: profit from orders, margins & supplier comparison | ||
| Priority Support |
Questions & answers
Frequently Asked Questions
Changelog
Version 1.1.1
- Security hardening: the label of the “Lowest price (30 days)” block and shortcode is sanitized when read, admin templates are included from a fixed list.
- Pro: code paths for PHP versions older than 8 were removed from the bundled Excel import library (the plugin requires PHP 8.1).
Version 1.1.1
- Security hardening: the label of the “Lowest price (30 days)” block and shortcode is sanitized when read, admin templates are included from a fixed list.
- Pro: code paths for PHP versions older than 8 were removed from the bundled Excel import library (the plugin requires PHP 8.1).
Version 1.1.0
- Pro: Profit report — net sales, cost of goods sold, profit and margin from your orders, per product and supplier, for any period, with CSV export.
- New “Lowest price (30 days)” block — the block counterpart of the shortcode; finds the product on its own in product templates and grids.
- The plugin now lives under WooCommerce → Cost & Margin, with its sections as tabs. Every address is unchanged.
- Deactivated suppliers can be reactivated; exports have no row limit; UTF-16 (“Unicode Text”) price lists can be imported.
- Fixed: the cost is written to WooCommerce’s cost field for every product in a run — also when the price stays, is locked, was re-priced by hand or is on sale.
- Fixed: the preview lists every change (rows beyond 500 used to be applied without being shown).
- Fixed: an ended manual sale campaign no longer blocks the product; a rule price at or below your own sale price is skipped instead of deleting the sale price.
- Fixed: stores entering prices excluding VAT now hit the rounding target including VAT (9.99 no longer shows as 9.98).
- Fixed: a run interrupted by an error in another plugin closes as “completed with failures” and can be undone; saving Settings no longer postpones the next automatic run.
- Fixed: import edge cases (backslash in a quoted cell, character encoding, 1.5E-05), refused cost rows on the product tab are now reported, held-back exchange rates are accepted when the next fetch confirms them, 30-day lowest price for variable products.
- Pro: a rule’s sale value is validated against its basis; the license only governs updates and support — never features.
- Tested with WooCommerce 11.1 and WordPress 7.1; declared compatible with the Cart and Checkout blocks; Action Scheduler is no longer bundled (WooCommerce ships it).
Version 1.1.0
- Pro: Profit report — net sales, cost of goods sold, profit and margin from your orders, per product and supplier, for any period, with CSV export.
- New “Lowest price (30 days)” block — the block counterpart of the shortcode; finds the product on its own in product templates and grids.
- The plugin now lives under WooCommerce → Cost & Margin, with its sections as tabs. Every address is unchanged.
- Deactivated suppliers can be reactivated; exports have no row limit; UTF-16 (“Unicode Text”) price lists can be imported.
- Fixed: the cost is written to WooCommerce’s cost field for every product in a run — also when the price stays, is locked, was re-priced by hand or is on sale.
- Fixed: the preview lists every change (rows beyond 500 used to be applied without being shown).
- Fixed: an ended manual sale campaign no longer blocks the product; a rule price at or below your own sale price is skipped instead of deleting the sale price.
- Fixed: stores entering prices excluding VAT now hit the rounding target including VAT (9.99 no longer shows as 9.98).
- Fixed: a run interrupted by an error in another plugin closes as “completed with failures” and can be undone; saving Settings no longer postpones the next automatic run.
- Fixed: import edge cases (backslash in a quoted cell, character encoding, 1.5E-05), refused cost rows on the product tab are now reported, held-back exchange rates are accepted when the next fetch confirms them, 30-day lowest price for variable products.
- Pro: a rule’s sale value is validated against its basis; the license only governs updates and support — never features.
- Tested with WooCommerce 11.1 and WordPress 7.1; declared compatible with the Cart and Checkout blocks; Action Scheduler is no longer bundled (WooCommerce ships it).
Version 1.0.0
- Initial release
- Margin and markup rules with landed costs and psychological rounding
- Price list import (CSV/Excel) with preview, saved mapping and undo
- Daily exchange rates (ECB + fallback), manual rates and FX buffer
- Journal, drift detection, price locks and batch undo
- Pro: master list, margin-based sales, margin floor, scheduled runs and reports
Feature request
Missing something in Pihlfelt Cost & Margin Pricing for WooCommerce?
Tell us which feature or improvement you would like. The request is registered as a ticket with us, and you will get a reply to the email address you provide.