Title: OrderCRM for WooCommerce
Author: Dmitriy
Published: <strong>July 12, 2026</strong>
Last modified: July 13, 2026

---

Search plugins

![](https://ps.w.org/ordercrm-for-woocommerce/assets/icon-256x256.png?rev=3605450)

# OrderCRM for WooCommerce

 By [Dmitriy](https://profiles.wordpress.org/timon-dimon/)

[Download](https://downloads.wordpress.org/plugin/ordercrm-for-woocommerce.3.3.4.zip)

 * [Details](https://wordpress.org/plugins/ordercrm-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/ordercrm-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/ordercrm-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/ordercrm-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/ordercrm-for-woocommerce/)

## Description

OrderCRM for WooCommerce transforms your store’s order management into a powerful,
standalone frontend dashboard. Sales managers can filter orders by status, date,
or customer, perform quick searches, and view detailed sales reports with interactive
charts — all without accessing the WordPress admin area. Perfect for medium-sized
businesses handling up to 1,000 orders per month.

### Why OrderCRM?

 * 🚀 **Frontend Dashboard** — No admin access required. Your sales team works from
   a secure, custom interface.
 * 🔍 **Advanced Filters** — Filter orders by status, date range, customer name,
   or order ID in seconds.
 * ⚡ **Quick Search** — Find orders and clients instantly with our fast search 
   engine.
 * 📊 **Sales Reports** — Visualize revenue trends with beautiful charts and period-
   based reports.
 * 🔒 **Secure by Design** — Sales managers get only the tools they need — no accidental
   site breakage.

#### Recommended Plugins

For full functionality, we recommend installing these additional plugins:
 * **Advanced
Shipment Tracking (Free)** – For tracking number management * **WooCommerce PDF 
Invoices & Packing Slips** – For invoice generation

### Support

For support and feature requests, please use the [WordPress.org support forum](https://wordpress.org/support/plugin/ordercrm-for-woocommerce/)
for this plugin.

### Credits

Developed by [Dima Dumchikov](http://facebook.com/dima.dumchikov)

### License

This plugin is licensed under the GPL v2 or later.

## Installation

 1. Upload the plugin files to the `/wp-content/plugins/ordercrm-for-woocommerce` directory,
    or install through WordPress admin panel (the package includes Composer dependencies
    under `vendor/` for PDF export — no server-side `composer install` is required 
    for typical ZIP installs)
 2. Activate the plugin through the ‘Plugins’ menu in WordPress (PHP **GD** and **mbstring**
    extensions are required — activation will stop with a clear message if they are
    missing)
 3. Configure the plugin settings under **OrderCRM** in your admin panel
 4. Set up order status groups in the ‘Statuses’ tab

## FAQ

### Does this plugin work with custom order statuses?

Yes! The plugin is designed to work with any custom order statuses, including those
created by other plugins like Advanced Shipment Tracking.

### How do I configure order status groups?

Go to OrderCRM  Settings  Statuses in your admin panel. You can organize statuses
into three groups: “In Progress”, “Completed”, and “Cancelled”.

### Will updating the plugin affect my existing orders?

No. The plugin includes an automatic update system that safely migrates order statuses
without data loss.

### Is this plugin compatible with other WooCommerce plugins?

Yes, the plugin is designed to work alongside other WooCommerce plugins without 
conflicts.

### What are the system requirements?

 * WordPress 5.6 or higher
 * WooCommerce 5.0 or higher
 * PHP 8.0 or higher
 * PHP extensions **GD** and **mbstring** (required for sales report PDF export 
   via mPDF)

### Is report PDF stored on the server in uploads?

No. The PDF is generated on demand and sent in the AJAX response only; it is not
saved as a public file in the media library or uploads folder, to reduce exposure
of commercial data.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

 *   [ Dmitriy ](https://profiles.wordpress.org/timon-dimon/)

[Translate “OrderCRM for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/ordercrm-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/ordercrm-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/ordercrm-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/ordercrm-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/ordercrm-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 3.3.4

 * **WordPress.org slug:** folder, main file, text domain, and wp-admin menu slug`
   ordercrm-for-woocommerce` (`[unique]-for-woocommerce` pattern); display name **
   OrderCRM for WooCommerce** unchanged.
 * **Plugin Check:** readme short description (≤150 chars), 5 tags, Upgrade Notice(
   ≤300 chars), Tested up to **7.0** — zero warnings on local check.
 * **CRM logs:** login via `/crm-login/` writes **CRM login** activity (explicit
   log after `wp_signon`, symmetric with REST logout).
 * **Transactional emails:** customer notification when CRM changes order status
   across transitions without WooCommerce core email hook (e.g. custom statuses).
 * **Stability:** output buffering in `OrderCRM_Routes::load_template()`; Chart.
   js **4.5.1**; wp-admin Roles/Users tab fixes (role slug normalization, readable
   role names).

#### 3.3.3

 * **wp-admin — Reports tab:** new settings tab (before HPOS Test) to select `product_brand`
   terms in three columns (A–Z); saved to `reports_selected_product_brands`; Post/
   Redirect/Get save flow.
 * **CRM Reports — selected brands block:** after non-completed orders table, shows
   TOP-5 products and TOP-5 categories pie for selected brands only (Completed +
   Processing statuses); **Selected brands:** label lists chosen names; block is
   hidden on screen and in PDF when no brands are selected.
 * **CRM Reports PDF:** includes selected-brands section and `brands_categories_chart_image`
   snapshot (`#salesBrandsCategoriesChart`) with SVG fallback.
 * **UI:** selected-brands block background `#B2BEB5` (distinct from all-products
   statistics `#DBDBDB`).

#### 3.3.2

 * **Security hardening (Release E, staged):** Stage 5.1 strict nonce mode for CRM
   REST reads added behind feature-flag `SALES_CRM_STRICT_REST_NONCE` (default OFF),
   with staged rollout/rollback controls and staging smoke validation.
 * **Post-smoke hotfixes:** customer lookup schema compatibility for environments
   without `wc_customer_lookup.num_orders`; CRM login asset isolation fix to avoid
   plugin-induced root-relative static requests; logs UI refresh delay reduced to
   10 seconds (`sales_crm_logs_cache_invalidate_delay` default).

#### 3.3.1

 * **Security hardening (Release D completed):** legacy invoice storage migration(
   Stage 4.1) finalized with protected storage, lazy + background migration, and
   reversible metadata rollback flow.
 * **Security hardening:** CRM REST same-origin policy (Stage 4.2) enabled for routes`/
   sales-crm/v1/*` with `Origin` validation and explicit cross-origin `403` blocking,
   without frontend/report regressions on staging.

#### 3.3.0

 * **Security hardening (Release B completed):** invoice storage directory is protected(`
   sales-crm-invoices`, deny direct access) and invoice filenames are now unpredictable(`{
   order}-{random}.{ext}`) while user download name remains unchanged.
 * **Security hardening:** staged verifications passed for Stage 1.1, 1.2, 1.3, 
   2.1 and 2.2 on test environment without CRM UI regressions.

#### 3.2.9

 * **wp-admin — General tab:** logo settings are now on the **General** settings
   tab (single form, one Save button). The separate **Logo** tab was removed; legacy`?
   tab=logo` redirects to General.
 * **i18n (ru_RU):** success notice after saving General settings — «Общие настройки
   сохранены.»

#### 3.2.8

 * **WordPress.org Plugin Check:** full compliance (0 errors, 0 warnings) on release
   ZIP — directory submission readiness.
 * **Compatibility:** Tested up to WordPress 7.0 (`readme.txt` and plugin header
   synchronized).
 * **i18n:** translators comments for placeholder strings in order status labels
   and frontend messages.
 * **Verification:** Plugin Check and staging smoke §19 **2026-07-07** — no CRM 
   UI or workflow changes.

#### 3.2.7

 * **Create order — view-model (T-TPL-4d):** `handle_add_order_page_post()` and `
   get_add_order_view()` centralize POST dispatch and display data (totals, customer,
   country options); `add-order.php` template is display-focused. No CRM UI changes.
 * **Verification:** staging smoke **2026-07-06** — add-order (#2234, #2237), cross-
   smoke §19 (order card, products, reports, logout/login); phase-g runner `all_checks_passed:
   true`.

#### 3.2.6

 * **Create order — customer & discount POST (T-TPL-4c-i):** search/select customer,
   apply discount %, and clear draft handled in `Sales_CRM_Order_Service::handle_add_order_draft_mutations_post()`;
   template dispatches a single service call; REST customer selection unchanged.
 * **Create order — create POST (T-TPL-4c-ii):** order creation and new customer
   creation moved to `handle_create_order_post()` and `handle_create_new_customer_post()`(
   redirect to order card, JS fallback when headers already sent).
 * **Verification:** staging smoke **2026-07-06** — 4c-i (search/select, discount,
   clear); 4c-ii (create with existing customer, create with new customer + phone,
   order #2223, transactional email); **HPOS on**.

#### 3.2.5

 * **Create order — draft session (T-TPL-4a):** temporary cart and customer data
   use `Sales_CRM_Order_Draft_Session` (WC session with user-meta fallback); template
   no longer defines global session helpers.
 * **Create order — cart POST (T-TPL-4b):** add / remove / edit quantity handled
   in `Sales_CRM_Order_Service::handle_temp_cart_post()`; correct message when adding
   the same simple SKU again (**Product quantity increased.**).
 * **Create order — totals:** draft order footer totals (subtotal, VAT, discount)
   recalculate correctly for simple and variation lines; CRM discount % is kept 
   after **Create customer**.
 * **CRM products catalog (T-TPL-3):** product list filters and POST update logic
   moved to `Sales_CRM_Products_List_Service`; template is display-focused.
 * **CRM Reports pie chart:** improved category label layout (less overlap; HTML
   legend).
 * **Verification:** staging smoke **2026-07-06** — add-order cart, totals, discount
   + new customer; products catalog.

#### 3.2.4

 * **CRM Reports — category pie chart:** on `/crm-dashboard/reports/`, **Statistics
   among all products** shows TOP-5 products (table) and **TOP-5 categories** (Chart.
   js pie, integer % to 100, **Other** for the rest); cached per report period.
 * **CRM Reports PDF:** category pie chart above the sold-products table; sync and
   async export paths; SVG fallback when chart PNG is unavailable.
 * **CRM Reports layout:** section heading styled like other CRM table blocks (`
   sales-crm-table-container`).
 * **wp-admin — Statuses tab (T-TPL-1):** saving status groups uses Post/Redirect/
   Get — after **Save**, page refresh (F5) no longer shows browser resubmit warning;
   standard green success notice; checkbox selections persist correctly. Template
   is display-only; logic in `Sales_CRM_Admin_Settings`.
 * **Verification:** staging smoke **2026-07-03** — reports pie on screen + PDF;
   Statuses tab Save, PRG, notice.

#### 3.2.3

 * **CRM logs filter:** user dropdown on `/crm-dashboard/logs/` shows names as **
   Last name First name**, sorted A–Z by last name (same display rules as customer/
   order profiles).
 * **CRM products filter:** **Brand** select on `/crm-dashboard/products/` built
   from WooCommerce `product_brand` taxonomy (A–Z); combines with search, category,
   and stock filters; REST `GET /products` accepts `brand` query param. Select is
   hidden when the taxonomy is not registered.
 * **Report PDF:** visible preparation animation on export; optional async generation
   path (filter `sales_crm_pdf_export_async_enabled`, default **off** — sync download
   unchanged).
 * **Performance:** activity log cache invalidation debounced via Action Scheduler(
   T-11.4) — faster order/log writes on busy stores; new log rows appear within 
   ~20 s.
 * **Verification:** staging smoke **2026-07-02** (phase-g `wave682_*`, `wave683_*`,`
   wave684_*`).

#### 3.2.2

 * **Report cache (performance):** after order status changes and new orders, CRM
   report transients clear via WooCommerce Action Scheduler (debounced, typically
   within 30–60 seconds) instead of heavy synchronous SQL on every mutation — faster
   order card REST responses. Report numbers stay the same; brief delay before refreshed
   totals is expected. Filters: `sales_crm_deferred_report_cache_invalidation_enabled`,`
   sales_crm_report_cache_invalidate_delay`.
 * **Fixes:** WooCommerce refunded-order email shim (theme template recursion); 
   admin settings tab labels on WP 6.7+; CRM frontend asset dequeue when `wp_enqueue_scripts`
   already ran.
 * **Verification:** staging smoke **2026-07-01** (phase-g `wave682_*`, report invalidation
   after debounce). No CRM UI changes.

#### 3.2.1

 * **Transactional emails from CRM:** WooCommerce customer and admin notifications
   on create order, customer notes, status changes, and AST tracking — reliable 
   delivery via synchronous sending by default (no theme `functions.php` defer filters
   required).
 * **Create order:** status remains `pending` in the database; client receives the
   standard WooCommerce notification (`customer_on_hold_order`); managers receive
   New order; `billing_email` required with user-email fallback.
 * **Optional defer:** filters `sales_crm_enable_wc_deferred_transactional_emails`
   and `sales_crm_defer_transactional_emails_on_order_mutation` default to **false**;
   set to `true` for faster REST TTFB with queue flush on REST/shutdown.
 * **Compatibility:** verified with Advanced Shipment Tracking and WooCommerce PDF
   Invoices & Packing Slips (staging orders #2155, #2159, 2026-07-01). No CRM UI
   changes.

#### 3.2.0

 * **Background jobs (T-11.0):** WooCommerce Action Scheduler integration via `Sales_CRM_Background_Jobs`(
   group `sales-crm`); runtime runner `wave68_*` checks.
 * **Login/logout log cleanup (T-11.1):** daily housekeeping moved from WP-Cron 
   to Action Scheduler (`sales_crm_delete_old_login_logout_logs`); legacy WP-Cron
   removed on migrate; filter `sales_crm_login_logout_log_retention_days` (default
   62 days). No UX change.
 * **WP 6.7+ i18n:** translations load on `init`; lazy admin settings tabs; capability
   slugs without early `__()` on `plugins_loaded`; early custom order status registration
   without textdomain before `init`.
 * **WooCommerce email compat:** plugin shim when the active theme overrides `customer-
   refunded-order.php` without `$user_login`.
 * **Verification:** staging smoke runner **2026-06-30** (`all_checks_passed: true`,`
   wave68_login_logout_cleanup_*`).

#### 3.1.9

 * **Templates (T-03):** orders list table (`orders-table.php`) — all display logic
   moved to `Sales_CRM_Order_Service::build_orders_table_rows()`; customer card 
   sidebar totals use pre-formatted HTML from `get_customer_profile_for_view()`.
   No UX changes; staging smoke passed.
 * **Ops (T-14):** production HTTPS/TLS and cookie-auth verification documented (`
   PRODUCTION_HTTPS_CHECKLIST.md`); runtime runner checks `wave67_*` (cookie pattern,
   login nocache, URL scheme on HTTPS).
 * **Diagnostics:** phase-g runner prefers sample order ID from REST orders list(`
   shop_order`) for reliable wave4/wave64 checks.

#### 3.1.8

 * **Hotfix — CRM logout:** sidebar “Logout” uses REST `POST /auth/logout` (class`
   sales-crm-logout`) instead of `wp_logout_url()` — no WordPress “confirm logout”
   page; redirect straight to `/crm-login/`.

#### 3.1.7

 * **Hotfix — CRM login (critical):** removed post-login `has_crm_access()` check
   that logged out valid users with false `no_access` (regression from 3.1.5–3.1.6).
   Access is enforced on CRM pages after redirect — same as before 3.1.5.
 * **wp_signon():** restored `wp_signon( $creds, false )` as in 3.1.4 for production
   HTTPS cookie compatibility.
 * **Login page:** `data-sales-crm-version` on `<body>` for deploy verification 
   when HTML comments are stripped.

#### 3.1.6

 * **Hotfix — CRM login (root cause):** stop reading WordPress core `error` query
   var on `/crm-login/` (collision caused false “An error occurred during login”
   banner on HTTPS production). CRM errors now use `crm_login_error` only.
 * **Login:** fallback route detection by URI when rewrite query var is missing;
   fix theme stylesheet MIME error on login page.

#### 3.1.5

 * **Hotfix — CRM login:** fixed false error banner “An error occurred during login”
   on `/crm-login/` when the form was not submitted (stale nonce redirect, unknown`
   error` query codes, or cached login HTML).
 * **Login:** explicit message for expired form session (`invalid_nonce`); show 
   errors only for known codes; `wp_signon()` uses secure cookies on HTTPS; check
   CRM access after sign-in; `nocache_headers()` on the login page.

#### 3.1.4

 * **Reports cache (wave 6.3, T-09):** transient caching for heavy CRM reports (
   sales stats, TOP-5 line items, year list); faster `/crm-reports/` and PDF export
   on repeat views; cache invalidates on order status change and new orders. No 
   UX changes.
 * **Deferred transactional emails (T-10):** WooCommerce emails deferred on all 
   CRM order mutations (status, line items, discount, invoice, AST tracking); faster
   order card REST responses. Enable **Deferred transactional emails** in WooCommerce
   Settings  Advanced  Features for best results.
 * **Verification:** staging smoke + runtime runners `wave64_*` and `wave65_*`.

#### 3.1.3

 * **List performance (wave 6.2, T-08):** batch prefetch for customers, orders, 
   and products lists; reduced N+1 without UX changes to tables or REST contracts.
 * **Activity logs (T-12 / phase F):** bounded merge total in `get_logs()` — removes
   unbounded PHP merge for pagination count; faster logs screen on large datasets.
 * **Verification:** staging smoke + runtime runners `wave62_*` and `wave63_*`; 
   phase-f scenarios S1–S6 passed.

#### 3.1.2

 * **RBAC (wave 6.1, T-07):** centralized CRM capability checks via `sales_crm_user_can()`
   and `Sales_CRM_Capabilities`; aligned UI menus, REST permission callbacks, and
   CRM role settings sync.
 * **Order notes:** permission uses `add_order_notes` (with legacy `edit_sales_crm`
   fallback) consistently in templates and REST.
 * **Reports PDF:** export allowed for CRM admin UI or users with `view_reports`
   capability.
 * **Verification:** staging role smoke and runtime runner `wave61_rbac_*` passed.

#### 3.1.1

 * **Architecture (wave 5):** domain classes moved under `includes/modules/` — `
   orders/`, `customers/`, `logs/`, `products/` with module loaders.
 * **Products catalog (T-01):** list/read logic in `Sales_CRM_Products_List_Service`;
   CRM products page uses a prepared view-model (no SQL in template).
 * **REST:** `GET /sales-crm/v1/products` — paginated catalog list with filters (`
   search`, `category`, `stock`, `page`); stock filter accepts all WooCommerce stock
   statuses (including custom statuses such as out of production).
 * **Products UI:** stock status filter and edit modal both use `wc_get_product_stock_status_options()`;
   fixes for status-only updates from the dashboard modal.
 * **CRM UI  REST (wave 4):** CRM frontend migrated from legacy AJAX to `sales-crm/
   v1` (orders, customers, products search, order card, catalog edit, logout, invoices,
   report PDF); see `CHANGELOG.md` for full notes.
 * **Fixed:** block adding `outofstock` / `out_of_production` items to orders; faster
   order status change (deferred transactional emails).

#### 3.1.0

 * **Architecture (wave 3 complete):** `Sales_CRM_Customer_Repository` and `Sales_CRM_Activity_Log_Repository`;
   DTO read-models for customer list/profile and activity logs; templates `customer.
   php`, `customers.php`, and `logs.php` use service layer instead of direct DB/
   user API calls.
 * **Activity log:** clearer event sources (manager notes, tracking number, line-
   item changes); filter “Order note” maps to manual manager notes only.
 * **Create order:** reliable intl-tel-input phone mask (country flag, placeholder,
   BY/UA/RU validation); scripts enqueued via `sales_crm_enqueue_phone_input_assets()`.
 * **Fixed:** variation line price 0 when WooCommerce `_price` meta is empty; CRM
   discount VAT display; customer password reset white screen.
 * **Docs:** `docs/reports/WAVE_3_ACCEPTANCE_REPORT.md`; see `CHANGELOG.md` for 
   full developer notes.

#### 3.0.3

 * **Architecture (wave 2 complete):** order logic split into sub-services — `Sales_CRM_Order_Discount_Service`,`
   Sales_CRM_Order_Line_Item_Service`, `Sales_CRM_Order_Crm_Actions_Service`, shared`
   Sales_CRM_Order_Mutation_Support`; `Sales_CRM_Order_Service` is a thin facade
   delegating to them.
 * **Create order:** legacy `wc_create_order()` path removed from `add-order.php`;
   creation always uses `Sales_CRM_Order_Service::create_order_from_crm_session()`(
   no `WOO_SALES_CRM_V3_ENABLED` branch).
 * **Order list:** `Sales_CRM_Order_Repository::query_for_crm_list()` — single entry
   for CRM status-group filters before `wc_get_orders`.
 * **Order card (POST):** all mutations via order service (status, notes, qty, SKU,
   discount, address, AST); CRM discount meta recalculated after SKU add / line 
   remove when a percent discount is active.
 * **VAT label:** `get_vat_rate_label_for_order()` and **VAT (XX%)** in order totals;
   historical rate from order tax snapshot.
 * **Docs:** wave 2 marked closed in `ARCHITECTURE_IDEALSTATE_PLAN.md`; updated `
   SERVICES_FACADE.md`.
 * **VAT with CRM discount:** VAT and subtotal rows in the order totals table are
   scaled proportionally when a CRM discount is applied (taxable base after discount);
   without discount, values match WooCommerce `get_total_tax()` / `get_subtotal()`.
 * **Order totals row order:** gross total and discount first, then subtotal without
   VAT and VAT breakdown, then final total with discount (`order-items-table.php`).
 * **Docs:** `docs/guides/WOOCOMMERCE_TAX_PRICING_CRM.md` — CRM discount and VAT
   calculation (with/without discount).
 * **Architecture:** `Sales_CRM_Order_Repository` and `Sales_CRM_Service_Factory::
   order_repository()`; optional **Strangler** path for **Create order** in CRM 
   when `WOO_SALES_CRM_V3_ENABLED` is set in wp-config (`Sales_CRM_Order_Service::
   create_order_from_crm_session`). Template views use order service helpers (`get_wc_order`,`
   get_order_statuses_for_ui`, `get_status_display_name`, `get_order_notes_for_display`)
   instead of scattered WooCommerce calls.
 * **Security / refactor (internal):** Phase **B** order notes via WC API; phases**
   C** (SQL hardening) and **D** (XSS escapes) per project docs; full-tree **WPCS**
   pass remains the project baseline.
 * **Pricing & tax:** CRM order line totals and product/dashboard pricing aligned
   with WooCommerce tax settings (`wc_prices_include_tax`, WC totals); preview totals
   for the temporary cart use a short-lived `WC_Order` + `calculate_totals()`.
 * **VAT rate label:** order totals show **VAT (XX%)** / **НДС (XX%)** next to the
   tax amount; rate from the order tax snapshot (historical) with fallback to current
   WC standard rates; see `docs/guides/WOOCOMMERCE_TAX_PRICING_CRM.md`.
 * **Docs:** `ARCHITECTURE_IDEALSTATE_PLAN.md`, template order-logic inventory, 
   Strangler create-order acceptance on staging (see `CHANGELOG.md`).
 * **i18n:** new/updated Russian strings for order-service errors and `VAT (%s):`—
   recompile `languages/sales-crm-ru_RU.mo` if you ship custom PO files.

#### 3.0.1

 * **Architecture:** centralized **facade services** — `Sales_CRM_Customer_Service`,`
   Sales_CRM_Log_Service` (with `log()` for WC logger and CRM login/logout events),
   continued use of `Sales_CRM_Order_Service`; `Sales_CRM_Orders` loads customer
   display data via Customer Service; plugin boot order updated (`customers`  `customer-
   service`  `orders`).
 * **Logging:** CRM activity and admin flows use `Sales_CRM_Log_Service` instead
   of direct `Sales_CRM_Logger` in touched code; `Sales_CRM_Admin_Settings::get_logs()`
   uses the same log pipeline as the CRM logs UI.
 * **Reports PDF:** more reliable download (output buffer flush before binary, relaxed
   chart PNG validation with graceful skip, client detects `%PDF` even if `Content-
   Type` is wrong); AJAX URL uses **relative** `admin-ajax.php`; header band uses**
   primary color** from settings.
 * **Testing:** optional `define( 'SALES_CRM_DISABLE_PDF_RATE_LIMIT', true );` in
   wp-config disables PDF rate limiting (remove after tests).
 * **Mobile block page:** `<body class="mobile-blocked-page">` so **primary color**
   background from settings applies.
 * **i18n:** fixed Russian catalog entry for discount log line (`msgid` must match`
   __()` placeholders `%1$s` / `%2$d`); recompile `.mo` after `.po` updates.
 * Developer changelog: `CHANGELOG.md` (Keep a Changelog); internal docs: `docs/
   features/SERVICES_FACADE.md`, updated `REPORTS_PDF_EXPORT.md` and `REFACTORING_3_0_STRATEGY.
   md`.
 * **Refactoring phase A (docs):** updated `docs/reports/HPOS_CODE_INVENTORY.md`;
   added `REFACTORING_SECURITY_AUDIT_MATRIX.md` and `REFACTORING_ACCEPTANCE_CRITERIA.
   md` (audit matrix + formal acceptance criteria for next phases).

#### 3.0.0

 * **Breaking:** minimum **PHP 8.0** required (PHP 7.x no longer supported). Upgrade
   PHP before updating; use 2.1.x on older PHP if needed.
 * **Baseline for large refactor:** internal strategy uses **Strangler pattern**—
   new code paths can be gated with `WOO_SALES_CRM_V3_ENABLED` (aligned with CRM
   3.0 naming; see `developer/docs/reports/REFACTORING_3_0_STRATEGY.md`).
 * Optional: set `define('WOO_SALES_CRM_V3_ENABLED', true);` or `CRM_V3_ENABLED`
   in **wp-config.php** when you are ready to test the refactored branch (default
   remains legacy). Old names `WOO_SALES_CRM_V2_ENABLED` / `CRM_V2_ENABLED` are 
   still read for backward compatibility.
 * Version alignment: `version.php`, plugin header, and Stable tag set to **3.0.0**;
   Composer `require` PHP **^8.0**.
 * HPOS-related order migrations already use WooCommerce APIs where previously adjusted(
   see project docs).

#### 2.1.2

 * Reports: **Download PDF** — export the selected period to PDF (mPDF); chart embedded
   as PNG from the on-screen canvas
 * Reports PDF: full list of non-completed orders for the period; product table 
   includes all aggregated rows with total quantity greater than one (screen still
   shows TOP-5)
 * Reports PDF: header logo from CRM settings; page numbers; currency uses the `
   rub.` string in PDF output where the ruble glyph is unreliable in PDF fonts
 * Security: PDF output is not cached under `uploads`; delivery only through authenticated
   AJAX (`view_reports` / administrator)
 * Anti-abuse: rate limiting for PDF generation (default: about once per hour per
   user, optional IP-based limit; filterable)
 * Activation: require PHP extensions **GD** and **mbstring** (aligned with mPDF)
 * Bundled `composer.json`, `composer.lock`, and `vendor/` (mPDF) for “upload and
   run” installs; developer docs: `docs/features/REPORTS_PDF_EXPORT.md`
 * Russian translations updated for PDF and activation messages

#### 2.1.1

 * Reports: choose month, quarter, or year; Apply filter; year dropdown lists only
   years that have orders (classic posts + HPOS)
 * Reports: Chart.js graphs adapted to period (daily / quarterly multi-series / 
   yearly by month)
 * Reports: “Products for period (TOP-5)” — aggregate quantities by SKU from Completed
   + In Progress status groups (per CRM settings)
 * Reports: “Orders for period” lists non-completed orders only; pagination uses
   CRM “items per page” setting
 * Reports: amounts shown with store currency via wc_price(); chart bootstrapped
   from reports-chart.js (no inline scripts in template)
 * Updated Russian translations for new strings

#### 1.2.9.3

 * Added CRM order identification icon (dashicons-desktop) in order lists
 * CRM-created orders now display a blue desktop icon next to order numbers
 * Icon appears in dashboard, orders, and customer sections
 * Added tooltip showing which manager created the order via CRM
 * Enhanced order tracking for CRM vs. regular website orders
 * Improved visual distinction between order creation methods

#### 1.2.8.7

 * Customer search fix: Completely redesigned customer search algorithm
 * Fixed incomplete customer search results – now finds all customers with matching
   names
 * Enhanced search functionality across all CRM sections (customers list, order 
   creation)
 * Improved search by first name, last name, full name, and phone numbers
 * Added comprehensive search across WordPress user fields and meta fields
 * Eliminated duplicate results in customer search
 * Performance optimization: Enhanced logging system with intelligent caching
 * Optimized log retrieval with 5-minute caching for improved performance
 * Improved SQL queries for system logs and order notes processing
 * Enhanced pagination and filtering for better user experience
 * Reduced database load through efficient log processing
 * Added automatic cache clearing when new logs are created
 * Optimized memory usage for large log datasets
 * Improved overall CRM dashboard responsiveness
 * Performance optimization: Enhanced logging system with intelligent caching
 * Optimized log retrieval with 5-minute caching for improved performance
 * Improved SQL queries for system logs and order notes processing
 * Enhanced pagination and filtering for better user experience
 * Reduced database load through efficient log processing
 * Added automatic cache clearing when new logs are created
 * Optimized memory usage for large log datasets
 * Improved overall CRM dashboard responsiveness

#### 1.2.8.6

 * Critical bug fix: Resolved empty products display issue in CRM dashboard
 * Performance optimization with improved SQL queries and caching system
 * Replaced inefficient nested SQL subqueries with optimized JOIN operations
 * Implemented comprehensive caching for product search, categories, and filters
 * Fixed critical memory usage issue with unlimited product loading (limit -1)
 * Added new Sales_CRM_Cache_Manager class for intelligent caching
 * Optimized database queries for 3-5x faster performance
 * Implemented automatic cache clearing on product and category changes
 * Reduced memory usage by 70-90% through result limiting
 * Added 90%+ cache hit rate for frequently accessed data
 * Enhanced overall system responsiveness and scalability

#### 1.2.8.4

 * Complete Russian localization with 376+ translated strings
 * Full interface translation for all frontend and backend elements
 * Improved localization system with automatic language detection
 * Fixed product search functionality by SKU and category filtering
 * Resolved display issues with added items in order creation
 * Enhanced JavaScript localization replacing hardcoded English strings
 * Optimized translation file compilation and loading system
 * Added debugging support for translation loading
 * Comprehensive localization coverage: menus, forms, notifications, modals
 * Improved user experience for Russian-speaking users

#### 1.2.8.0

 * Added default plugin logo implementation across all CRM pages
 * Implemented automatic fallback to default logo when no custom logo is uploaded
 * Enhanced logo display on login, mobile-blocked, no-access pages and main CRM 
   layout
 * Added new methods in admin settings class for logo management with default fallback
 * Improved user experience with consistent branding across all CRM interfaces
 * Maintained backward compatibility with existing custom logo functionality

#### 1.2.7.8

 * Implemented PHPCS (PHP CodeSniffer) for automatic code formatting
 * Added WordPress coding standards compliance with adapted rules for plugins
 * Created comprehensive development tools and automation scripts
 * Organized project structure according to WordPress/WooCommerce standards
 * Added detailed documentation for code formatting and development workflow
 * Prepared plugin for production deployment with clean file structure
 * Enhanced code quality and maintainability standards

#### 1.2.7.7

 * Added HPOS (High-Performance Order Storage) compatibility testing
 * Implemented new “HPOS Test” tab in admin settings with two-column layout
 * Enhanced HPOS status detection with multiple fallback methods
 * Improved error handling for HPOS compatibility checks
 * Added comprehensive HPOS compatibility information and testing instructions
 * Removed debug logging for production use
 * Cleaned up test files and prepared for release

#### 1.2.7.6

 * Migrated from PHP sessions to WC()->session for better compatibility
 * Fixed customer data persistence issues in order creation
 * Improved menu order: moved “Products” above “Reports”
 * Enhanced AJAX customer selection functionality
 * Optimized temporary data storage using WooCommerce session system
 * Added fallback to user meta for authenticated users

#### 1.2.7.4

 * Added automatic update system for order statuses
 * Implemented flexible status group management
 * Fixed compatibility issues with Advanced Shipment Tracking
 * Improved order display logic in dashboard
 * Added comprehensive error handling
 * Removed debug logging for production use

#### 1.2.7.2

 * Enhanced customer search functionality
 * Improved order tracking system
 * Bug fixes and performance improvements

#### 1.2.7.1

 * Initial release with core CRM functionality
 * Basic order and customer management
 * Activity logging system

## Meta

 *  Version **3.3.4**
 *  Last updated **9 minutes ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.0.1**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [customer management](https://wordpress.org/plugins/tags/customer-management/)
   [order management](https://wordpress.org/plugins/tags/order-management/)[sales dashboard](https://wordpress.org/plugins/tags/sales-dashboard/)
   [sales reports](https://wordpress.org/plugins/tags/sales-reports/)[woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/ordercrm-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/ordercrm-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/ordercrm-for-woocommerce/reviews/)

## Contributors

 *   [ Dmitriy ](https://profiles.wordpress.org/timon-dimon/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/ordercrm-for-woocommerce/)