{"id":316265,"date":"2026-06-11T14:29:48","date_gmt":"2026-06-11T14:29:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/badger-customer-badges\/"},"modified":"2026-06-11T14:29:09","modified_gmt":"2026-06-11T14:29:09","slug":"badger-customer-badges","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/badger-customer-badges\/","author":23503469,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.8","stable_tag":"1.6.8","tested":"7.0","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Innosanctum Customer Badges for WooCommerce","header_author":"InnoSanctum","header_description":"Automatic and manual customer badges in WooCommerce admin, based on purchases, categories, tags, and custom rules. Free and Pro editions.","assets_banners_color":"caccd3","last_updated":"2026-06-11 14:29:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/github.com\/innosanctum","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.6.8":{"tag":"1.6.8","author":"innosanctum","date":"2026-06-11 14:29:09"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3568970,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3568970,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3568970,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3568970,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.6.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3568970,"resolution":"1","location":"assets","locale":"","width":1759,"height":907},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3568970,"resolution":"2","location":"assets","locale":"","width":961,"height":712}},"screenshots":{"1":"Customer badges shown in the WooCommerce Orders list.","2":"Badge Rules \u2014 match customers by product, category, or tag, with a color picker."}},"plugin_section":[],"plugin_tags":[266682,17666,266683,286],"plugin_category":[45],"plugin_contributors":[266684],"plugin_business_model":[],"class_list":["post-316265","plugin","type-plugin","status-publish","hentry","plugin_tags-customer-badges","plugin_tags-customer-management","plugin_tags-order-badges","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-innosanctum","plugin_committers-innosanctum"],"banners":{"banner":"https:\/\/ps.w.org\/badger-customer-badges\/assets\/banner-772x250.png?rev=3568970","banner_2x":"https:\/\/ps.w.org\/badger-customer-badges\/assets\/banner-1544x500.png?rev=3568970","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/badger-customer-badges\/assets\/icon-128x128.png?rev=3568970","icon_2x":"https:\/\/ps.w.org\/badger-customer-badges\/assets\/icon-256x256.png?rev=3568970","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/badger-customer-badges\/assets\/screenshot-1.png?rev=3568970","caption":"Customer badges shown in the WooCommerce Orders list."},{"src":"https:\/\/ps.w.org\/badger-customer-badges\/assets\/screenshot-2.png?rev=3568970","caption":"Badge Rules \u2014 match customers by product, category, or tag, with a color picker."}],"raw_content":"<!--section=description-->\n<p>Innosanctum Customer Badges adds automatic customer badges to WooCommerce orders and user profiles, based on product purchases, categories, tags, and manual rules.<\/p>\n\n<p>Most of Innosanctum Customer Badges is free \u2014 including unlimited rules, category\/tag matching, manual badges, expiry, and the badges column.<\/p>\n\n<p>Free features:\n* Unlimited badge rules\n* Match by product, variation, category, or tag\n* Multiple products per rule\n* Any order status (Completed, Processing, and more)\n* Badge expiry\n* Manual badges (admin-assigned, with color picker)\n* Badges column on the Users and Orders list screens\n* Badge position selector (order screen and profile)\n* Background and on-demand recalculation\n* Full diagnostics screen<\/p>\n\n<p>Pro features:\n* Filter the Users and Orders lists by badge\n* Webhook notifier with delivery log (badge_added \/ badge_removed JSON events)\n* Export \/ import rules and settings as JSON<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to \/wp-content\/plugins\/<\/li>\n<li>Activate it in WordPress<\/li>\n<li>Go to WooCommerce \u2192 Customer Badges<\/li>\n<li>Create your first badge rule<\/li>\n<\/ol>\n\n<p>Pro: enter your license key on the settings page after purchase.<\/p>\n\n<!--section=changelog-->\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>Fix: HPOS badges not being assigned \u2014 HPOS stores order statuses without the wc- prefix; queries now use the correct format per storage backend<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>WP.org compliance: WP.org build now ships a fully functional free edition \u2014 no locked or disabled features<\/li>\n<li>Free features: 1 badge rule (product match, completed status), badges column on Orders and Users lists, manual badges on user profiles, full diagnostics<\/li>\n<li>Pro features (unlimited rules, categories\/tags, webhooks, import\/export, etc.) are available in Innosanctum Customer Badges Pro<\/li>\n<li>Upsell: single tasteful notice at the bottom of settings linking to the Innosanctum Customer Badges website<\/li>\n<\/ul>\n\n<h4>1.5.16<\/h4>\n\n<ul>\n<li>Fix: \"Badges column\" checkbox in Display settings is now correctly shown as disabled (Pro feature) for free users<\/li>\n<li>Fix: HPOS Orders column hooks retain both legacy and WC 9+ screen ID variants<\/li>\n<\/ul>\n\n<h4>1.5.15<\/h4>\n\n<ul>\n<li>Fix: Badges column now appears in HPOS Orders list under WooCommerce 9+ \/ 10.x \u2014 new standalone-menu screen ID (wc-orders) added alongside the legacy submenu screen ID<\/li>\n<\/ul>\n\n<h4>1.5.14<\/h4>\n\n<ul>\n<li>Cleanup: removed per-request diagnostic Init log lines added in 1.5.13<\/li>\n<\/ul>\n\n<h4>1.5.13<\/h4>\n\n<ul>\n<li>Diagnostics: System Status now shows show_badges_column, order_badge_position, and debug_enabled settings<\/li>\n<li>Diagnostics: Init log now records plugin version, show_badges_column value, and Pro\/Free mode on every page load<\/li>\n<li>Diagnostics: User profile badge save now logs whether it was reached, permission result, and which POST keys were present<\/li>\n<\/ul>\n\n<h4>1.5.12<\/h4>\n\n<ul>\n<li>Fix: Display settings (Badges column toggle) now saves reliably \u2014 same direct-DB write used for rules<\/li>\n<li>Fix: Plugin settings now read directly from DB, bypassing all cache layers (same fix as rules)<\/li>\n<li>Fix: Removing all manual badges from a user profile now correctly clears them on save (previously skipped if no rows remained in the form)<\/li>\n<\/ul>\n\n<h4>1.5.11<\/h4>\n\n<ul>\n<li>Fix: free version no longer forces badge rule to stay enabled \u2014 the enabled\/disabled toggle now works correctly in all editions<\/li>\n<\/ul>\n\n<h4>1.5.10<\/h4>\n\n<ul>\n<li>Fix: Upgrade to Pro link now points to innosanctum.gumroad.com (was stale serhiievsky.gumroad.com URL)<\/li>\n<li>WP.org build: plugin header and readme body now branded as \"Innosanctum Customer Badges\"<\/li>\n<li>Landing page: footer link updated to github.com\/innosanctum; WP.org alias note added<\/li>\n<\/ul>\n\n<h4>1.5.9<\/h4>\n\n<ul>\n<li>Display settings: new \"Badges column\" checkbox to show\/hide the Badges column in Orders and Users list screens<\/li>\n<li>Diagnostics: \"Manual Recalculation\" section removed \u2014 Recalculate All button moved into the Diagnostics card<\/li>\n<li>Diagnostics: \"Copy System Status\" renamed to \"Generate System Status\" to better describe what the button does<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li>Fix: rules now stored as JSON instead of PHP-serialize \u2014 json_encode() escapes emoji as \\uXXXX (pure ASCII), making emoji in badge labels work correctly even on MySQL utf8 (non-utf8mb4) databases<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>Fix: rules save now writes directly to DB via $wpdb, bypassing WordPress object-cache comparison \u2014 fixes silent no-op saves caused by stale Redis\/persistent-cache entries (WP Rocket)<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Innosanctum Customer Badges mascot shown in plugin settings page header<\/li>\n<li>Admin page slug changed to woo-badger (?page=woo-badger)<\/li>\n<li>Settings UI now reads rules directly from DB, bypassing all cache layers (WP Rocket, Redis, object cache) \u2014 fixes stale label\/color display after save<\/li>\n<li>Background recalc uses direct SQL instead of wc_get_orders() \u2014 fixes badges being incorrectly removed in AS background context<\/li>\n<li>Emoji-safe save log format (4-byte emoji stripped from log, preserved in rules)<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Show in Lists checkbox per rule: controls whether a badge appears in the Badges column on Users and Orders list screens<\/li>\n<li>System Status now shows each rule's full criteria (slug, label, match type, IDs, statuses) \u2014 aids diagnosing empty recalc<\/li>\n<li>Save log now includes match type and product\/category\/tag IDs per rule, so you can confirm what was actually saved<\/li>\n<li>Background and manual recalc logs now show the rule criteria snapshot at job start<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Dedicated wp_ait_wcb_badges table replaces user_meta badge storage<\/li>\n<li>Auto-migrates existing badges on first activate\/update<\/li>\n<li>Smart rule diff: label\/color changes apply instantly (no user scan); deleted rules clean up instantly<\/li>\n<li>Background recalc now processes only rules whose criteria actually changed<\/li>\n<li>Daily cron to purge expired badges<\/li>\n<li>Fast badge filtering in Users and Orders lists via indexed table queries<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>License verification via Gumroad API<\/li>\n<li>HPOS order list column (wc-orders page)<\/li>\n<li>Async webhook delivery via Action Scheduler<\/li>\n<li>Fixed &amp; encoding in webhook endpoint URLs<\/li>\n<li>Safe uninstall<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Collapsible rule cards with drag-and-drop ordering<\/li>\n<li>Auto-contrast badge text color<\/li>\n<li>Row-based manual badge UI with color picker<\/li>\n<li>Rule ID auto-generated, hidden from UI<\/li>\n<\/ul>","raw_excerpt":"Know who you&#039;re dealing with before you open the order. Automatic customer badges in WooCommerce admin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/316265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=316265"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/innosanctum"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=316265"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=316265"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=316265"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=316265"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=316265"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=316265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}