{"id":349522,"date":"2026-09-20T13:19:48","date_gmt":"2026-09-20T13:19:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/b2b-customer-dashboard-for-woocommerce\/"},"modified":"2026-09-25T15:00:20","modified_gmt":"2026-09-25T15:00:20","slug":"b2b-customer-dashboard-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/b2b-customer-dashboard-for-woocommerce\/","author":23499294,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.2","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Kascado Customer Dashboard for WooCommerce","header_author":"Kascado","header_description":"B2B customer health dashboard for WooCommerce. See which wholesale accounts are active, at risk, or dormant, and the revenue at risk.","assets_banners_color":"454d5b","last_updated":"2026-09-25 15:00:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/kascado.com\/woocommerce\/customer-dashboard\/","header_author_uri":"https:\/\/kascado.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":169,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kascado","date":"2026-09-20 13:31:04","revision":3704295},"1.0.1":{"tag":"1.0.1","author":"kascado","date":"2026-09-20 14:01:12","revision":3704321},"1.0.2":{"tag":"1.0.2","author":"kascado","date":"2026-09-24 17:59:52","revision":3711818},"1.0.3":{"tag":"1.0.3","author":"kascado","date":"2026-09-25 15:00:20","revision":3713221}},"upgrade_notice":{"1.0.2":"<p>Fixes an empty customer list on sites using plain permalinks, and stale dashboard figures on sites with a persistent object cache or where orders are deleted or trashed. No settings change and no data migration.<\/p>","1.0.1":"<p>Fixes the missing &quot;Settings saved.&quot; confirmation and a PHP 8.1+ deprecation notice on the settings page.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3704321,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3704321,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3713219,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3713219,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3704285,"resolution":"1","location":"assets","locale":"","width":1523,"height":683},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3704285,"resolution":"2","location":"assets","locale":"","width":1109,"height":632},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3704285,"resolution":"3","location":"assets","locale":"","width":1837,"height":490},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3704285,"resolution":"4","location":"assets","locale":"","width":1834,"height":877},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3704285,"resolution":"5","location":"assets","locale":"","width":1836,"height":379},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3704285,"resolution":"6","location":"assets","locale":"","width":1834,"height":655},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3704285,"resolution":"7","location":"assets","locale":"","width":1835,"height":316}},"screenshots":{"1":"Customer health at a glance. Revenue at risk, dormant accounts, slipping reorder patterns, and growth opportunities, all visible above the fold.","2":"Two prioritized work queues side by side. The Accounts Needing Attention table is sorted by revenue exposure so you know which at-risk customer is worth the most lost revenue. The Top 5 Revenue Customers table shows your biggest accounts in the current period.","3":"Headline metrics with period-over-period trend indicators, revenue trend over time, and the active, at-risk, and dormant customer health split.","4":"Filter, search, sort, and export your full B2B customer list. Seven sortable columns, status filter pills, expandable search, and CSV export.","5":"Activity thresholds. Define when a customer counts as active, when they tip into at-risk, and how much reorder cycle drift triggers a slipping alert.","6":"B2B customer detection. Built-in role detection works automatically with major wholesale plugins. Add custom roles, set a minimum order count fallback, and exclude internal accounts.","7":"Performance settings. Control how long cached data is reused and how much order history the dashboard scans."}},"plugin_section":[],"plugin_tags":[10553,24828,140846,7619,51032],"plugin_category":[],"plugin_contributors":[281708],"plugin_business_model":[],"class_list":["post-349522","plugin","type-plugin","status-publish","hentry","plugin_tags-b2b","plugin_tags-customer-analytics","plugin_tags-customer-retention","plugin_tags-customers","plugin_tags-wholesale","plugin_contributors-kascado","plugin_committers-kascado"],"banners":{"banner":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/banner-772x250.png?rev=3713219","banner_2x":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/banner-1544x500.png?rev=3713219","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/icon-128x128.png?rev=3704321","icon_2x":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/icon-256x256.png?rev=3704321","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/screenshot-1.png?rev=3704285","caption":"Customer health at a glance. Revenue at risk, dormant accounts, slipping reorder patterns, and growth opportunities, all visible above the fold."},{"src":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/screenshot-2.png?rev=3704285","caption":"Two prioritized work queues side by side. The Accounts Needing Attention table is sorted by revenue exposure so you know which at-risk customer is worth the most lost revenue. The Top 5 Revenue Customers table shows your biggest accounts in the current period."},{"src":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/screenshot-3.png?rev=3704285","caption":"Headline metrics with period-over-period trend indicators, revenue trend over time, and the active, at-risk, and dormant customer health split."},{"src":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/screenshot-4.png?rev=3704285","caption":"Filter, search, sort, and export your full B2B customer list. Seven sortable columns, status filter pills, expandable search, and CSV export."},{"src":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/screenshot-5.png?rev=3704285","caption":"Activity thresholds. Define when a customer counts as active, when they tip into at-risk, and how much reorder cycle drift triggers a slipping alert."},{"src":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/screenshot-6.png?rev=3704285","caption":"B2B customer detection. Built-in role detection works automatically with major wholesale plugins. Add custom roles, set a minimum order count fallback, and exclude internal accounts."},{"src":"https:\/\/ps.w.org\/b2b-customer-dashboard-for-woocommerce\/assets\/screenshot-7.png?rev=3704285","caption":"Performance settings. Control how long cached data is reused and how much order history the dashboard scans."}],"raw_content":"<!--section=description-->\n<p>Kascado Customer Dashboard for WooCommerce gives WooCommerce wholesalers, distributors, and B2B stores a single screen that shows exactly who their best customers are, who is slipping, and who has already gone dormant \u2014 with hard revenue numbers attached.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li>Urgent alert cards: Dormant Accounts, Slipping Accounts, Growth Opportunities<\/li>\n<li>Key metric cards: Total Revenue, AOV, Active Account ratio, Reorder Cycle<\/li>\n<li>12-month revenue trend line chart<\/li>\n<li>Customer Health doughnut (Active \/ At Risk \/ Dormant)<\/li>\n<li>Top Revenue Customers + Accounts Needing Attention tables<\/li>\n<li>Full sortable, searchable, filterable B2B customer table<\/li>\n<li>CSV export of the currently filtered customer list<\/li>\n<li>Configurable activity thresholds + B2B role detection<\/li>\n<\/ul>\n\n<p><strong>B2B customer detection<\/strong><\/p>\n\n<p>Detects B2B customers by matching the role slugs and user meta keys used by B2BKing (WebWizards), Wholesale Suite (Rymera), WholesaleX (WPXPO), and Barn2 Wholesale Pro. Other B2B plugins are supported via the Additional B2B Roles setting.<\/p>\n\n<p>Customers are recognized as B2B when they match any of:<\/p>\n\n<ol>\n<li>A role used by B2BKing, Wholesale Suite, or Barn2 Wholesale Pro<\/li>\n<li>User meta set by B2BKing or WholesaleX<\/li>\n<li>A custom role you pick on the Settings page<\/li>\n<\/ol>\n\n<p>Only if none of those match a single customer does the plugin fall back to order counts: any customer with at least the configured minimum number of orders, in the statuses you count toward revenue, is treated as B2B.<\/p>\n\n<p><strong>HPOS-compatible<\/strong><\/p>\n\n<p>Declares compatibility with WooCommerce High-Performance Order Storage. The plugin detects the active order storage backend and uses a query path appropriate to each \u2014 both HPOS and legacy post-based storage are fully supported, and output has been verified identical across both.<\/p>\n\n<p>Part of the Kascado plugin suite for B2B WooCommerce operations. More plugins coming soon \u2014 visit kascado.com for updates.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Ensure WooCommerce is installed and active.<\/li>\n<li>Open <strong>Kascado \u2192 Customer Dashboard<\/strong> in the WordPress admin sidebar.<\/li>\n<li>Visit <strong>Customer Dashboard \u2192 Settings<\/strong> to tune thresholds and pick any additional B2B roles.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20without%20woocommerce%3F\"><h3>Does this plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce must be active. The plugin displays an admin notice if it is missing and stays inert.<\/p><\/dd>\n<dt id=\"is%20it%20hpos-compatible%3F\"><h3>Is it HPOS-compatible?<\/h3><\/dt>\n<dd><p>Yes. The plugin detects whether your store uses HPOS or legacy post-based order storage and runs the appropriate query path for each. Both backends are fully supported and produce identical results. HPOS compatibility is declared in the plugin header.<\/p><\/dd>\n<dt id=\"how%20are%20%22active%22%2C%20%22at%20risk%22%2C%20and%20%22dormant%22%20defined%3F\"><h3>How are \"active\", \"at risk\", and \"dormant\" defined?<\/h3><\/dt>\n<dd><p>Defaults: Active = ordered in last 30 days, At Risk = 31\u201390 days silent, Dormant = longer than 90 days silent. Every threshold is editable in Settings.<\/p><\/dd>\n<dt id=\"does%20it%20work%20alongside%20b2bking%2C%20wholesale%20suite%2C%20or%20wholesalex%3F\"><h3>Does it work alongside B2BKing, Wholesale Suite, or WholesaleX?<\/h3><\/dt>\n<dd><p>Yes. Roles and meta from those plugins are detected automatically.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20store%3F\"><h3>Will it slow down my store?<\/h3><\/dt>\n<dd><p>All expensive queries are cached in transients and refreshed at least once an hour by default. You can set the refresh interval anywhere from 5 minutes to 24 hours in Settings. Dashboard assets are only enqueued on the plugin's own pages.<\/p><\/dd>\n<dt id=\"why%20don%27t%20my%20totals%20match%20woocommerce%20analytics%3F\"><h3>Why don't my totals match WooCommerce Analytics?<\/h3><\/dt>\n<dd><p>Guest checkout orders (orders placed without a registered account) are excluded from all dashboard figures. This plugin tracks B2B customer health by user account, so orders with no account cannot be attributed. If your store has significant guest checkout volume, expect lower totals here than in WooCommerce Analytics. A notice on the dashboard shows how many guest orders were excluded in the selected date range.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20remove%20everything%3F\"><h3>Does uninstalling remove everything?<\/h3><\/dt>\n<dd><p>Yes. Uninstalling deletes the plugin's settings and every cached transient.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Renamed to \"Kascado Customer Dashboard for WooCommerce\". Nothing else changed: same plugin, same settings, same data.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed the customer list showing no customers on sites using plain permalinks. The table requested its data from an address WordPress could not match and came back empty every time. If your customer list has always looked empty, this is why, and it now works whichever permalink setting your store uses.<\/li>\n<li>Dashboard figures now update immediately when orders change on sites using a persistent object cache (Redis, Memcached). Previously the numbers could stay stale until the cache expired on its own.<\/li>\n<li>Deleting or trashing an order now updates the dashboard straight away. Before this, a removed order kept counting towards your revenue figures.<\/li>\n<li>\"Revenue at Risk\" now says what it measures: revenue from accounts that have stopped ordering. The \"Exposure\" wording has gone, so this figure can no longer be mistaken for money a customer owes you.<\/li>\n<li>The Kascado menu now stays highlighted while you are on the settings page.<\/li>\n<li>The Kascado menu icon now shows the Kascado mark in every WordPress admin colour scheme. On dark colour schemes it could appear as an invisible black square.<\/li>\n<li>Hero banner now matches the rest of the Kascado suite: consistent height, title weight and spacing, and a \"by Kascado\" mark beside the page name.<\/li>\n<li>The plugin now records its own version when updated, not only when activated, so future upgrades can migrate settings reliably.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Settings confirmation notice now shows after saving.<\/li>\n<li>Fixed a PHP 8.1+ deprecation notice on the settings page.<\/li>\n<li>Clarified settings help text.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Alert cards for dormant, slipping, and growth accounts.<\/li>\n<li>Headline metrics: revenue, AOV, active account ratio, reorder cycle.<\/li>\n<li>12-month revenue trend line chart.<\/li>\n<li>Customer Health doughnut.<\/li>\n<li>Top Revenue Customers and Accounts Needing Attention tables with revenue-at-risk callout.<\/li>\n<li>Full B2B customer table with sort, filter, search, and pagination.<\/li>\n<li>CSV export of the current filtered customer list.<\/li>\n<li>Settings page for thresholds, B2B roles, minimum orders, and refresh interval.<\/li>\n<li>HPOS-compatible.<\/li>\n<\/ul>","raw_excerpt":"B2B customer health dashboard for WooCommerce. See which wholesale accounts are active, at risk, or dormant, and the revenue at risk.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349522"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kascado"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349522"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349522"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349522"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349522"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349522"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}