=== BrikPanel — WooCommerce Dashboard, Sales Report, Google Sheets Sync, Inventory Management & Bulk Editor ===
Contributors: brksoft
Tags: woocommerce dashboard, woocommerce inventory management, google sheets, woocommerce bulk editor, roas
Requires at least: 6.0
Tested up to: 6.9
Stable tag: 3.0.5
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Free WooCommerce dashboard & sales report: Google Sheets sync, ROAS, bulk editor, inventory management & live visitors

== Description ==

https://www.youtube.com/watch?v=cBJYPE1akJk

**BrikPanel turns the default WooCommerce admin panel into a clean, fast, all-in-one cockpit** — a modern WooCommerce dashboard, a powerful WooCommerce bulk editor, an inventory management workspace, an order management center, a coupon manager, a custom WP login page, and a real-time conversion tracking suite. Everything is free. Forever. No premium tier, no feature locks, no monthly subscriptions. A self-hosted **Shopify alternative for WooCommerce** — own your data, your products, and your customer list, with no monthly platform fee and no transaction fee.

Built by a developer who shipped 1000+ WooCommerce stores and got tired of every workflow taking five extra clicks.

= Who is BrikPanel for? =

* Store owners who want a **modern WooCommerce dashboard** with real numbers, not the slow built-in reports — and a **self-hosted WooCommerce analytics** solution instead of paying monthly fees to external SaaS tools
* Stores that want a lighter **woocommerce inventory management** workspace built into a complete admin redesign
* Anyone who needs to **bulk edit WooCommerce products** — including variations — without a premium plugin
* Agencies handing off stores to non-technical clients who need a **simplified WooCommerce admin**
* Shop owners migrating from Shopify who want a familiar, modern admin for their WooCommerce store — a free, self-hosted **Shopify alternative**

== What you get (all free) ==

= Modern WooCommerce Dashboard with Real-Time Sales Analytics =

The heart of BrikPanel is a **modern WooCommerce dashboard** — a true **woocommerce admin panel plugin**, not a styling layer.

* **Total Sales, Total Orders, Average Order Value (AOV)** — today, yesterday, last 7/30 days, or any custom range, with **±% period-over-period delta** on every metric
* **Visitors** counted from your own database (admins excluded), and **Conversion Rate** computed live from real visitors and real orders
* **Beautiful sales chart** powered by Chart.js, plus an **order status donut** (Completed, Processing, Cancelled, Refunded, Failed)
* **WooCommerce conversion funnel** — Visitors → Add to Cart → Checkout → Orders, with the conversion percentage at every step

This is the **best WooCommerce dashboard** and a complete **WooCommerce sales report** for stores that need a **modern WooCommerce admin** and a **woocommerce custom dashboard** without paying for a SaaS.

= Customer Analytics — LTV, RFM Segmentation & Cohort Retention =

BrikPanel ships a complete **WooCommerce customer analytics** suite, calculated from your store data and visualized in the dashboard — no external service.

* **Customer Lifetime Value (LTV)** — total customers, average and top LTV, full LTV distribution histogram, and a sortable top-customers table
* **RFM segmentation** — every customer scored on Recency, Frequency, and Monetary, then bucketed into Champions, Loyal, At Risk, About to Sleep, Hibernating, and Lost, with revenue per segment
* **Cohort retention** — month-by-month cohort retention grid plus an average retention by month-offset trend line
* **Advanced filtering and segmentation** — combine spend range, product, location, date and more to build saved segments for both customers and orders

A free **woocommerce LTV plugin**, **woocommerce RFM** tool, and **woocommerce cohort retention** report rolled into the same dashboard you already use for sales.

= Live Visitors & Real-Time Conversion Tracking =

BrikPanel ships a built-in **WooCommerce live visitors** widget — see who is on your store right now, what page they are on, and whether they have items in the cart. Refreshes every 30 seconds. No external service, no Hotjar, no monthly fee.

* **WooCommerce real time visitors** widget with cart status (*Browsing / Has items in cart / On thank-you page*), current page, and customer info
* **WooCommerce conversion tracking** in the same database that powers the dashboard
* IP addresses SHA-256 hashed for privacy
* Most-viewed pages and most added-to-cart products reports

A free **woocommerce statistics plugin** and **woocommerce sales tracker** without any external SaaS.

= Geographic Analytics — WooCommerce Sales by Country =

A 3D rotating globe (Cobe.js) plots every order on its real location — see **WooCommerce sales by country** and city without exporting a CSV, with **Top 10 Countries** and **Top 10 Cities** tables. Works with both HPOS and legacy order storage.

= Lightning-Fast Order Search — Cmd/Ctrl + K from Anywhere =

Hit `Ctrl + K` (or `Cmd + K` on Mac) anywhere in wp-admin and a beautiful order search overlay opens — the free **woocommerce order search plugin** every store owner has been asking for. Searches across order ID, customer first/last name, email, phone, and product SKU inside order line items at once. True **woocommerce quick search** with results as you type, color-coded status badges, totals, and dates.

= Modern WooCommerce Order Management =

BrikPanel replaces the cluttered default orders page with a clean **woocommerce order list plugin** screen.

* **30-day overview bar**: total orders, completed, refunded, cancelled, revenue
* **Inline status change** without opening the edit page
* HPOS (`wc_get_orders`) and legacy storage (`WP_Query`) both supported
* Two new statuses: **Return Draft** and **Change**
* Reskinned order edit page with copy-to-clipboard for billing/shipping
* **Sold downloadable products column** on the order edit page
* Optional BrikMarket marketplace stats integration

A real **woocommerce order management plugin**, not a reskin. Disable from settings anytime.

= WooCommerce Product List Plugin — Built for People Who Actually Edit Products =

The default **WooCommerce product list** is fine for browsing, painful for editing. BrikPanel ships a complete **woocommerce product list plugin** that fixes it.

