{"id":328232,"date":"2026-06-23T06:57:22","date_gmt":"2026-06-23T06:57:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/eu-withdrawal-manager\/"},"modified":"2026-06-23T06:56:46","modified_gmt":"2026-06-23T06:56:46","slug":"webqueenz-withdrawal-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/webqueenz-withdrawal-manager\/","author":23518588,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Web Queenz Withdrawal Manager for WooCommerce","header_author":"Web Queenz","header_description":"Helps WooCommerce stores comply with EU withdrawal and cancellation directive requirements (EU Directive 2011\/83\/EU). Provides a complete 14-day withdrawal right management system for registered and guest customers, with admin dashboard, email notifications, and GDPR support.","assets_banners_color":"fbfbfb","last_updated":"2026-06-23 06:56:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/webqueenz.com\/webqueenz-withdrawal-manager","header_author_uri":"https:\/\/webqueenz.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":1,"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":"webqueenz","date":"2026-06-23 06:56:46"}},"upgrade_notice":{"1.0.0":"<p>Initial release. After activation, please go to Settings \u2192 Permalinks and click Save Changes to activate the My Account Withdrawals endpoint.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"Icon-128x128.png":{"filename":"Icon-128x128.png","revision":3582758,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"Icon-256x256.png":{"filename":"Icon-256x256.png","revision":3582758,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"Banner-1544\u00d7500.png":{"filename":"Banner-1544\u00d7500.png","revision":3582758,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"Banner-772\u00d7250.png":{"filename":"Banner-772\u00d7250.png","revision":3582758,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3582737,"resolution":"1","location":"assets","locale":"","width":1682,"height":685},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3582737,"resolution":"10","location":"assets","locale":"","width":1202,"height":810},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3582737,"resolution":"2","location":"assets","locale":"","width":1678,"height":489},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3582737,"resolution":"3","location":"assets","locale":"","width":1573,"height":1218},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3582737,"resolution":"4","location":"assets","locale":"","width":466,"height":480},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3582737,"resolution":"5","location":"assets","locale":"","width":1612,"height":270},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3582737,"resolution":"6","location":"assets","locale":"","width":787,"height":817},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3582737,"resolution":"7","location":"assets","locale":"","width":1436,"height":682},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3582737,"resolution":"8","location":"assets","locale":"","width":996,"height":246},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3582737,"resolution":"9","location":"assets","locale":"","width":603,"height":844}},"screenshots":{"1":"<strong>Admin Dashboard<\/strong> \u2014 Operational overview with status counts and recent requests","2":"<strong>Requests List Table<\/strong> \u2014 All withdrawal requests with search, filters, and bulk actions","3":"<strong>Single Request View<\/strong> \u2014 Full request detail with customer info, items, timeline, and admin tools","4":"<strong>Status Management<\/strong> \u2014 Controlled status transitions with optional note","5":"<strong>Activity Timeline<\/strong> \u2014 Append-only audit log per request","6":"<strong>Customer Withdrawal Form<\/strong> \u2014 Product selection, request type, and reason","7":"<strong>Guest Withdrawal Portal<\/strong> \u2014 Secure order ID + email validation","8":"<strong>My Account Withdrawals<\/strong> \u2014 Customer-facing withdrawal history tab","9":"<strong>Email Notifications<\/strong> \u2014 HTML email templates for admin and customer","10":"<strong>Settings Page<\/strong> \u2014 Configurable options with EU law enforcement"}},"plugin_section":[],"plugin_tags":[258660,131785,9682,245590,286],"plugin_category":[45],"plugin_contributors":[268451],"plugin_business_model":[],"class_list":["post-328232","plugin","type-plugin","status-publish","hentry","plugin_tags-cancellation","plugin_tags-gdpr","plugin_tags-refund","plugin_tags-withdrawal","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-webqueenz","plugin_committers-webqueenz"],"banners":{"banner":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/Banner-772\u00d7250.png?rev=3582758","banner_2x":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/Banner-1544\u00d7500.png?rev=3582758","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/Icon-128x128.png?rev=3582758","icon_2x":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/Icon-256x256.png?rev=3582758","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-1.png?rev=3582737","caption":"<strong>Admin Dashboard<\/strong> \u2014 Operational overview with status counts and recent requests"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-2.png?rev=3582737","caption":"<strong>Requests List Table<\/strong> \u2014 All withdrawal requests with search, filters, and bulk actions"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-3.png?rev=3582737","caption":"<strong>Single Request View<\/strong> \u2014 Full request detail with customer info, items, timeline, and admin tools"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-4.png?rev=3582737","caption":"<strong>Status Management<\/strong> \u2014 Controlled status transitions with optional note"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-5.png?rev=3582737","caption":"<strong>Activity Timeline<\/strong> \u2014 Append-only audit log per request"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-6.png?rev=3582737","caption":"<strong>Customer Withdrawal Form<\/strong> \u2014 Product selection, request type, and reason"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-7.png?rev=3582737","caption":"<strong>Guest Withdrawal Portal<\/strong> \u2014 Secure order ID + email validation"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-8.png?rev=3582737","caption":"<strong>My Account Withdrawals<\/strong> \u2014 Customer-facing withdrawal history tab"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-9.png?rev=3582737","caption":"<strong>Email Notifications<\/strong> \u2014 HTML email templates for admin and customer"},{"src":"https:\/\/ps.w.org\/webqueenz-withdrawal-manager\/assets\/screenshot-10.png?rev=3582737","caption":"<strong>Settings Page<\/strong> \u2014 Configurable options with EU law enforcement"}],"raw_content":"<!--section=description-->\n<p><strong>Web Queenz Withdrawal Manager for WooCommerce<\/strong> is a production-quality WooCommerce plugin that implements the EU consumer withdrawal right workflow directly inside your store \u2014 for both registered customers and guests.<\/p>\n\n<p>Built to comply with <strong>EU Directive 2011\/83\/EU<\/strong> and the new <strong>Directive (EU) 2023\/2673 \"Withdrawal Button\" requirement<\/strong> (effective June 19, 2026), the plugin provides a complete withdrawal management system with the mandated two-step confirmation flow, a professional admin dashboard, automated email notifications, and GDPR-ready data handling.<\/p>\n\n<h4>Core Features<\/h4>\n\n<p><strong>Customer Workflow<\/strong><\/p>\n\n<ul>\n<li>\"Withdraw From Contract Here\" button on My Account orders and order detail pages, per Article 11a labelling requirements<\/li>\n<li>Two-step withdrawal flow \u2014 statement step followed by a separate \"Confirm Withdrawal\" function, satisfying the Article 11a two-step pattern<\/li>\n<li>Eligibility validation \u2014 14-day window, order status checks, item-level availability<\/li>\n<li>Product-level and partial withdrawal support<\/li>\n<li>Refund or exchange selection<\/li>\n<li>Optional customer reason field<\/li>\n<li>My Account \u2192 Withdrawals history tab<\/li>\n<\/ul>\n\n<p><strong>Guest Withdrawal Portal<\/strong><\/p>\n\n<ul>\n<li>Dedicated guest withdrawal page (auto-created on activation)<\/li>\n<li>Secure order ID + billing email validation<\/li>\n<li>Enumeration protection \u2014 generic error messages prevent order\/email fishing<\/li>\n<li>Session-based secure multi-step flow<\/li>\n<\/ul>\n\n<p><strong>Admin Dashboard<\/strong><\/p>\n\n<ul>\n<li>Operational dashboard with status counts (Pending, Approved, Completed, Rejected)<\/li>\n<li>Full requests list table with search, filters, sorting, and pagination<\/li>\n<li>Single request detail view \u2014 customer info, order link, item snapshots, timeline<\/li>\n<li>Controlled status transitions (pending \u2192 approved \u2192 completed etc.)<\/li>\n<li>Internal admin notes system (append-only, never shown to customers)<\/li>\n<li>Activity timeline \u2014 full audit log per request<\/li>\n<li>Bulk actions (approve, reject, complete) with validation and feedback<\/li>\n<\/ul>\n\n<p><strong>Email Notifications<\/strong><\/p>\n\n<ul>\n<li>Admin notification on new request submission<\/li>\n<li>Customer confirmation email with reference number<\/li>\n<li>Customer status update emails for approved, rejected, and completed requests<\/li>\n<li>Template-based HTML emails \u2014 theme-overridable<\/li>\n<\/ul>\n\n<p><strong>Settings<\/strong><\/p>\n\n<ul>\n<li>Configurable withdrawal window (minimum 14 days \u2014 EU law enforced)<\/li>\n<li>Guest withdrawals toggle<\/li>\n<li>Exchange option toggle<\/li>\n<li>Required reason toggle<\/li>\n<li>Admin notification email<\/li>\n<li>Customer email toggles<\/li>\n<li>Data retention on uninstall setting<\/li>\n<\/ul>\n\n<p><strong>Technical<\/strong><\/p>\n\n<ul>\n<li>WooCommerce HPOS compatible (High Performance Order Storage)<\/li>\n<li>Modern OOP PHP architecture<\/li>\n<li>Translation ready<\/li>\n<li>GDPR data export and erasure support<\/li>\n<li>WordPress privacy policy content integration<\/li>\n<li>Secure \u2014 nonce verification, capability checks, sanitization, escaping throughout<\/li>\n<\/ul>\n\n<h4>Developer Notes<\/h4>\n\n<p>The plugin is built with a clean modular architecture:<\/p>\n\n<ul>\n<li>Entity\/repository pattern for withdrawal records<\/li>\n<li>Centralized eligibility validation engine<\/li>\n<li>Event-driven email architecture<\/li>\n<li>Append-only timeline and notes storage<\/li>\n<li>Controlled status transition system<\/li>\n<li>Core services loaded on all request contexts (frontend, admin, AJAX)<\/li>\n<\/ul>\n\n<h4>About<\/h4>\n\n<p>Web Queenz Withdrawal Manager for WooCommerce is developed by <strong>Ali Adeel<\/strong> and maintained by <a href=\"https:\/\/webqueenz.com\">Web Queenz<\/a>.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to <strong>Plugins \u2192 Add New<\/strong><\/li>\n<li>Search for \"Web Queenz Withdrawal Manager\"<\/li>\n<li>Click <strong>Install Now<\/strong> then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin zip file<\/li>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Upload the zip file and click <strong>Install Now<\/strong><\/li>\n<li>Click <strong>Activate Plugin<\/strong><\/li>\n<\/ol>\n\n<h4>After Activation<\/h4>\n\n<ol>\n<li>Go to <strong>Settings \u2192 Permalinks<\/strong> and click <strong>Save Changes<\/strong> \u2014 this is required once to register the My Account withdrawals endpoint<\/li>\n<li>A \"Withdrawal Requests\" page will be automatically created containing the guest withdrawal portal<\/li>\n<li>Go to <strong>EU Withdrawals \u2192 Settings<\/strong> to configure the plugin for your store<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20eu%20law%20does%20this%20plugin%20support%3F\"><h3>What EU law does this plugin support?<\/h3><\/dt>\n<dd><p>The plugin is designed to help merchants comply with <strong>EU Directive 2011\/83\/EU<\/strong> on consumer rights, specifically the 14-day right of withdrawal for online purchases.<\/p><\/dd>\n<dt id=\"does%20this%20satisfy%20the%20new%20june%2019%2C%202026%20%22withdrawal%20button%22%20law%3F\"><h3>Does this satisfy the new June 19, 2026 \"Withdrawal Button\" law?<\/h3><\/dt>\n<dd><p>Yes. Directive (EU) 2023\/2673 requires a visible, easy-to-use \"Withdrawal Button\" on all online interfaces. This plugin implements the specific two-step confirmation process required by the new law to ensure your store remains compliant before the deadline.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20automatically%20process%20refunds%3F\"><h3>Does this plugin automatically process refunds?<\/h3><\/dt>\n<dd><p>No. The plugin manages the withdrawal request workflow \u2014 receiving, tracking, approving, and communicating with customers. The actual refund processing is handled separately through WooCommerce's standard refund system by the store administrator.<\/p><\/dd>\n<dt id=\"can%20guest%20customers%20%28without%20accounts%29%20submit%20withdrawal%20requests%3F\"><h3>Can guest customers (without accounts) submit withdrawal requests?<\/h3><\/dt>\n<dd><p>Yes. The plugin includes a dedicated guest withdrawal portal. Guests verify their identity using their Order ID and billing email address. The portal can be disabled in settings if not required.<\/p><\/dd>\n<dt id=\"what%20is%20the%20minimum%20withdrawal%20window%3F\"><h3>What is the minimum withdrawal window?<\/h3><\/dt>\n<dd><p>EU Directive 2011\/83\/EU requires a minimum of 14 days. The plugin enforces this minimum \u2014 if you enter a lower value in settings it will automatically be corrected to 14 days.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20woocommerce%20hpos%3F\"><h3>Is this plugin compatible with WooCommerce HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully compatible with WooCommerce High Performance Order Storage (Custom Order Tables). All WooCommerce order operations use WooCommerce-native APIs.<\/p><\/dd>\n<dt id=\"can%20customers%20withdraw%20only%20part%20of%20their%20order%3F\"><h3>Can customers withdraw only part of their order?<\/h3><\/dt>\n<dd><p>Yes. The product selection system supports partial withdrawals \u2014 customers can select individual items and quantities from their order.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20emails%20automatically%3F\"><h3>Does the plugin send emails automatically?<\/h3><\/dt>\n<dd><p>Yes. The plugin sends three types of emails: an admin notification when a new request is submitted, a customer confirmation with a reference number, and a customer notification when their request status changes. All emails can be enabled or disabled individually in settings.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20withdrawal%20data%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens to withdrawal data when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>By default, all withdrawal request data is preserved when the plugin is uninstalled. This protects your operational and compliance records from accidental deletion. If you want data to be deleted on uninstall, enable the \"Delete plugin data on uninstall\" option in Settings \u2192 Advanced before uninstalling.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20gdpr%20compliant%3F\"><h3>Is this plugin GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin provides technical tools to support GDPR compliance including personal data export and erasure (anonymization) support through WordPress and WooCommerce privacy tools. Merchants remain responsible for their own privacy policies and legal compliance obligations.<\/p><\/dd>\n<dt id=\"where%20is%20withdrawal%20data%20stored%3F\"><h3>Where is withdrawal data stored?<\/h3><\/dt>\n<dd><p>All data is stored locally in your WordPress database. The plugin does not send any customer data to external servers.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20email%20templates%3F\"><h3>Can I customize the email templates?<\/h3><\/dt>\n<dd><p>Yes. Email templates can be overridden by placing custom versions in your theme under <code>your-theme\/euwm\/emails\/<\/code>. The same applies to all frontend templates.<\/p><\/dd>\n<dt id=\"the%20%22withdrawals%22%20tab%20is%20not%20appearing%20in%20my%20account.%20what%20should%20i%20do%3F\"><h3>The \"Withdrawals\" tab is not appearing in My Account. What should I do?<\/h3><\/dt>\n<dd><p>Go to <strong>Settings \u2192 Permalinks<\/strong> and click <strong>Save Changes<\/strong>. This flushes WordPress rewrite rules and registers the new endpoint. This is required after installation or major updates.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Complete EU withdrawal request workflow for WooCommerce<\/li>\n<li>Article 11a (Directive (EU) 2023\/2673) two-step withdrawal flow \u2014 \"Withdraw From Contract Here\" statement step followed by a separate \"Confirm Withdrawal\" function<\/li>\n<li>Customer withdrawal buttons on My Account and order detail pages<\/li>\n<li>14-day eligibility validation with configurable window<\/li>\n<li>Item-level and partial withdrawal support<\/li>\n<li>Guest withdrawal portal with secure order ID + email validation<\/li>\n<li>Admin dashboard with requests list table and status management<\/li>\n<li>Controlled status transition system<\/li>\n<li>Append-only activity timeline and admin notes<\/li>\n<li>Bulk actions with validation and feedback<\/li>\n<li>Event-driven email notifications (admin + customer)<\/li>\n<li>HTML email templates with theme override support<\/li>\n<li>WooCommerce HPOS compatibility<\/li>\n<li>GDPR personal data export and erasure support<\/li>\n<li>WordPress privacy policy content integration<\/li>\n<li>Configurable settings panel with EU law enforcement<\/li>\n<li>Data retention setting \u2014 preserve or delete on uninstall<\/li>\n<li>Auto-created guest portal page on activation<\/li>\n<li>My Account withdrawal history tab<\/li>\n<li>WooCommerce order notes integration<\/li>\n<li>Version migration system for safe upgrades<\/li>\n<li>Full security hardening \u2014 nonces, capabilities, sanitization, escaping<\/li>\n<\/ul>","raw_excerpt":"A professional-grade free WooCommerce plugin for EU withdrawal and cancellation directive compliance (EU Directive 2011\/83\/EU).","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/328232","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=328232"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webqueenz"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=328232"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=328232"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=328232"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=328232"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=328232"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=328232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}