| 开发者 | brksoft |
|---|---|
| 更新时间 | 2026年5月20日 00:24 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 6.9 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/wp-content/plugins/brikpanel, or install via Plugins → Add New → Upload Plugin.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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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").
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.
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.
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.
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.
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.
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.
brikpanel_search_sources filter lets developers add, remove, or reorder sources. The admin menu is indexed per user on real page loads (admin-ajax never builds the menu, so it is read back from a per-user transient during the search request), every source is independently capability-checked, and the placeholder stays "Search orders" while orders is the only active source so existing users see no change. Resolves the report that Cmd/Ctrl + K only found orders and could not reach the rest of the site or third-party plugin pages_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 productsposts_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 listWPSEO_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 productsadmin-post.php (brikpanel_dashboard_export, nonce-checked, manage_woocommerce-gated) with real numeric cells so the spreadsheet can sum and sortproduct_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<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 descriptiondrive.file scope was never actually granted. The connection then showed a green "Connected", but the Picker, "Create new spreadsheet" and every sync failed with a raw Google 403 until the user disconnected and reconnected. BrikPanel now verifies the granted scope after consent and refuses a connection that is missing Drive access with a clear, actionable message; surfaces a prominent warning on an already broken connection; and blocks the Picker and create-sheet actions with a fix-it prompt instead of leaking a scope-less token to a raw Google 403. Behaves identically on simple and variable storesrevoke 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 updateraw_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 consumersno-store / noindex response headers, and operational hardening notes for the brksoft.com proxysodium_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 errorslistAccessibleCustomers 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 daywp_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 analysisBrikpanel_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 clientbrikpanel_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)beforeunload confirmation instead of silently discarding edits. Dirty state is tracked on every input / textarea / select / contenteditable inside the editor bodybrikpanel_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 productsbrikpanel_dashboard_section_order JSON, and the dashboard renderer resolves the final order through a brikpanel_dashboard_section_order filter so developers can override programmaticallybrikpanel_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 connectorArray 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 listsave_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 variableis_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_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 tabrows, orders, more) so manual sync can report exact numbers and the JS UI can refresh the "Last successful sync" stamp inline without a page reloadensure_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 overwrittenbrikpanel_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)expires_at has already lapsed — the lazy refresh path runs synchronously through the brksoft.com proxy and surfaces auth errors clearlyspreadsheets + 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 → BrikPanelBrikpanel_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 bundled with the plugin.