* Thumbnail, name, SKU, regular/sale price, stock badge, category
* **Publish status toggle** — flip draft ↔ published with one click, no reload
* Edit, Duplicate, Delete actions; bulk publish, draft, delete
* Status tabs (All / Published / Draft / Trash), live search by name or SKU
* Configurable per-page (5–100, default 20), AJAX pagination
* **Per-user toggles for any third-party / SEO column** added by Yoast, Rank Math, ASE and other plugins
* **Admin and Site Enhancements (ASE) custom columns** are respected in the BrikPanel product, order and customer lists

= Quick Edit Sidebar — Edit Without Leaving the List =

A slide-in panel from any product row to edit name, SKU, regular/sale price, stock, and category — save without leaving the list. The **woocommerce quick edit** experience WooCommerce should have shipped years ago. Update **woocommerce quick edit price**, stock, or category in two clicks.

= Bulk Edit WooCommerce Products with the Variation Editor — Full Variation Support =

This is where BrikPanel pulls ahead of every other free **woocommerce bulk editor**. Most free plugins only handle simple products and only let you "increase price by X%". BrikPanel does much more — and does it for variable products too.

* **WooCommerce bulk price update** (regular and sale) — percentage, fixed amount, or absolute value, across the whole catalog or filtered by category
* **Bulk update WooCommerce products** stock quantities (in/out of stock, set quantity, add/subtract)
* **WooCommerce bulk price by category** — pick a category, set a rule, every product updates
* **WooCommerce bulk sale price** updates with a date range
* Confirmation dialog on every bulk action

Now the part nobody else does for free: **variation support**.

* **WooCommerce variation editor** — open any variable product and edit every variation in one modal (regular price, sale price, stock, SKU)
* **Bulk edit variation prices WooCommerce** — set the same price for all variations of an attribute (every "Red" variation, every "L" size), or apply a percentage rule
* **Bulk update variation stock** — set or adjust the stock of every variation in one click
* Attribute filter to narrow visible variations when a product has 50+ combinations

**How to bulk edit WooCommerce products** including variations without buying a $79/year plugin? BrikPanel handles both simple and variable products for free.

= Simplified WooCommerce Product Editor =

The default WooCommerce add-product screen has 11 metaboxes, 3 tabs, and 40+ fields. New owners give up before finishing their first product. BrikPanel ships a complete **woocommerce product editor plugin** with the noise removed.

* **Featured image + product gallery** with drag-and-drop upload, unlimited images, drag-to-reorder
* Regular price, sale price with decimal validation
* **Searchable category picker** with multi-select + **quick create category** without leaving the page
* **Brand field** — the WooCommerce `product_brand` taxonomy is now first-class alongside categories and tags
* Short description + full rich-text description (wp_editor)
* **SEO fields** — custom slug, meta title, meta description, live Google SERP preview
* **Full SEO plugin compatibility** — Yoast SEO, Rank Math, All in One SEO and SEOPress metaboxes (including the SEO score panel) render and save inside the BrikPanel product editor
* Product type (Simple, Variable), **attribute management** with inline create
* **Auto-generate variations** from attribute combinations, per-variation price/sale/SKU/stock
* Duplicate any product in one click

Opt-in. Keep the default WooCommerce product page if you prefer.

= WooCommerce Variation Gallery =

Attach a separate image gallery to each product variation — the frontend swaps gallery automatically when a customer picks a variation. Image metadata (srcset, sizes, alt text) is fully preserved.

= WooCommerce Categories Page — Drag-and-Drop Parent/Child Management =

The default WooCommerce category screen has not been redesigned in a decade. BrikPanel rebuilds it with per-page settings (5–200), **drag-and-drop parent/child nesting** with circular reference prevention, for both `product_cat` and `product_tag`.

= Best WooCommerce Coupon Plugin — Free Coupon Manager =

A complete **WooCommerce coupon manager** that makes coupons a first-class part of the admin — we honestly think this is the **best WooCommerce coupon plugin** in the free repository.

* Coupon table with code copy-to-clipboard, discount type icon, amount, usage count, expiry highlighting, and status
* Status tabs, AJAX pagination, **slide-over coupon panel** — create/edit without a reload
* Auto-generate random coupon codes; one-click duplicate
* Discount types: percentage, fixed cart, fixed product + free shipping toggle
* Expiry date picker, total + per-customer usage limits, min/max spend, individual use toggle, product/category include/exclude rules

= Custom WordPress Login Page — Custom WP Login Page for WooCommerce =

BrikPanel ships a **custom WP login page** that fully replaces the default `wp-login.php` look — a real **WordPress login customizer** built for WooCommerce stores.

* Centered card layout with your site name as logo
* Minimal, distraction-free fields, AJAX submission (no reload)
* Toast notification on errors, footer site branding
* Default WordPress login styles fully hidden

= WooCommerce Inventory Management =

BrikPanel includes a complete **woocommerce inventory management** workspace. The product list, bulk editor, variation editor, and quick edit sidebar work together as one inventory workflow.

* Current stock for every product and variation in one place, with stock badges in the product list (in stock / low stock / out of stock)
* Update stock inline from the quick edit sidebar, or bulk update across categories and variations
* HPOS-enabled stores supported

A free **woocommerce inventory management plugin** that covers the daily workflow without installing another heavy stock control plugin.

= Custom Top Admin Bar & Notifications =

A **Custom BrikPanel-styled top admin bar** replaces the default WordPress toolbar across the entire admin with a larger, e-commerce-focused notification bell and quick links — toggleable from settings. Notification sound, confetti animation and a top-right popup the moment a new completed order arrives, with no external services.

= Google Sheets Sync — Real-Time WooCommerce Google Sheets Integration =

BrikPanel ships a free **WooCommerce Google Sheets sync** — a fully native **WooCommerce to Google Sheets** integration that streams orders, customers and analytics into a Google Sheet you control. The free **GSheetConnector alternative** with no Zapier, no Make, no monthly fee.

* **Real-time order sync** — every new WooCommerce order is appended within seconds, one row per line item so variations get their own columns. Free **woocommerce order sync to google sheets** with no external automation tool
* **Scheduled WooCommerce Google Sheets export** — hourly, every 4h or daily catch-up; idempotent so re-runs never duplicate rows
* **Analytics report snapshots** — Sales Summary, Daily KPIs, Top Products and Funnel tabs refreshed on an interval for pivots and dashboards in Sheets
* **Customer + RFM snapshot** — chained to the nightly RFM recompute

