[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fOzEY045tltBR9lpaD-AqsgSs1Aooa9gHryh1FwmzLe4":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":18,"download_link":25,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":36,"analysis":128,"fingerprints":414},"brilliant-directories-sync-for-woocommerce","Brilliant Directories Sync for WooCommerce","1.0.6","Brilliant Directories","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrilliantdirectories\u002F","\u003Cp>Sync WooCommerce customers seamlessly with Brilliant Directories using this integration plugin.\u003C\u002Fp>\n\u003Ch3>Key Benefits for WooCommerce Users\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Turn Customers into Directory Members – Automatically add new WooCommerce buyers as members in Brilliant Directories.\u003C\u002Fli>\n\u003Cli>Send Email Newsletters – Use Brilliant Directories’ built-in email marketing tools to engage your customers.\u003C\u002Fli>\n\u003Cli>Organize Members with Tags – Auto-assign tags to WooCommerce customers for targeted email campaigns.\u003C\u002Fli>\n\u003Cli>Sell Premium Memberships – Convert WooCommerce customers into paid directory members.\u003C\u002Fli>\n\u003Cli>Centralize Customer Data – Manage all users in one system instead of separate lists.\u003C\u002Fli>\n\u003Cli>Fully Automated Syncing – No need for manual data entry—set it and forget it.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Sync New WooCommerce Customers – Automatically create new members in Brilliant Directories when they register or checkout.\u003C\u002Fli>\n\u003Cli>Manual & Scheduled Syncs – Sync existing customers instantly or set up automated syncs daily, weekly, or monthly.\u003C\u002Fli>\n\u003Cli>Custom Membership Assignments – Map WooCommerce customers to specific Brilliant Directories membership plans.\u003C\u002Fli>\n\u003Cli>Flexible Account Statuses – Automatically set new accounts as Active or Inactive.\u003C\u002Fli>\n\u003Cli>Welcome Email Integration – Choose whether new members receive a welcome email upon creation.\u003C\u002Fli>\n\u003Cli>Tag Assignments – Automatically assign tags to new members for better segmentation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>No more manual data transfers—this plugin keeps your WooCommerce customers auto-magically synced with Brilliant Directories.\u003C\u002Fp>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin embeds an iframe from Brilliant Directories to provide tutorial videos, FAQs, and additional plugin-related information within the plugin settings page.\u003C\u002Fp>\n\u003Cp>Service: \u003Ca href=\"https:\u002F\u002Fwww.brilliantdirectories.com\u002F\" rel=\"nofollow ugc\">Brilliant Directories\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>What data is sent:\u003C\u002Fp>\n\u003Cp>When accessing the plugin settings page, the plugin loads an iframe from https:\u002F\u002Fget.brilliantdirectories.com\u002Fwordpress-woocommerce-plugin-iframe.\u003Cbr \u002F>\nThis iframe may load resources such as Google Fonts, YouTube videos, and stylesheets from external sources.\u003Cbr \u002F>\nA session management cookie is set by Brilliant Directories for maintaining session security.\u003C\u002Fp>\n\u003Cp>Privacy & Terms:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.brilliantdirectories.com\u002Fonline-directory-script-privacy-policy\" rel=\"nofollow ugc\">Brilliant Directories Privacy Policy\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fwww.brilliantdirectories.com\u002Fonline-directory-terms-of-use\" rel=\"nofollow ugc\">Brilliant Directories Terms of Service\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>If you have any issues or need help, please visit our support forum or contact us at support@brilliantdirectories.com.\u003C\u002Fp>\n","Sync WooCommerce customers seamlessly with Brilliant Directories using this integration plugin.",0,793,100,2,"2025-12-10T08:11:00.000Z","6.9.4","5.6","",[20,21,22,23,24],"automated-sync","brilliant-directories","customer-sync","memberships","woocommerce","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbrilliant-directories-sync-for-woocommerce.1.0.6.zip",null,"2026-03-15T15:16:48.613Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":13,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"brilliantdirectories",3,10,30,94,"2026-04-04T12:27:37.035Z",[37,59,77,98,116],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":13,"num_ratings":47,"last_updated":48,"tested_up_to":16,"requires_at_least":49,"requires_php":50,"tags":51,"homepage":55,"download_link":56,"security_score":57,"vuln_count":31,"unpatched_count":11,"last_vuln_date":58,"fetched_at":27},"wp-user-merger","WP User Merger","1.6.4","Fahad Mahmood","https:\u002F\u002Fprofiles.wordpress.org\u002Ffahadmahmood\u002F","\u003Cul>\n\u003Cli>Author: \u003Ca href=\"https:\u002F\u002Fwww.androidbubbles.com\u002Fcontact\" rel=\"nofollow ugc\">Fahad Mahmood\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Project URI: \u003Ca href=\"http:\u002F\u002Fandroidbubble.com\u002Fblog\u002Fwordpress\u002Fplugins\u002Fwp-user-merger\" rel=\"nofollow ugc\">http:\u002F\u002Fandroidbubble.com\u002Fblog\u002Fwordpress\u002Fplugins\u002Fwp-user-merger\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Demo URI: \u003Ca href=\"http:\u002F\u002Fdemo.androidbubble.com\u002Fuser-merger\" rel=\"nofollow ugc\">http:\u002F\u002Fdemo.androidbubble.com\u002Fuser-merger\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>After activation there will be a settings page under Users menu. User Merger let you merge information of two users. There are two dropdowns on settings page. Select two users you want to merge. For example display name, user ID, login and email etc. It is a user friendly plugin to merge multiple user accounts.\u003Cbr \u002F>\nSee screenshot 1.\u003C\u002Fp>\n\u003Cp>Then press “Merge Users” button. A warning notification will appear for confirmation. Confirm action by pressing the Yes button.\u003Cbr \u002F>\nSee screenshot 2.\u003C\u002Fp>\n\u003Cp>After pressing proceed there will be a successful message which means users has been merged successfully.\u003Cbr \u002F>\nSee screenshot 3.\u003C\u002Fp>\n\u003Cp>If you select same users, the merge action will not be performed. A warning message will appear that same users cannot be selected for merge action.\u003Cbr \u002F>\nSee screenshot 4.\u003C\u002Fp>\n\u003Cp>For detailed selection there is a toggle button that allow you to choose what information the user should include after the merge action. This is a premium feature.\u003Cbr \u002F>\nSee screenshot 5.\u003C\u002Fp>\n\u003Ch4>Tags\u003C\u002Fh4>\n\u003Cp>wordpress, users, merge\u003C\u002Fp>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F1GyDaARTME8?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This WordPress plugin is free software: you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. This WordPress plugin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this WordPress plugin. If not, see http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html.\u003C\u002Fp>\n","WP User Merger is a WordPress plugin that allows you to merge two different users with seletable user fields.",300,9602,6,"2026-03-13T11:43:00.000Z","4.4","7.0",[52,53,54],"merge-users","user-merger","woocommerce-memberships","https:\u002F\u002Fprofiles.wordpress.org\u002Ffahadmahmood\u002Fwp-user-merger","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-user-merger.1.6.4.zip",98,"2022-11-07 00:00:00",{"slug":60,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":32,"downloaded":67,"rating":11,"num_ratings":11,"last_updated":68,"tested_up_to":69,"requires_at_least":70,"requires_php":18,"tags":71,"homepage":74,"download_link":75,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":76},"conditional-logic-for-beaver-builder-and-woo-memberships","Conditional Logic for Beaver Builder and Woo Memberships","1.4","Peter","https:\u002F\u002Fprofiles.wordpress.org\u002Fpetergerard\u002F","\u003Cp>If you use WooCommerce Memberships and Beaver Builder’s Beaver Themer, you will want to use this plugin. It enables you to have blocks that use conditional logic to display different content depending on the visitor’s membership status.\u003C\u002Fp>\n\u003Cp>To use:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Edit a page in Beaver Builder.\u003C\u002Fli>\n\u003Cli>Click on a block. \u003C\u002Fli>\n\u003Cli>Go to the Advanced tab and choose Conditional Logic from the Display menu.\u003C\u002Fli>\n\u003Cli>Click Open Conditional Logic Settings\u003C\u002Fli>\n\u003Cli>Define your rule by selecting “User Membership” and then choose the plan that you are checking.\u003C\u002Fli>\n\u003Cli>If you just want to check if the user is active or inactive, “is set” will be true for any active status and “is not set” will be false for any active status. You can also create rules by comparing to specific Membership statuses by using “equal” or “not equal”.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cem>Note: if you do not select a Membership Plan, then it will default to looking for the first of the user’s plans it finds, and if it can’t find any plan, the user will always be considered “inactive”. So if you have more than one plan available, it is not recommended to leave this unselected.\u003C\u002Fem>\u003C\u002Fp>\n","Simple plugin for Beaver Builder's Beaver Themer to enable conditional logic based on WooCommerce Membership status",2618,"2025-05-15T15:31:00.000Z","6.8.5","5.0",[72,73,54],"beaver-builder","conditional-logic","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fconditional-logic-for-beaver-builder-and-woo-memberships","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fconditional-logic-for-beaver-builder-and-woo-memberships.1.4.zip","2026-03-15T14:54:45.397Z",{"slug":78,"name":79,"version":80,"author":81,"author_profile":82,"description":83,"short_description":84,"active_installs":32,"downloaded":85,"rating":13,"num_ratings":14,"last_updated":86,"tested_up_to":87,"requires_at_least":88,"requires_php":89,"tags":90,"homepage":95,"download_link":96,"security_score":97,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"true-mailchimp-sync-for-woo-memberships","MailChimp Sync for WooCommerce Memberships","1.0","Misha Rudrastyh","https:\u002F\u002Fprofiles.wordpress.org\u002Frudrastyh\u002F","\u003Cp>This plugin allows you to sync your website users with MailChimp lists depending on the WooCommerce Membership plan they have.\u003C\u002Fp>\n\u003Cp>You may specify a MailChimp list for any status of any WooCommerce Memberships plan.\u003C\u002Fp>\n\u003Cp>If you already have members on your website you can use Mass Resync feature to add them to the appropriate MailChimp lists.\u003C\u002Fp>\n\u003Cp>That’s it! MailChimp Sync for WooCommerce Memberships seamlessly updates member data for you in your subscriber profiles, ensuring MailChimp data is always up-to-date with your latest membership list and statuses.\u003C\u002Fp>\n","Allows to sync users with every status of your WooCommerce Memberships plans with MailChimp lists.",1146,"2019-06-25T07:06:00.000Z","5.2.24","3.1","5.2",[91,92,93,94,54],"mailchimp","mailchimp-sync","rudrastyh","woocommerce-membership-sync","https:\u002F\u002Frudrastyh.com\u002Fplugins\u002Fmailchimp-synchronization","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftrue-mailchimp-sync-for-woo-memberships.1.0.zip",85,{"slug":99,"name":100,"version":101,"author":102,"author_profile":103,"description":104,"short_description":105,"active_installs":11,"downloaded":106,"rating":11,"num_ratings":11,"last_updated":107,"tested_up_to":108,"requires_at_least":17,"requires_php":109,"tags":110,"homepage":18,"download_link":114,"security_score":115,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"memberships-frontend-registration","Memberships Frontend Registration","1.0.0","axiomsit142","https:\u002F\u002Fprofiles.wordpress.org\u002Faxiomsit142\u002F","\u003Cp>\u003Cstrong>WooCommerce Memberships Frontend Registration\u003C\u002Fstrong> makes it easy to integrate WooCommerce Membership plan registrations directly on the frontend of your website with the following features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Frontend Registration Shortcode:\u003C\u002Fstrong> Use a shortcode to display a registration form for WooCommerce Memberships plans.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Admin Settings Validation:\u003C\u002Fstrong> Ensure all required products for a membership plan are purchased before completing the membership.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Resume Membership Purchase:\u003C\u002Fstrong> Show notifications on the member dashboard, allowing customers to complete any incomplete memberships after registration.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic Cart Management:\u003C\u002Fstrong> Automatically add required products or subscriptions to the cart when a customer registers for a membership plan.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin simplifies the user journey and ensures a seamless experience for both administrators and customers.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Frontend Membership Registration:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Use the \u003Ccode>[msfr_custom_register]\u003C\u002Fcode> shortcode to display a custom membership registration page.\u003C\u002Fli>\n\u003Cli>Includes validation to ensure all required products are linked to the selected membership plan.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Admin Settings:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Verify that all required products for membership plans are configured properly.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Notification System:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Show a dashboard notification prompting customers to complete their membership purchase process if they stopped after registration.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Auto-Add Products to Cart:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Automatically add required products or subscription products to the cart when a customer registers for a membership plan.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Shortcode-Driven Flexibility:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Place the registration form anywhere on your site using the \u003Ccode>[msfr_custom_register]\u003C\u002Fcode> shortcode.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Notes\u003C\u002Fh3>\n\u003Cp>This plugin requires WooCommerce and WooCommerce Memberships to function correctly.\u003C\u002Fp>\n","Allows users to register for WooCommerce Membership plans from frontend, manage required product, and streamline the membership registration process.",609,"2025-01-17T22:36:00.000Z","6.7.5","7.4",[111,112,113,24,54],"membership-plans","registration","shortcode","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmemberships-frontend-registration.1.0.0.zip",92,{"slug":117,"name":118,"version":119,"author":63,"author_profile":64,"description":120,"short_description":121,"active_installs":11,"downloaded":122,"rating":11,"num_ratings":11,"last_updated":123,"tested_up_to":69,"requires_at_least":70,"requires_php":18,"tags":124,"homepage":18,"download_link":127,"security_score":13,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"pg-sync-for-klaviyo-and-woo-memberships-and-subscriptions","PG Sync for Klaviyo and Woo Memberships and Subscriptions","0.6","\u003Cp>If you use WooCommerce Memberships and Klaviyo, you will want to use this plugin. It enables you to synch membership status changes to Klaviyo. If you also use WooCommerce Subscriptions, it will also synch subscription info and renewal events.\u003C\u002Fp>\n\u003Cp>This plugin should probably be used in conjunction with Klaviyo’s official WooCommerce integration since this plugin is only synching status changes from WooCommerce Memberships and Susbcriptions. It does not build full profiles nor synch orders (which the official plugin does just fine).\u003C\u002Fp>\n\u003Cp>To use:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Go to your Klaviyo.com dashboard and click on your account name (bottom left), then Settings, then API Keys. Then click “Create Private API Key”.\u003C\u002Fli>\n\u003Cli>Give the key a name like “WooCommerce Memberships Synch”\u003C\u002Fli>\n\u003Cli>Leave the Access Level on “Custom” and select “Read\u002FWrite” for Events, Metrics and Profiles. You can leave everything else on “No Access”.\u003C\u002Fli>\n\u003Cli>Click “Create”\u003C\u002Fli>\n\u003Cli>On the next screen, copy the API Key, then head over to your WP Admin Dashboard and click Settings -> Klaviyo Memberships Sync.\u003C\u002Fli>\n\u003Cli>Paste in the API Key and click “Save Changes”.\u003C\u002Fli>\n\u003Cli>You can batch synch all your existing members by entering the Membership Plan ID and starting a batch to run in the background.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>From now on, whenever a Membership status changes, it will be synchronized to Klaviyo. If the Membership is related to a Product, the Product Name will also be synched. In Klaviyo, you will see the current status on a user’s profile properties, and you will see a list of events for every status change.\u003C\u002Fp>\n\u003Cp>Subscription renewal events are also synched – both failures and successful renewal payments.\u003C\u002Fp>\n\u003Cp>Note: The API updates are delayed by 5 minutes to avoid multiple status change updates in a short succession (which would happen if you are using WooCommerce Subscriptions since it pauses and reactivates Memberships during the renewal process).\u003C\u002Fp>\n\u003Ch4>Current Limitations\u003C\u002Fh4>\n\u003Cp>If you use multiple Membership Plans, you’ll only see the one with the most recent change on the user’s Profile in Klaviyo.\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the Klaviyo API to send data about memberships and subscriptions.\u003C\u002Fp>\n\u003Cp>It sends basic identifying information (e.g. name and email address) about users who have memberships and subscriptions, as well as the membership and\u002For subscription status, name, dates, and other details.\u003C\u002Fp>\n\u003Cp>Since you are using your own API Key, data is sent directly from your WordPress install to Klaviyo, and the author of this plugin is completely out of the loop. The plugin uses Action Scheduler to process API requests in the background and reduce risk of hitting rate limits, but you are responsible for your own rate limit.\u003C\u002Fp>\n\u003Cp>The API used is provided by Klaviyo using your own key: \u003Ca href=\"https:\u002F\u002Fwww.klaviyo.com\u002Flegal\u002Fapi-terms\" rel=\"nofollow ugc\">API Terms\u003C\u002Fa> & \u003Ca href=\"https:\u002F\u002Fwww.klaviyo.com\u002Flegal\" rel=\"nofollow ugc\">General Terms and Privacy Policy\u003C\u002Fa>.\u003C\u002Fp>\n","This is a very lightweight plugin that synchs WooCommerce Memberships (and optionally Subscriptions) to Klaviyo.",242,"2025-09-04T20:59:00.000Z",[125,54,126],"klaviyo","woocommerce-subscriptions","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpg-sync-for-klaviyo-and-woo-memberships-and-subscriptions.0.6.zip",{"attackSurface":129,"codeSignals":222,"taintFlows":347,"riskAssessment":400,"analyzedAt":413},{"hooks":130,"ajaxHandlers":190,"restRoutes":209,"shortcodes":210,"cronEvents":211,"entryPointCount":220,"unprotectedCount":221},[131,138,144,148,152,156,160,165,167,170,173,178,182,186],{"type":132,"name":133,"callback":134,"priority":135,"file":136,"line":137},"action","woocommerce_new_order","bridirWcsyncNewOrderToBd",20,"includes\\class-sync-api.php",19,{"type":139,"name":140,"callback":141,"file":142,"line":143},"filter","cron_schedules","bridirWcsyncCronSchedule","includes\\class-sync-cron.php",13,{"type":132,"name":145,"callback":146,"priority":32,"file":142,"line":147},"update_option_brildirwcsync_schedule","bridirWcsyncUpdateCronSchedule",14,{"type":132,"name":149,"callback":150,"file":142,"line":151},"brildirwcsync_cron_scheduled","bridirWcsyncCronFunction",15,{"type":132,"name":153,"callback":154,"priority":32,"file":142,"line":155},"update_option_brildirwcsync_plugin_enable","bridirWcsyncUpdatePluginEnable",16,{"type":132,"name":157,"callback":158,"file":142,"line":159},"brildirwcsync_single_cron","bridirWcsyncRunSingleCron",17,{"type":132,"name":161,"callback":162,"file":163,"line":164},"admin_init","Brildirwcsync_Api_settings","includes\\class-sync-settings.php",8,{"type":132,"name":161,"callback":166,"file":163,"line":151},"Brildirwcsync_plugin",{"type":132,"name":161,"callback":168,"file":163,"line":169},"Brildirwcsync_User_settings",43,{"type":132,"name":161,"callback":171,"file":163,"line":172},"Brildirwcsync_Customer_settings",54,{"type":132,"name":174,"callback":175,"file":176,"line":177},"admin_menu","Brildirwcsync_Register_Settings_page","swbd.php",49,{"type":132,"name":179,"callback":180,"file":176,"line":181},"admin_enqueue_scripts","Brildirwcsync_Admin_scripts",50,{"type":132,"name":183,"callback":184,"file":176,"line":185},"plugins_loaded","Brildirwcsync_Initialize_plugin",52,{"type":139,"name":187,"callback":188,"file":176,"line":189},"admin_body_class","Brildirwcsync_Admin_Body_class",149,[191,197,199,203,205],{"action":192,"nopriv":193,"callback":194,"hasNonce":195,"hasCapCheck":195,"file":163,"line":196},"brildirwcsync_woocommerce_customers",false,"Brildirwcsync_Woocommerce_Customers_callback",true,531,{"action":192,"nopriv":195,"callback":194,"hasNonce":195,"hasCapCheck":195,"file":163,"line":198},532,{"action":200,"nopriv":193,"callback":201,"hasNonce":195,"hasCapCheck":193,"file":163,"line":202},"brildirwcsync_validate_api_key","Brildirwcsync_Validate_Api_Key_ajax",959,{"action":200,"nopriv":195,"callback":201,"hasNonce":195,"hasCapCheck":193,"file":163,"line":204},960,{"action":206,"nopriv":193,"callback":207,"hasNonce":193,"hasCapCheck":193,"file":163,"line":208},"brildirwcsync_next_schedule_date","Brildirwcsync_Next_Schedule_Date_callback",1033,[],[],[212,214,216,218],{"hook":149,"callback":149,"file":142,"line":213},102,{"hook":149,"callback":149,"file":142,"line":215},107,{"hook":149,"callback":149,"file":142,"line":217},112,{"hook":157,"callback":157,"file":142,"line":219},453,5,1,{"dangerousFunctions":223,"sqlUsage":224,"outputEscaping":226,"fileOperations":11,"externalRequests":342,"nonceChecks":31,"capabilityChecks":221,"bundledLibraries":343},[],{"prepared":11,"raw":11,"locations":225},[],{"escaped":227,"rawEcho":228,"locations":229},74,60,[230,233,234,235,237,239,240,242,244,246,248,250,252,253,255,257,259,261,263,265,267,269,271,273,275,277,279,281,283,285,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,315,317,319,321,323,324,326,328,330,332,333,335,337,338,340],{"file":163,"line":231,"context":232},77,"raw output",{"file":163,"line":115,"context":232},{"file":163,"line":57,"context":232},{"file":163,"line":236,"context":232},104,{"file":163,"line":238,"context":232},109,{"file":163,"line":217,"context":232},{"file":163,"line":241,"context":232},139,{"file":163,"line":243,"context":232},151,{"file":163,"line":245,"context":232},158,{"file":163,"line":247,"context":232},165,{"file":163,"line":249,"context":232},169,{"file":163,"line":251,"context":232},172,{"file":163,"line":251,"context":232},{"file":163,"line":254,"context":232},185,{"file":163,"line":256,"context":232},189,{"file":163,"line":258,"context":232},200,{"file":163,"line":260,"context":232},206,{"file":163,"line":262,"context":232},215,{"file":163,"line":264,"context":232},228,{"file":163,"line":266,"context":232},234,{"file":163,"line":268,"context":232},237,{"file":163,"line":270,"context":232},246,{"file":163,"line":272,"context":232},252,{"file":163,"line":274,"context":232},255,{"file":163,"line":276,"context":232},258,{"file":163,"line":278,"context":232},261,{"file":163,"line":280,"context":232},279,{"file":163,"line":282,"context":232},293,{"file":163,"line":284,"context":232},298,{"file":163,"line":45,"context":232},{"file":163,"line":287,"context":232},302,{"file":163,"line":289,"context":232},305,{"file":163,"line":291,"context":232},309,{"file":163,"line":293,"context":232},312,{"file":163,"line":295,"context":232},315,{"file":163,"line":297,"context":232},328,{"file":163,"line":299,"context":232},331,{"file":163,"line":301,"context":232},339,{"file":163,"line":303,"context":232},348,{"file":163,"line":305,"context":232},356,{"file":163,"line":307,"context":232},399,{"file":163,"line":309,"context":232},406,{"file":163,"line":311,"context":232},407,{"file":163,"line":313,"context":232},409,{"file":163,"line":313,"context":232},{"file":163,"line":316,"context":232},414,{"file":163,"line":318,"context":232},421,{"file":163,"line":320,"context":232},449,{"file":163,"line":322,"context":232},452,{"file":163,"line":219,"context":232},{"file":163,"line":325,"context":232},459,{"file":163,"line":327,"context":232},462,{"file":163,"line":329,"context":232},463,{"file":163,"line":331,"context":232},469,{"file":163,"line":331,"context":232},{"file":163,"line":334,"context":232},470,{"file":163,"line":336,"context":232},472,{"file":163,"line":336,"context":232},{"file":163,"line":339,"context":232},478,{"file":163,"line":341,"context":232},482,9,[344],{"name":345,"version":26,"knownCves":346},"Select2",[],[348,381],{"entryPoint":349,"graph":350,"unsanitizedCount":221,"severity":380},"Brildirwcsync_Validate_Api_Key_ajax (includes\\class-sync-settings.php:961)",{"nodes":351,"edges":376},[352,357,363,367,371],{"id":353,"type":354,"label":355,"file":163,"line":356},"n0","source","$_POST (x3)",969,{"id":358,"type":359,"label":360,"file":163,"line":361,"wp_function":362},"n1","sink","update_option() [Settings Manipulation]",975,"update_option",{"id":364,"type":354,"label":365,"file":163,"line":366},"n2","$_POST",988,{"id":368,"type":369,"label":370,"file":163,"line":366},"n3","transform","→ Brildirwcsync_validateApiKey()",{"id":372,"type":359,"label":373,"file":163,"line":374,"wp_function":375},"n4","wp_remote_get() [SSRF]",1012,"wp_remote_get",[377,378,379],{"from":353,"to":358,"sanitized":195},{"from":364,"to":368,"sanitized":193},{"from":368,"to":372,"sanitized":193},"medium",{"entryPoint":382,"graph":383,"unsanitizedCount":221,"severity":380},"\u003Cclass-sync-settings> (includes\\class-sync-settings.php:0)",{"nodes":384,"edges":395},[385,386,387,389,390,391,393],{"id":353,"type":354,"label":355,"file":163,"line":356},{"id":358,"type":359,"label":360,"file":163,"line":361,"wp_function":362},{"id":364,"type":354,"label":365,"file":163,"line":388},970,{"id":368,"type":359,"label":373,"file":163,"line":374,"wp_function":375},{"id":372,"type":354,"label":365,"file":163,"line":366},{"id":392,"type":369,"label":370,"file":163,"line":366},"n5",{"id":394,"type":359,"label":373,"file":163,"line":374,"wp_function":375},"n6",[396,397,398,399],{"from":353,"to":358,"sanitized":195},{"from":364,"to":368,"sanitized":195},{"from":372,"to":392,"sanitized":193},{"from":392,"to":394,"sanitized":193},{"summary":401,"deductions":402},"The \"brilliant-directories-sync-for-woocommerce\" plugin, version 1.0.6, exhibits a mixed security posture.  On the positive side, it demonstrates good practices by utilizing prepared statements for all SQL queries and shows no recorded vulnerability history, suggesting diligent maintenance and a lack of known exploitable flaws. The absence of dangerous functions and file operations further contributes to a generally stable codebase.\n\nHowever, significant concerns arise from the attack surface analysis. The presence of five AJAX handlers, with one lacking authentication checks, presents a clear and immediate risk. This unprotected entry point could be leveraged by unauthenticated attackers to trigger unintended actions within the plugin. Furthermore, the taint analysis reveals two flows with unsanitized paths, indicating potential vulnerabilities related to how external data is processed, even if they are not currently classified as critical or high severity.\n\nThe limited use of nonces and capability checks (3 and 1 respectively) in conjunction with the unprotected AJAX endpoint suggests a broader pattern of insufficient input validation and authorization. While the plugin's SQL security is strong, the output escaping is only 55% properly escaped, which could lead to cross-site scripting (XSS) vulnerabilities if user-controlled data is rendered without adequate sanitization. The use of Select2 as a bundled library, without information on its version, also carries a minor risk if an older, vulnerable version is included.\n\nIn conclusion, while the plugin benefits from robust SQL handling and a clean vulnerability history, the unprotected AJAX endpoint, unsanitized taint flows, and insufficient output escaping are significant weaknesses that require immediate attention. The overall security is moderate, with specific areas that significantly elevate the risk profile.",[403,405,407,409,411],{"reason":404,"points":32},"AJAX handler without authentication checks",{"reason":406,"points":47},"Flows with unsanitized paths",{"reason":408,"points":220},"Output escaping is only 55% proper",{"reason":410,"points":31},"Limited nonce checks",{"reason":412,"points":14},"Limited capability checks","2026-03-17T07:33:00.242Z",{"wat":415,"direct":430},{"assetPaths":416,"generatorPatterns":421,"scriptPaths":422,"versionParams":425},[417,418,419,420],"\u002Fwp-content\u002Fplugins\u002Fbrilliant-directories-sync-for-woocommerce\u002Fassets\u002Fcss\u002Fadmin-style.css","\u002Fwp-content\u002Fplugins\u002Fbrilliant-directories-sync-for-woocommerce\u002Fassets\u002Fjs\u002Fadmin-script.js","\u002Fwp-content\u002Fplugins\u002Fbrilliant-directories-sync-for-woocommerce\u002Fassets\u002Fcss\u002Fselect2.min.css","\u002Fwp-content\u002Fplugins\u002Fbrilliant-directories-sync-for-woocommerce\u002Fassets\u002Fjs\u002Fselect2.min.js",[],[423,424],"assets\u002Fjs\u002Fadmin-script.js","assets\u002Fjs\u002Fselect2.min.js",[426,427,428,429],"brilliant-directories-sync-for-woocommerce\u002Fassets\u002Fcss\u002Fadmin-style.css?ver=","brilliant-directories-sync-for-woocommerce\u002Fassets\u002Fjs\u002Fadmin-script.js?ver=","brilliant-directories-sync-for-woocommerce\u002Fassets\u002Fcss\u002Fselect2.min.css?ver=","brilliant-directories-sync-for-woocommerce\u002Fassets\u002Fjs\u002Fselect2.min.js?ver=",{"cssClasses":431,"htmlComments":434,"htmlAttributes":435,"restEndpoints":436,"jsGlobals":437,"shortcodeOutput":440},[432,433],"swc-plugin-disabled","swc-woocommerce-disabled",[],[],[],[438,439],"brildirwcsyncSettings","brildirwcpluginSettings",[]]