A1 Profit Reports for WooCommerce

Description

A1 Profit Reports for WooCommerce adds the reporting layer WooCommerce’s own Cost of Goods Sold feature doesn’t provide:

  • Sortable Profit and Margin columns on the product list.
  • A Profit row on every order, and a Profit column on the orders list — refund-aware.
  • A date-range Cost of Goods report: summary cards, a per-product profit breakdown, and CSV export.
  • Quick-select date presets (Last 30 Days, This Month, This Quarter, Last Quarter, This Year, Last Year).
  • A tool to recalculate historical cost for orders that predate Cost of Goods tracking.
  • Configurable order statuses for what counts as a sale in reports.

This plugin reads and writes cost data through WooCommerce’s own Cost of Goods Sold field (WC_Product::get_cogs_value() / get_cogs_total_value()), so cost entry, Quick Edit, and Bulk Edit all work the way they already do in WooCommerce — this plugin doesn’t duplicate that, it reports on top of it.

Requirements

  • WooCommerce 9.5 or newer (this plugin reports on top of WooCommerce’s own native Cost of Goods Sold field, which isn’t available on older versions).
  • WooCommerce’s Cost of Goods Sold feature must be enabled (WooCommerce Settings Advanced Features). The plugin turns this on automatically on activation.

Scale

Not recommended for stores exceeding roughly 10,000 sales/month, particularly when using wide date ranges like “This Year” — report data is cached, but a first-time computation over a very large order volume can still be slow.

Installation

  1. Upload the plugin files to /wp-content/plugins/a1-profit-reports-for-woocommerce, or install through the WordPress admin’s Plugins screen.
  2. Activate the plugin. This automatically enables WooCommerce’s Cost of Goods Sold feature if it isn’t already on.
  3. Set a cost on your products (Product data Pricing, or via Quick Edit / Bulk Edit).
  4. Find your report under WooCommerce Cost of Goods.

FAQ

Why don’t I see cost data on old orders?

Orders placed before the Cost of Goods feature was enabled never had a cost snapshotted. Use the “Recalculate Historical Cost for This Range” button on the report page — it applies each product’s current cost retroactively. This is an approximation, not a historical record: if a product’s cost has changed since the sale, the recalculated value won’t match what it actually cost at the time.

Why is the report missing cost for some products?

The report flags products sold in the period that currently have no Cost of Goods value set. They’re counted at $0 cost until you add one.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“A1 Profit Reports for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.2.8

  • Fix: Plugin URI in the plugin header still pointed at the pre-rename /a1-woocog/ URL (404, flagged in wp.org review round 2) — now points to /a1-profit-reports-for-woocommerce/.
  • Add: Requires Plugins: woocommerce header, per the reviewer’s optional suggestion.
  • Fix: the (Pro-only) report page’s date-preset <select> had its JS in a hardcoded <script> tag instead of being enqueued. This file is excluded from the free/wp.org build by Freemius’s __premium_only code-stripping (confirmed empirically against the built free zip — the file, and every <script> tag, is absent), but it does ship in the premium build, so fixed it the same way as the earlier product-list CSS finding: registered/enqueued via wp_enqueue_script()/wp_add_inline_script().

1.2.7

  • Packaging: added premium_slug and wp_org_gatekeeper to the Freemius fs_dynamic_init() config, per Freemius’s dashboard after the plugin rename. No functional change.

1.2.6

  • Rename the Freemius-provided “Account” submenu item (WooCommerce Account) to “A1 Profit” so it’s identifiable as belonging to this plugin instead of reading as a generic, unrelated menu item.

1.2.5

  • Rename: renamed from “A1-WooCOG” to “A1 Profit Reports for WooCommerce” (wp.org review round 2) — the reviewer flagged the old name for fusing WooCommerce’s “Woo” trademark into the plugin name in a way that implies affiliation. Text domain changed to a1-profit-reports-for-woocommerce to match. Internal constants, function/class prefixes, database meta keys, and the Freemius product slug (tied to existing license records) are unchanged.
  • Fix: the product list’s column-width CSS (admin_head-edit.php printing a raw <style> tag) is now registered and enqueued via wp_enqueue_style()/wp_add_inline_style(), per WordPress.org’s Plugin Check.