HPOS-compatible. A real **google sheets woocommerce sync** for stores that want orders, customers and analytics in Sheets without paying a monthly fee.

= WooCommerce ROAS, Net Profit & Ad Spend — Google Ads + Meta Ads =

BrikPanel pulls daily spend from **Google Ads** and **Meta Ads** (Facebook / Instagram) so you see real **WooCommerce ROAS**, **Net Profit** and **ad spend** next to revenue. Multi-currency aware. A free **Triple Whale alternative** and **woocommerce profit tracking** dashboard with no monthly fee.

= BrikMarket Marketplace Analytics =

When BrikMarket is active, marketplace orders are excluded from the storefront conversion rate and a dedicated dashboard block breaks down orders, share and top categories per marketplace.

= Subscription & Membership Plugin Compatibility =

Compatible with major subscription and membership plugins (WooCommerce Subscriptions, MemberPress, Paid Memberships Pro and more) — subscription products and member orders show up in the same product list, order screens and customer analytics.

= Developer Hooks & Filters =

A **developer hooks and filters system** for agencies — actions and filters like `brikpanel_after_product_save`, plus a built-in docs popup in settings with one-click copy buttons.

= Navigation & Admin UI Cleanup =

* BrikPanel dashboard becomes the first WordPress admin menu item; admin bar gains quick links, footer rebranded
* Optional **simplified mode** hides the full WordPress menu, showing only BrikPanel + WooCommerce for non-technical clients

== A Free, Self-Hosted WooCommerce Analytics & Inventory Suite ==

Store owners pay monthly SaaS fees for parts of what BrikPanel does free:

* **Self-hosted WooCommerce analytics** — sales, AOV, conversion, funnels, geo data, customer LTV, RFM, cohort retention, no third-party
* A simpler inventory workspace for stores that only need stock-level visibility and bulk updates
* A free Metorik and Triple Whale alternative — analytics, ROAS and profit on your own server
* **Shopify alternative for WooCommerce** — the clean admin experience of Shopify with your storefront, customer data and orders on your own server

Your data stays on your server — no external account, no monthly fee.

== Why BrikPanel and not the default WooCommerce admin? ==

WooCommerce's built-in analytics are slow, refresh hourly, and have no live visitor tracking, conversion funnel, geographic data, customer LTV / RFM / cohort reports, Cmd+K order search, quick edit sidebar, variation bulk editor, custom login or coupon manager. BrikPanel fixes every one of those gaps inside a single **free WooCommerce admin plugin** — built across 1000+ WooCommerce stores.

== WooCommerce HPOS Compatibility & Performance ==

* **Zero impact on storefront speed** — only loads inside wp-admin
* **Hardened performance for low-resource hosting** — heavy queries are batched, cached and run through Action Scheduler so the dashboard, customer analytics and bulk editor stay responsive on shared hosting
* **HPOS (High-Performance Order Storage)** fully supported with dual code paths
* WooCommerce 7.x, 8.x, and newer; works alongside Admin Menu Editor, Slider Revolution, Yoast SEO, RankMath, WPML, Polylang
* Translation-ready (`.pot` file included), with all JavaScript / jQuery strings routed through `wp_localize_script`
* All AJAX actions verify nonces and `manage_woocommerce` capability; DB writes use prepared statements; IPs SHA-256 hashed; admin activity excluded from analytics

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/brikpanel`, or install via **Plugins → Add New → Upload Plugin**.
2. Activate through the **Plugins** menu.
3. Open **BrikPanel** in the admin sidebar — the dashboard loads immediately.
4. (Optional) Visit **WooCommerce → Settings → BrikPanel** to enable or disable specific modules.

That is it. No license key, no email signup, no external account.

== Frequently Asked Questions ==

= Is BrikPanel really 100% free? =

Yes. Every feature on this page is in the free version. There is no premium tier, no feature lock, no trial period, no upsell. We built this because we needed it for our own 1000+ WooCommerce stores and decided to release it.

= Is BrikPanel a self-hosted WooCommerce analytics solution? =

Yes. BrikPanel gives you a complete WooCommerce analytics suite that runs entirely on your own server with no external dependencies. Sales analytics, product reports, conversion tracking, customer LTV, RFM segmentation, cohort retention and customer data are all included — nothing is sent to any third-party SaaS.

= Does BrikPanel include a WooCommerce sales report? =

Yes. The BrikPanel dashboard ships a complete **WooCommerce sales report** out of the box — total sales, total orders, average order value (AOV), refunds, and net revenue, each with a ±% period-over-period delta. Filter the sales report by today, yesterday, last 7 days, last 30 days, or any custom date range. The sales chart is rendered with Chart.js and pairs with the order status donut and conversion funnel for a full sales report you can read at a glance, without ever leaving wp-admin and without paying for an external analytics service.

= Does BrikPanel show customer LTV, RFM segments and cohort retention? =

Yes. BrikPanel ships a full **WooCommerce customer analytics** suite directly in the dashboard. Customer Lifetime Value (LTV) is calculated for every customer with average, top, and full distribution histogram. RFM segmentation scores every customer on Recency, Frequency and Monetary and groups them into Champions, Loyal, At Risk, About to Sleep, Hibernating and Lost. Cohort retention shows a month-by-month grid plus an average retention trend line. All three are computed from your own store data — no external service involved.

= Is BrikPanel a free Shopify alternative for WooCommerce? =

Yes, for store owners who want to stay self-hosted. BrikPanel gives your WooCommerce store the clean, modern admin experience of Shopify — product list with inline editing, bulk price and stock updates, live visitors, conversion tracking, geographic analytics, customer LTV / RFM / cohort reports, a branded login page — but your storefront, your customer data, and your orders stay on your own server. No monthly platform fee, no transaction fee, no vendor lock-in. If you were evaluating Shopify but want to own your stack, this is the **Shopify alternative for WooCommerce** we built for that exact use case.

= Is BrikPanel an ATUM alternative for inventory management? =

For most stores, yes. BrikPanel includes complete **woocommerce inventory management** — stock levels, low stock badges, bulk stock updates, variation stock updates — all integrated into the same dashboard you use for sales and orders. If you only need daily stock work without advanced supplier or purchase order features, BrikPanel is a much lighter **ATUM alternative**.

= How do I get a faster WooCommerce product list with bulk actions and quick edit? =

The default **WooCommerce product list** is built for browsing — searching, sorting and editing it is slow. BrikPanel ships a complete **woocommerce product list plugin** with thumbnail, SKU, regular and sale price, stock badge, category, AJAX pagination, live search, status tabs, one-click publish toggle and a slide-in quick edit panel for every row. Works on both simple and variable products, and the same **woocommerce product list** screen powers the bulk price and bulk stock updates so you never leave the page to edit your catalog.

= How do I bulk edit WooCommerce products including variations? =

Open **BrikPanel → Products** and click the **Bulk Update** button in the toolbar. You can update prices, sale prices, and stock for all products, by category, or for selected products. For variable products, open any product, click **Edit Variations**, and bulk update prices and stock across every variation in one modal. This is the part most free **WooCommerce bulk editor** plugins do not handle — BrikPanel does.

= Can I bulk edit variation prices in WooCommerce with the free version? =

Yes. **Bulk edit variation prices WooCommerce** is a core BrikPanel feature, and it is free. Set a percentage rule, set a fixed price, or update by attribute (every "Red" variation, every "Large" size). The same modal handles **bulk update variation stock** for the same products.

= Does BrikPanel slow down my WooCommerce store? =

No. BrikPanel only loads inside wp-admin. It has zero impact on your storefront speed, customer experience, page weight, or Core Web Vitals. The frontend never loads any BrikPanel code.

= Is BrikPanel compatible with HPOS (High-Performance Order Storage)? =

Yes. Every order query has dual code paths — `wc_get_orders()` for HPOS, `WP_Query` for legacy. BrikPanel declares HPOS compatibility via `FeaturesUtil::declare_compatibility('custom_order_tables', ...)` and is tested on stores running both modes.

= How do I see WooCommerce sales by country? =

Open the BrikPanel dashboard. Scroll to the geographic analytics section. The 3D globe shows every order on its real geographic location, and the **Top 10 Countries** and **Top 10 Cities** tables update in real time. BrikPanel extracts country and city from the billing or shipping address of every order, so this works with no extra setup.

= How do I customize the WordPress login page for my WooCommerce store? =

BrikPanel includes a built-in **wordpress login customizer**. Enable the **custom wp login page** module from BrikPanel settings and the default `wp-login.php` is replaced with a clean, branded login form that matches the rest of the BrikPanel admin. No CSS knowledge required.

= How do I search WooCommerce orders by customer name or phone number? =

Press `Ctrl + K` (or `Cmd + K` on Mac) anywhere inside wp-admin. The BrikPanel quick search overlay opens and searches across order ID, customer name, email, phone, and product SKU at the same time. This is the **woocommerce search orders** experience the WooCommerce admin should ship with by default.

= Can I see who is on my WooCommerce store right now? =

Yes. BrikPanel includes a **woocommerce live visitors** widget on the dashboard that updates every 30 seconds. You can see what page each visitor is on, whether they have items in the cart, and whether they are an existing customer. This is real **woocommerce real time visitors** tracking, not estimates.

= Does BrikPanel track WooCommerce conversion rate and conversion funnel? =

Yes. BrikPanel includes a complete **woocommerce conversion tracking** system that records visitors, add-to-cart events, checkout starts, and completed orders. The dashboard shows your **woocommerce conversion funnel** as a four-step visual: Visitors → Add to Cart → Checkout → Orders, with the conversion percentage at every step.

= Is there a free WooCommerce conversion tracking plugin built into BrikPanel? =

Yes. BrikPanel ships a free **WooCommerce conversion tracking plugin** that records every visitor, add-to-cart, checkout start and completed order in your own database — no Google Analytics setup, no Hotjar, no monthly fee. The funnel and conversion-rate widgets on the dashboard are computed from this same dataset in real time.

= How do I sync WooCommerce orders to Google Sheets for free? =

Open **WooCommerce → BrikPanel → Google Sheets**, click "Connect Google account", pick or create a target spreadsheet, and toggle "Real-time order sync" on. Every new WooCommerce order is then appended to your Sheet within seconds, with one row per line item so variations land in their own columns. Status changes update the existing row in place. No Zapier, no Make, no monthly fee — a real **woocommerce google sheets sync** built into BrikPanel.

= Does BrikPanel work as a free GSheetConnector or WPSyncSheets alternative? =

Yes. BrikPanel includes a complete **WooCommerce to Google Sheets** integration in the free version — real-time order sync, scheduled bulk export, analytics snapshot tabs (Sales Summary, Daily KPIs, Top Products, Funnel) and a customer + RFM snapshot. All four flows ship free with no row limit, no premium tier, and OAuth-based authentication that requests minimum scopes only (`drive.file` — never full Drive access).

= How do I see real ROAS and net profit in WooCommerce? =

Connect **Google Ads** and/or **Meta Ads** from the BrikPanel Ad Platforms page. BrikPanel then pulls your daily ad spend and shows three new dashboard cards: **Ad Spend** (summed across every connected platform for the active date range), **WooCommerce ROAS** (store revenue ÷ ad spend), and **Net Profit** (revenue − COGS − ad spend − manual expenses). COGS comes from WooCommerce's native order cost meta and expenses from the BrikPanel expenses table, so the **woocommerce roas** and net profit numbers are real, not estimates. The cards are multi-currency aware — if an ad account reports in a different currency than the store, spend is shown split and ROAS / Net Profit are omitted instead of printing a misleading converted number.

= Is BrikPanel a free Triple Whale alternative for WooCommerce? =

For self-hosted stores, yes. BrikPanel gives you the **WooCommerce ROAS** and **net profit** view store owners buy Triple Whale, TrueProfit or BeProfit for — daily **Google Ads** and **Meta Ads** spend pulled in next to store revenue, COGS and expenses — but it runs entirely on your own server with no monthly fee and no data sent to a third party. If you only need true ROAS and profit (not full multi-touch ad attribution), this is the free **Triple Whale alternative** built for that exact use case.

= Does BrikPanel connect to Google Ads and Meta (Facebook / Instagram) Ads? =

Yes. BrikPanel connects to both **Google Ads** and **Meta Ads** through a secure OAuth proxy (the plugin only ever stores encrypted tokens, never your password). It pulls daily spend per platform, backfills history, and re-syncs recent days automatically so the dashboard ROAS and net profit stay accurate. The integration is spend-and-profit focused — it does not install a Facebook pixel or do multi-touch attribution; it gives you true **woocommerce roas** and net profit without a paid SaaS.

= Is there a free WooCommerce variation editor for bulk price and stock updates? =

Yes. BrikPanel includes a complete **WooCommerce variation editor** in the free version. Open any variable product, click "Edit Variations", and you can bulk update every variation's price, sale price, stock and SKU in one modal — with attribute filtering when a product has 50+ combinations. The same **woocommerce variation editor** also supports per-attribute rules ("set every Red variation to $X").

= What makes BrikPanel different from the built-in WooCommerce analytics? =

The built-in WooCommerce analytics are slow, refresh on a delay, only show historical data, and have no live visitor tracking, no conversion funnel, no geographic globe, no customer LTV / RFM / cohort reports, no Cmd+K order search, no quick edit sidebar, no variation bulk editor, no custom login page, and no coupon manager. BrikPanel adds every one of those features inside a single free plugin.

= Is BrikPanel just a CSS reskin of the WooCommerce admin? =

No. BrikPanel is a real **woocommerce admin dashboard plugin** with custom database tables for visitor tracking, custom AJAX endpoints for every interaction, real conversion analytics, a working bulk editor, a real product editor, a real coupon manager, and a real custom login system. Other plugins (Dashify, UiPress) only restyle the admin. BrikPanel rebuilds the parts of WooCommerce that needed to be rebuilt.

= Does BrikPanel work with Yoast SEO, RankMath, Elementor, WPML, and Polylang? =

Yes. BrikPanel does not interfere with frontend rendering, so it works with every page builder and SEO plugin we have tested. Yoast SEO, Rank Math, All in One SEO and SEOPress metaboxes (including their SEO score panels) render and save inside the BrikPanel product editor. It also has its own translation files and is fully compatible with WPML and Polylang for multilingual stores.

= Does BrikPanel work with WooCommerce Subscriptions and membership plugins? =

Yes. BrikPanel is compatible with WooCommerce Subscriptions, Subscriptions for WooCommerce (WP Swings), MemberPress, Paid Memberships Pro, WooCommerce Memberships, YITH WooCommerce Subscription, SUMO Subscriptions, WebToffee Subscriptions for WooCommerce and Restrict Content Pro. Subscription products and member orders show up in the same product list, order screens and customer analytics as the rest of your catalog.

= Where does BrikPanel store data? =

Everything stays in your WordPress database. BrikPanel creates three custom tables: `wp_brikpanel_visitors`, `wp_brikpanel_cart_tracking`, and `wp_brikpanel_visited_pages`. Live visitor data is stored in a transient that auto-expires every 2 minutes. No data is sent to any external server, ever.

= Will BrikPanel always be free? =

Yes. The dashboard, the bulk editor, the inventory tools, the order management, the coupon manager, the custom login, the conversion tracking, the customer analytics suite, and every other feature listed above will remain free forever. We may release a separate paid product (BrikMentor) on top of BrikPanel in the future, but it will be additive — BrikPanel itself stays 100% free.

== Screenshots ==

1. **Modern WooCommerce Dashboard** — a real-time WooCommerce sales report and admin panel: Total Sales, Orders, AOV, Visitors and Conversion Rate with period-over-period deltas, an interactive sales chart, Net Profit, ROAS and a live visitors widget
2. **Real ROAS & Net Profit with Google Ads + Meta Ads** — native Google Ads and Meta (Facebook / Instagram) Ads integration that pulls daily ad spend into the dashboard so you see true return on ad spend and net profit next to store revenue
3. **WooCommerce Google Sheets Sync** — real-time order sync to a Google Sheet, scheduled bulk export, per-status filters and reorderable columns — a free GSheetConnector alternative
4. **WooCommerce Inventory Management & Product List** — clean product table with thumbnails, SKU, regular/sale price, color-coded stock badges, category and a one-click publish toggle, for both simple and variable products
5. **Quick Edit Sidebar** — a slide-in panel to edit name, prices, SKU, stock and category without ever leaving the product list
6. **Bulk Edit WooCommerce Products** — bulk update prices, sale prices and stock for the whole catalog, by category or by selection, with full variation support (e.g. only "Size: XL")
7. **Simplified WooCommerce Product Editor** — drag-and-drop image gallery, clean pricing and an inline variation builder for simple and variable products
8. **WooCommerce Customer Analytics — Lifetime Value (LTV)** — total customers, average and top customer lifetime value, the full LTV distribution histogram, and a sortable top-customers table
9. **WooCommerce Customer Analytics — RFM Segmentation** — every customer scored on Recency, Frequency and Monetary and grouped into Champions, Loyal, At Risk, Hibernating, About to Sleep and Lost, with revenue per segment
10. **WooCommerce Customer Analytics — Cohort Retention** — a month-by-month cohort retention grid plus an average retention by month-offset trend
11. **Geographic Analytics — WooCommerce Sales by Country** — a 3D globe of order locations with Top Countries and Top Cities by orders and revenue
12. **Live Visitors & Conversion Funnel** — real-time WooCommerce live visitors with cart status, plus the Visitors → Add to Cart → Checkout → Orders conversion funnel and order-status breakdown
13. **Lightning-Fast Order Search (Cmd/Ctrl + K)** — an instant order search overlay across order ID, customer name, email, phone and product SKU from anywhere in wp-admin
14. **Segments — Orders Explorer** — saved segments and quick filters with totals (orders, revenue, AOV) and a clean order list with location, payment method and status
15. **Segments — Customers Explorer** — a segmentable customer list (new, repeat, VIP, dormant, high value) with total spent, AOV and first/last order
16. **Modern WooCommerce Order Management** — a redesigned orders page with a 30-day overview bar, color-coded status tabs and inline status change
17. **WooCommerce Categories Page** — drag-and-drop parent/child category and tag management with circular-reference protection
18. **WooCommerce Coupon Manager** — a clean coupon table with discount-type badges, usage stats, revenue and expiry highlighting
19. **Add Coupon Slide-Over Panel** — create or edit coupons with all WooCommerce coupon options without leaving the page
20. **Custom WP Login Page** — a modern, branded login screen that replaces the default WordPress login

== Changelog ==

= 3.0.5 (2026-05-19) =
* New: **GTIN column on the products list** — the BrikPanel product list can now show a **GTIN** column reading WooCommerce's native `_global_unique_id` field (`WC_Product::get_global_unique_id()`). Off by default; flip it on per-user from the **Columns** popover (persisted in user meta, like every other column). Variable products show the parent GTIN, or the aggregated variation GTINs when the parent has none — so it works for both simple and variable products
* New: **Search products by SKU** — the product list live-search box now matches on SKU as well as title. A `posts_search` filter rewrites the query so a search term hits a product's own `_sku` **and** surfaces a parent product whenever one of its variation SKUs matches, with `$wpdb->esc_like()` escaping throughout. Resolves the user report that SKU search did not work on the product list
* New: **Yoast SEO for WooCommerce compatibility** — the WooCommerce-specific Yoast addon (detected via `WPSEO_WOO_VERSION`) ran its identifier/GTIN analysis against `#product-type` and `#_sku` DOM nodes that the simplified BrikPanel editor never rendered, so it errored out. The editor now emits hidden shim nodes mirroring the real product type and SKU and keeps the hidden `#product-type` in sync when the BrikPanel type selector changes, so the Yoast Woo SEO analysis and score panel run correctly inside the BrikPanel product editor for both simple and variable products
* New: **Dashboard export button** — a new export button next to the dashboard date-range presets downloads the full dashboard as a multi-sheet Excel workbook (Summary, conversion funnel, order status, devices, customer segments, top products, most-viewed, most added-to-cart, sales-over-time, countries, cities, low stock, subscriptions and full order records) for the active date range. Built from the exact payload the dashboard renders so the file can never drift from the screen; streamed via `admin-post.php` (`brikpanel_dashboard_export`, nonce-checked, `manage_woocommerce`-gated) with real numeric cells so the spreadsheet can sum and sort
* New: **Shipping class in the product editor** — WooCommerce's `product_shipping_class` taxonomy is now selectable in the simplified product editor as an opt-in **Shipping class** section (enable it from WooCommerce → Settings → BrikPanel via the editor section list; hidden by default). Simple products get one selector; variable products additionally get a per-variation shipping class column with a "Same as parent" inherit option, so every variation can override individually. Closes the migration gap reported by users who relied on WooCommerce shipping classes
* Fix: **Bullet points now render in the product editor and on the storefront** — bulleted and numbered lists created in the editor were being wrapped in an invalid `<p> > <ul>` structure so they did not display as a list. After an insert-list command the editor now unwraps the list from its surrounding paragraph, and explicit `list-style` / `display:list-item` CSS for nested `ul`/`ol`/`li` (disc → circle → square) makes lists render correctly in both the editor and the front-end product description
* Improvement: **Richer product description editor** — the description and short-description editors gained a block-format dropdown (Paragraph, Heading 2, Heading 3, Heading 4) that reflects and applies the current selection's block, plus heading CSS so the formatting is visible while editing. Combined with the existing visual ⇄ HTML source toggle, content pasted from a website (which keeps its markup) can now be retagged with proper headings from the toolbar instead of only being fixable in the code editor