1.2.4

  • Fix: WordPress.org’s automated submission scan hard-blocked on the bundled Freemius SDK’s update-checking code (plugin_updater_detected). Per Freemius support, this check is waived for SDKs placed under a vendor/ folder — moved the SDK from freemius/ to vendor/freemius/ (matching A1-WooBay’s existing structure) and updated the bootstrap require path accordingly. No functional change.

1.2.3

  • Fix: Plugin URI and Author URI in the plugin header were identical, which WordPress.org’s submission check rejects. Plugin URI now points to the plugin’s own product page (https://a1plugins.com/a1-woocog/) instead of duplicating the author/company URL.

1.2.2

  • No functional/behavior changes. Adds a checked-in release build script (bin/build-release.sh, excluded from the shipped zip itself) replacing an ad-hoc manual process — version bump needed only so Freemius has a distinct build to stage after 1.2.1 was already uploaded.

1.2.1

  • Fix: plugin header was missing the required License/License URI lines (found by WordPress.org’s Plugin Check tool).
  • Fix: wc_price() output (which returns HTML) was echoed unescaped in several places — the report page, the order detail Profit row, the orders list Profit column, and the product list Profit column. All wrapped in wp_kses_post().
  • Packaging: release zips now also exclude .gitignore (in addition to the dev-only files already excluded).

1.2.0

  • WordPress.org submission compliance (Guideline 5, no trialware): the Cost of Goods Report is now removed entirely from the free build via Freemius’s code-stripping (__premium_only), not just gated behind a license check. has_premium_version is now true — Freemius generates a separate free zip (for wp.org) and premium zip (for paying/trial customers). Existing customers who unlocked Pro in-place under the old model now need to download and install the separate premium zip from their Freemius account instead.

1.1.0

  • Add a “Profit by Product” bar chart to the report page (top 10 products by profit), rendered with plain CSS — no charting library added, to keep the plugin lightweight. CSV export is unchanged.

1.0.1

  • Fix: license activation had no visible entry point. Freemius silently defaulted has_premium_version to match has_paid_plans (true) since it was never set, so the plugin was treated as a dual-zip product requiring a separate premium download instead of unlocking Pro in place. Set has_premium_version to false and added a proper Account menu (nested under WooCommerce) so “Activate License” now appears on the Plugins page as expected.

1.0.0

  • First public release.

0.5.0

  • Connect the real Freemius product (id 35412, slug a1-woocog) – license activation and updates now work.
  • Add free/Pro gating: the Cost of Goods Report page (summary, per-product breakdown, CSV export, historical recalculation, and settings) is now a Pro feature. Profit and Margin columns stay free on every plan.

0.4.0

  • Add Freemius SDK integration scaffolding (licensing/updates), pending the real Plugin ID and Public Key.
  • Add this readme.txt with a proper changelog.

0.3.1

  • Fix: Profit/Margin columns silently failed to render on the product list, due to a WooCommerce filter-priority conflict.
  • Removed the redundant Cost column/row now duplicated by WooCommerce’s own native Cost of Goods Sold display.

0.3.0

  • Add a tool to recalculate historical cost for orders that predate Cost of Goods tracking.
  • Add configurable order statuses for what counts as a sale in reports.

0.2.4

  • Cache report data for performance, invalidated automatically on order status changes and refunds.

0.2.3

  • Add quick-select date range presets to the report page.

0.2.2

  • Fix: cost/profit/margin cache now syncs when a product is created, not just when it’s updated.

0.2.1

  • Add uninstall cleanup for the plugin’s own cached data.

0.2.0

  • Migrate to WooCommerce’s native Cost of Goods Sold field instead of a custom cost field. Adds refund-aware profit calculations and native Quick Edit / Bulk Edit support for cost.

0.1.2

  • Add CSV export to the Cost of Goods report.

0.1.1

  • Fix sortable Cost/Profit/Margin product columns.

0.1.0

  • Initial release: cost tracking, profit columns, and a date-range report.