= 3.0.4 (2026-05-18) =
* New: **Access control** — a new WooCommerce → Settings → BrikPanel → "Access control" section lets you keep the BrikPanel interface for some users while leaving others on the stock WordPress / WooCommerce admin. Disable for **administrators** with one toggle (the common agency setup: clients who are shop managers get BrikPanel, the agency's own administrator account stays vanilla), and/or for any **roles** or hand-picked **individual users**. Disabled users get the native admin menu, dashboard, product/order/coupon screens and zero BrikPanel styling; everyone else is unaffected. Enforced in two layers — every interface toggle is short-circuited to "off" so each module renders the native screen, and all always-on BrikPanel assets, the extra order-list columns and the font/accent/brand-logo theming are swept — so the result is pixel-for-pixel the default experience. BrikPanel analytics, tracking and background jobs keep running for the store regardless. The BrikPanel settings tab is always reachable (with the real toggle states) even for an excluded administrator, so you can never lock yourself out

= 3.0.2 (2026-05-16) =
* Security: **Signed proxy responses** — every reply from the brksoft.com proxy (Google Ads, Meta Ads and Google Sheets OAuth) is now HMAC-SHA256 signed with a freshness timestamp. The plugin verifies the signature on every successful response and refuses to act on any unsigned, tampered, replayed or stale body instead of trusting it — closing cache-poisoning / transport-tampering / log-only attack paths
* Security: **Remote kill-switch** — a signed `revoke` directive lets the proxy operator make all installs immediately wipe their stored Google / Meta / Sheets tokens and stop calling the proxy until the user reconnects, so a suspected proxy compromise can be contained without a plugin update
* Security: **Google Ads query allow-list** on the proxy — only the exact daily-spend query is accepted; any attempt to pull search terms, PII or other resources through a connected account is rejected
* Security: **Hostile `raw_data` handling** — ad-spend API payloads are depth-, size- and charset-capped before they are stored, so a malicious response cannot bloat the table or smuggle content to later consumers
* Security: Proxy global off-switch, `no-store` / `noindex` response headers, and operational hardening notes for the brksoft.com proxy
* Tweak: Version bump to 3.0.2; no functional changes to the dashboard, sync or UI

= 3.0.0 (2026-05-15) =
* New: **Google Ads & Meta Ads integration** — BrikPanel now pulls daily ad spend from Google Ads and Meta (Facebook / Instagram) Ads into a local table so the dashboard can show **real ROAS and Net Profit** next to store revenue. Three new KPI cards render under the existing dashboard metrics: **Ad Spend** (summed across every connected platform for the active date range), **ROAS** (store revenue ÷ ad spend), and **Net Profit** (revenue − COGS − ad spend − manual expenses). The cards are multi-currency aware — when an ad account reports in a different currency than the store, spend is shown split as "₺X + $Y" and ROAS / Net Profit are intentionally omitted (UI shows "—") instead of printing a misleading converted number. COGS is read from WooCommerce's native order COGS meta through a dedicated HPOS-compatible query; manual expenses come from the existing BrikPanel expenses table. The cards only appear once the first sync has written real data
* New: One-click OAuth connect per platform through the same brksoft.com proxy pattern as Google Sheets — PKCE-protected handoff, and the Google **developer token** / Meta **app secret** / OAuth client secret never ship inside the plugin (the proxy injects them server-side). Tokens are kept in a single encrypted multi-platform vault (`sodium_crypto_secretbox`, AES-256-GCM fallback, key HKDF-derived from the site's WP salts) with platform-aware refresh: Google uses the standard `refresh_token` grant, Meta uses the `fb_exchange_token` long-lived-token swap. A revoked / `invalid_grant` connection auto-clears so the UI shows a clean "reconnect" state instead of looping on errors
* New: Per-platform **primary account picker** — Google enumerates accounts via `listAccessibleCustomers` with manager-account (MCC) `login-customer-id` support; Meta lists `/me/adaccounts` including accounts under a Business Manager. On first account selection BrikPanel backfills **3 years of history**, split into 90-day Action Scheduler chunks scheduled most-recent-first so today's spend appears on the dashboard within minutes while the full history fills in behind it. A daily sync re-pulls the trailing 7 days to absorb the late revisions ad platforms apply to recent-day numbers; every write is an idempotent UPSERT so re-syncing or overlapping windows never duplicate a day
* New: Dedicated **Ad Platforms** page under the WooCommerce menu (Beta badge), a "Connect ad accounts" call-to-action on the dashboard, a per-platform manual **Sync now** button, backfill progress, and a token-redacted error log viewer. A master toggle under WooCommerce → Settings → BrikPanel → **Ad Platforms** (default on) makes the whole module dormant when off — no admin page, no scheduled sync, no dashboard cards — while saved connections are kept. Google Ads stays locked behind a switch until its Google-approved developer token is live so users never hit a dead "Connect" button; Meta is unaffected. A new `wp_brikpanel_ad_spend` table is created on activation alongside the other BrikPanel tables, and the raw API payload is retained per row for the planned BrikMentor analysis
* Developer: New proxy-tunnelled **Google Ads API** and **Meta Marketing API** clients (`Brikpanel_Ads_Google_Client`, `Brikpanel_Ads_Meta_Client`) built on `wp_remote_*` with one-shot 401 refresh-and-retry, infrastructure-only backoff (HTTP 429 / 502 / 503 / 504 plus Meta rate-limit codes 4 / 17 / 32 / 613) and no retry on application-level 500s so a misconfigured proxy fails fast instead of hanging the settings UI — no Composer dependency added, reusing the foundation laid by the 2.9.0 Sheets client

= 2.9.5 (2026-05-13) =
* New: Multisite network access rules — when BrikPanel is network-activated, every subsite admin used to inherit full visibility of the WooCommerce → BrikPanel settings tab; a new "BrikPanel Access" page under Network Admin → Settings now lets the Super Admin enforce a role allowlist (`brikpanel_network_access` site-option). When enforcement is on, only users whose role is in the allowlist see the settings tab, the BrikPanel sidebar menus, and can hit any `brikpanel_*` AJAX endpoint — gated centrally through `brikpanel_user_can_access()` so a single check applies across surfaces and the `administrator` role can never be removed from the allowlist (defense-in-depth)
* New: **Delete individual variations** from inside the BrikPanel product editor — every row in the variation table now has a per-row trash button with an in-place confirmation, and the deletion is finalized when the parent product is saved. Combined with the existing **Generate variations** button this closes the last gap users hit when migrating away from the default WooCommerce variations tab. Works on both brand-new variable products and existing ones with attribute combinations already generated
* New: Unsaved-changes guard on the product editor — clicking the top-left "Back to Products" arrow (or closing the tab / reloading) while any field is dirty now triggers the browser's native `beforeunload` confirmation instead of silently discarding edits. Dirty state is tracked on every input / textarea / select / contenteditable inside the editor body
* New: Quick-edit drawer **featured product star** — the slide-in quick edit panel from the products list now exposes the same featured-product star that lives in the row and the full product editor, so a product can be flipped in/out of WooCommerce's featured pool without opening either screen. Backed by the same `brikpanel_toggle_featured` AJAX endpoint as the row icon; row + drawer star sync via a shared `applyQeFeaturedState()` so toggling either surface updates the other instantly. Works for both simple and variable products
* New: Optional advanced coupon restriction fields — the slide-over coupon editor stays minimal by default, but six WC-native restriction fields can now be enabled individually under WooCommerce → Settings → BrikPanel → Coupons: **Products**, **Exclude products**, **Product categories**, **Exclude categories**, **Allowed billing emails** and **Limit usage to X items**. Each toggle is checked both on the editor render side AND inside the AJAX save handler so a hostile payload cannot write to a field that an admin has not enabled. Closes the migration gap reported by users moving from heavy WC coupon workflows
* New: Drag-free **dashboard section ordering** — the existing "Visible dashboard sections" multiselect is now an ordered list with per-row visibility checkbox and up/down arrow buttons (same pattern as the product editor section ordering), so dashboard cards can be both hidden and reordered without touching the drag-and-drop API. Order persists as `brikpanel_dashboard_section_order` JSON, and the dashboard renderer resolves the final order through a `brikpanel_dashboard_section_order` filter so developers can override programmatically
* New: "Copy everything" help tooltip — the previously-cryptic dashboard "Copy everything" button now ships with a question-mark icon next to it whose hover/focus tooltip explains exactly what it does: bundles every dashboard metric (KPIs, top products, recent orders, customers, settings) into a single Markdown report and copies it to the clipboard, ready to paste into ChatGPT / Claude for instant store analysis. CSS-only popover, repositions right-aligned on screens under 900px
* New: **Google Sheets** integration ships with a "Beta" badge on its menu item and page header, and can now be fully disabled from WooCommerce → Settings → BrikPanel → "Google Sheets integration" with a single checkbox (`brikpanel_gs_module_enabled`, default on). When disabled, no admin page, no sync classes, no OAuth handlers and no `woocommerce_new_order` listener are registered — zero overhead on stores that do not use the connector
* Fix: Third-party **brand / taxonomy columns** in the products list now render as comma-separated, locale-aware brand labels instead of dumping the raw array (`Array` or `["Brand1","Brand2"]`). The ASE bridge routes any column whose source is a taxonomy through `get_the_terms()` + `sanitize_term_field()` + `wp_get_list_item_separator()` before output, with per-term escaping — fixes brand columns added by WooCommerce Brands, Perfect WooCommerce Brands, YITH Brands and any plugin that registers a taxonomy column on the products list
* Fix: Variable products created through the BrikPanel editor sometimes lost their variation selector on the storefront (notably reported on stores running the Blocksy Pro theme). Root cause: an in-flight `save_post` hook reloaded the parent product through WC's poisoned factory cache and silently flipped the `product_type` term back to "simple". `save_variations()` now reasserts the `variable` term with `wp_set_object_terms()`, clears WC's per-product `_type_` cache via `WC_Cache_Helper::get_cache_prefix()`, calls `clean_post_cache()`, and finally calls `WC_Product_Variable::sync()` on a freshly-instantiated parent so the frontend always recognizes the product as variable

= 2.9.1 (2026-05-12) =
* Critical fix: Google Sheets sync handlers were registered only inside the `is_admin()` gate, so Action Scheduler workers (WP-Cron / CLI) and the front-end `woocommerce_new_order` hook never saw them — real-time sync silently dropped new orders and bulk export failed with "no callbacks registered". Bootstrap now loads outside the admin gate (same pattern as BrikControl); admin menu / AJAX endpoints still self-gate to admin context
* Critical fix: "Sync now" was queueing an Action Scheduler job and returning immediately, leaving the user with no progress, no row count, and no completion signal. Now runs inline with a spinner, sticky "Syncing…" toast, and a final success toast reporting actual rows + duration. Bulk export still paginates in the background via Action Scheduler when more rows remain
* New: "Reset & re-push everything" button on the Orders tab — clears the `_brikpanel_gs_synced_at` flag from every order so the next Sync re-pushes the full history to the currently configured tab. Useful when renaming the target tab so the old history appears in the new tab
* New: switching the target spreadsheet now automatically resets sync state — every order is re-pushed to the new sheet on the next sync (was: silently kept the old "synced" flags so new sheet stayed empty)
* Improvement: Sync now feedback is data-driven — when nothing new was synced, the toast explains "every order is already marked synced" and points to the Reset button instead of returning silent zero
* Improvement: Reports / Customers / Orders sync handlers return structured stats (`rows`, `orders`, `more`) so manual sync can report exact numbers and the JS UI can refresh the "Last successful sync" stamp inline without a page reload
* Improvement: `ensure_tab` now detects pre-seeded empty tabs (created via the "Create new spreadsheet" flow) and writes their header on first sync instead of leaving them headerless. Existing tabs with non-empty headers are never overwritten
* Improvement: Reports analytics helpers (`brikpanel_get_total_revenue`, `brikpanel_get_visitor_count`, etc.) are now explicitly loaded by the reports-sync handler, so Sales Summary / Daily KPIs / Top Products / Funnel tabs work when running inside Action Scheduler workers (previously silently emitted zero rows)
* Improvement: Token refresh stays robust when `expires_at` has already lapsed — the lazy refresh path runs synchronously through the brksoft.com proxy and surfaces auth errors clearly

= 2.9.0 (2026-05-12) =
* New: **Google Sheets integration** — a fully native, one-click connector that streams BrikPanel data into a Google Sheet of your choice. Four flows ship in V1: (1) **Real-time order sync** — every new WooCommerce order is appended to a dedicated tab within seconds, with one row per line item so variations get their own row and attribute columns; status changes update the existing row in place via stored row indices kept in order meta. (2) **Scheduled bulk export** — Action Scheduler-backed hourly/4h/daily job that catches up historical orders matching a configurable date range and status set; same idempotency guarantee, so manually re-running "Sync now" never duplicates rows. (3) **Analytics report snapshots** — four overwrite-mode tabs (Sales Summary, Daily KPIs, Top Products, Funnel) are refreshed on an interval, exposing total-sales, conversion, AOV, refund/conversion rates and the visitor → checkout funnel directly in Sheets for formulas and pivots. (4) **Customer + RFM snapshot** — chained to the nightly RFM recompute so the segments tab refreshes the moment the metrics table does. Authentication uses an OAuth proxy that BrikPanel hosts on brksoft.com (PKCE-protected handoff token, never sends the auth code through the browser URL); the plugin stores only encrypted access/refresh tokens locally (sodium_crypto_secretbox keyed off AUTH_KEY + SECURE_AUTH_KEY) and requests minimum scopes — `spreadsheets` + `drive.file` (NOT full Drive). HPOS-compatible queries throughout, custom error log with bearer/token redaction, exponential backoff on 429/5xx, and full re-pin into the modern sidebar. Top-level menu page (Google Sheets) under WooCommerce → BrikPanel
* Developer: New WP-CLI-compatible Sheets API client (`Brikpanel_Sheets_Client`) using `wp_remote_*` with built-in 401-refresh, 429 exponential backoff, and 403 rateLimitExceeded handling — no Composer dependency added. Reusable foundation for the planned Google Ads integration in 3.0

For the full release history of older versions, see [changelog.txt](https://plugins.svn.wordpress.org/brikpanel-admin-panel-dashboard-for-woocommerce/trunk/changelog.txt) bundled with the plugin.