Entry
The customer opens the withdrawal page through a shortcode, button, Gutenberg block, widget, Elementor widget or the WooCommerce My Account area.
WooCommerce plugin · functional reference
This documentation explains what the plugin provides for shop owners, admins and customers. It is intentionally structured like a functional/API reference: modules, purpose, behavior, inputs, outputs, common use cases and boundaries.
Checked version: Aligned with Lite version 1.0.13 and Pro version 1.0.3. Registered shortcodes: [wmwiderrufsmanager_formular] and [wmwiderrufsmanager_button]. Registered Gutenberg blocks: widerrufsmanager/revocation-form and widerrufsmanager/revocation-button.
The customer opens the withdrawal page through a shortcode, button, Gutenberg block, widget, Elementor widget or the WooCommerce My Account area.
Lite validates order number and billing email. PRO can optionally add order date, billing name/company or billing postcode to the verification flow.
Eligible order items are displayed. Partial quantities and partial withdrawals are supported. In Pro, optional reasons can be captured per item.
The request is stored, logged in the history and optionally confirmed by email.
The admin reviews the request in the backend and decides per item or for the complete request.
Status, history, emails, optional PDFs, exports, privacy tools and the refund helper provide traceability.
revocation_requestA withdrawal case. It stores the order reference, customer data, status, withdrawal type, customer message, admin note, timestamps, privacy/anonymization state, optional alternative notification email and the selected items as structured data.
orderThe WooCommerce order. It is the source for order number, billing email, order status, order date, line items, quantities, billing name/company, postcode and customer data.
itemA single order line with product name, SKU, product ID, variation ID, order item ID, purchased quantity, requested quantity, optional reason group, optional reason/note and the later admin decision.
history_eventInternal evidence for events such as submission, status changes, decisions, email dispatch, anonymization or deletion.
WMWRM_Admin::render_dashboard_page()admin.php?page=wmwrm-dashboardThe dashboard is the compact starting point of the plugin. It combines setup status, shortcodes, support links and quick access to the most important working areas. Since Lite 1.0.13 the dashboard area has been visually modernized and includes a direct tutorial entry point.
Shop owners quickly see whether the required process is configured, where the shortcodes can be copied, whether open withdrawal requests need attention and where tutorial videos are available.
| Setup | Links to settings, compliance check and form/button integration. |
|---|---|
| Tutorials | Links to the official YouTube playlist for setup and usage guidance. |
| Daily work | Links to open withdrawals, the request overview and extension management. |
| Support | Provides FAQ and support entry points without mixing operational documentation with licensing details. |
Lite 1.0.13 also registers a compact WordPress dashboard widget titled “WM Widerrufsmanager”. It shows the most important withdrawal KPIs directly on the main WordPress dashboard.
| KPI cards | Total, Open, Approved and Rejected. Each complete card is clickable and opens the filtered withdrawal overview. |
|---|---|
| Lite display | If PRO is not active, the widget shows a subtle hint for statistics and exports in WM Widerrufsmanager PRO. |
| PRO active | If PRO 1.0.3 is active, the teaser is replaced by a real PRO statistics summary with current-month count, top product, top reason and actions for statistics and export. |
Lite 1.0.13 also adjusts the admin footer review hint: the line is more subtle, italic and highlights “WM Widerrufsmanager” typographically.
[wmwiderrufsmanager_formular]widerrufsmanager/revocation-formWMWRM_Shortcode::render()The form is the central intake channel for withdrawal requests. It replaces unstructured email requests with a controlled process: order validation, item selection and properly stored data.
| Inputs | Order number, billing email, selected item quantities, optional message/withdrawal statement and confirmation. PRO can additionally request order date, billing name/company, billing postcode and an alternative notification email address. Depending on the mapping source, the entered order number can be interpreted as a WooCommerce order ID, an automatically detected order number or a custom order number stored in configured meta keys. |
|---|---|
| Checks | Order exists, the entered order number is mapped correctly, verification data matches the order, status is allowed, deadline is valid, remaining quantities are available and no blocking open/approved withdrawal exists. PRO can also use a signed verification token between lookup and final submission. |
| Output | A new withdrawal record with status pending, a history entry and optional customer/admin emails. |
| Use cases | Dedicated withdrawal page, footer link, help/service area or a legally relevant self-service page. |
[wmwiderrufsmanager_button]widerrufsmanager/revocation-buttonWMWRM_Button_WidgetThe withdrawal button is a flexible entry point to the configured withdrawal page. It can be placed wherever customers should be able to start the process.
For classic pages, theme templates, builder content or manual embedding.
For native WordPress block editing without manual shortcode input.
For sidebars, footers or other widget areas provided by the theme.
| Purpose | Fast and consistent entry point to the withdrawal form. |
|---|---|
| Configuration | Button text, target page and design values are taken from the plugin settings. |
| Attributes | text, class, background and text_color can override specific shortcode output. |
WMWRM_Order_Validator::validate_lookup()WMWRM_Order_Validator::is_revocation_allowed()WMWRM_Order_Validator::get_revocable_items()Order validation is the functional gatekeeper. It determines whether an order may be opened for withdrawal and which positions are selectable.
WMWRM_AdminWMWRM_Database::update_decision()WMWRM_Database::append_history()The admin area is the working interface for incoming withdrawal requests. Requests can be filtered, opened, reviewed, decided and documented.
List of requests with status, order number, customer data, submission date and actions.
Shows order, customer data, message, items, quantities, history and decision controls.
Admins can approve, reject or partially approve individual items and quantities.
Internal or customer-facing decision text used for evidence and email communication.
Sets the request to approved, partially approved or rejected.
Submission and later decisions can also be documented as order notes.
WMWRM_Email::send_customer_received()WMWRM_Email::send_admin_received()WMWRM_Email::send_customer_decision()Basic emails inform customers and admins about receipt and decision of a withdrawal request. They contain order reference, customer data, status and item information.
| Trigger | Purpose | |
|---|---|---|
| Customer receipt confirmation | After form submission | Confirms that the request was received. |
| Admin notification | After form submission | Notifies the shop owner about a new request. |
| Customer decision email | After admin decision | Communicates approval, partial approval or rejection. |
Pro extends this area with visual templates, logo, colors, custom HTML content, test emails, CC/BCC and Reply-To.
WMWRM_Settingswmwrm_settingsThe settings control the complete base process: form, target page, button, withdrawal deadline, email behavior, frontend texts and privacy options.
The extensions page lists Lite and Pro modules, explains availability and provides entry points to related settings. It gives admins one place to understand which parts of the system are active.
| Lite core modules | Form, button, dashboard, admin workflow, basic emails, privacy basics and compliance check. |
|---|---|
| Pro modules | Rules, reasons, advanced emails, PDF evidence, analytics, GDPR automation, My Account, Elementor, refund helper and security features. |
The check helps shop owners verify whether the basic withdrawal process is technically configured. It checks form page, button/link availability, relevant texts and process settings.
| Checked areas | Form page, shortcode/block output, button entry point, email settings, deadline settings and privacy configuration. |
|---|---|
| Result | Clear status messages and links to the settings that need attention. |
The Lite privacy tools cover retention duration, anonymization/deletion behavior and optional storage of technical data. The plugin integrates with WordPress privacy tools for personal data export and erasure.
The optional order column shows whether a WooCommerce order has related withdrawal activity. It helps admins see relevant cases directly in the order overview.
Rules define whether specific products, categories or product tags are excluded from the withdrawal process or should show specific handling messages.
Useful for digital products, made-to-order products, special product groups or cases that require manual review instead of automatic selection.
Optional reasons let customers select a voluntary reason per withdrawal item. The field remains optional so the legal withdrawal is not made dependent on a reason.
Reason data helps identify wrong sizes, wrong colors, defective products, accidental duplicate orders or product-specific quality issues without forcing customers to justify the withdrawal.
The Statistics tab analyzes selected reasons and product behavior directly in the Withdrawal reasons area. It uses the currently selected filters and shows KPIs, top reasons, top products, reason groups, monthly trend and a product × reason matrix.
The export modal lets admins choose exactly which dataset should be exported. Available export types include full report, top reasons, top products, product/reason analysis, reason groups, monthly trend and raw/detail export. The export respects the active filters and can be further narrowed by product/SKU or reason text.
The template builder improves the visual appearance and content control of withdrawal emails. It supports logo, colors, custom text, HTML mode, placeholders, test emails and template-specific PDF attachments.
Logo, header color, accent color, footer text and base layout create a consistent email appearance.
Receipt confirmation, admin notification and customer decision emails can use dedicated subjects and content blocks.
Important placeholders: {order_number}, {customer_name}, {status_label}, {items}, {reason}, {admin_note} and template-specific variables.
Advanced email settings allow additional admin recipients, CC/BCC addresses and Reply-To configuration. This is useful when support, legal, warehouse or accounting teams need copies of specific messages.
PDF documents create structured evidence for submission, decision and internal documentation. They can be downloaded in the admin area and optionally attached to emails.
The Analytics & export area provides broader withdrawal reporting independent from the specialized reason statistics. It supports filtering, KPI summaries and CSV downloads.
One row per withdrawal case with request, order, customer, status, quantities, reasons and summary information.
One row per withdrawal item with product, SKU, quantities, reason group, selected reason, decision and notes.
PRO 1.0.3 exposes the most important analytics data to the Lite dashboard widget. The admin can therefore see a compact PRO statistics summary on the main WordPress dashboard without opening the full analytics and export area first.
| Current month | Shows the number of withdrawals in the current month. |
|---|---|
| Top product | Shows the most affected product in the current monthly context. |
| Top reason | Shows the most frequent optional withdrawal reason if reasons are used and can be evaluated. |
| Actions | Direct buttons open the full statistics view and the export area. |
GDPR automation extends the basic retention logic with status-based rules, preview/simulation, manual execution, optional cron automation and an audit log.
| Open requests | Retention can be shorter or longer depending on business requirements. |
|---|---|
| Decided requests | Approved, partially approved and rejected requests can use separate retention values. |
| Actions | Anonymize personal data or delete eligible records after the retention period. |
| Audit log | Documents previewed and executed cleanup actions. |
The My Account integration gives logged-in customers a structured place to start withdrawals and review previous withdrawal requests.
Customers can open the withdrawal flow from their account and reuse relevant order context.
Customers can see status, scope, items and key dates of past requests.
Elementor widgets allow designers to place the withdrawal button or full form directly in Elementor layouts.
| Button widget | Configurable entry point to the withdrawal page. |
|---|---|
| Form widget | Renders the complete withdrawal form in Elementor. |
The refund helper supports admins after an approved or partially approved decision. It summarizes affected items, quantities and estimated amounts and links to the WooCommerce refund screen.
The module does not blindly execute payment refunds. It prepares and documents the refund workflow.
Security Plus protects the public order lookup against excessive attempts and extends public order validation with flexible verification methods. It also includes order-number mapping for shops that display sequential, custom or third-party order numbers instead of the internal WooCommerce order ID.
| Rate limit | Limits order lookup attempts within a time window and temporarily blocks excessive requests. |
|---|---|
| Flexible verification | The order number remains mandatory; email address, order date, billing name/company or billing postcode can be requested additionally. |
| Verification modes | Supports order number + email, order number + order date, order number + name/company, combinations with postcode and stricter multi-field checks. |
| Alternative notification email | Optional form field for another recipient address for confirmations and later status updates. |
| Verification token | Signs the successful lookup so the final submission cannot simply be repeated with manipulated order data. |
| Frontend message | Configurable message shown to customers after too many lookup attempts. |
| Log | Shows blocked lookup attempts with timestamp, type, masked data and reason. Admins can clear the security log. |
| Admin UI | The page is organized into tabs: rate limit, verification, order-number mapping and log. A compact configuration overview shows the most important active settings. |
Mapping defines how the order number entered in the public form is assigned to a WooCommerce order. This is especially important when customers see a custom number generated by a custom-order-number plugin instead of the internal WooCommerce order ID.
| Automatic detection | Default mode. The plugin checks the WooCommerce order ID and known order-number meta keys without broadly scanning all orders on each form request. |
|---|---|
| WooCommerce order ID | Uses only the internal technical WooCommerce order ID. Use this when customers see that exact number in emails and account pages. |
| Custom order number via meta key | Uses only the configured meta keys. The active custom meta-key field is shown only in this mode. |
| Active meta keys | One meta key per line. Only these keys are queried in custom-meta-key mode, keeping the public lookup fast. |
| Inspect meta keys | The button scans recent WooCommerce orders for likely custom order-number fields. Found keys are shown as selectable options and can be added to the active list. |
| Test mapping | Admins can enter an order number exactly as a customer would. The test shows whether a matching WooCommerce order is found and which source was used. |
| Entry point | Edition | Purpose |
|---|---|---|
[wmwiderrufsmanager_formular] | Lite | Full withdrawal form. |
[wmwiderrufsmanager_button] | Lite | Button to the configured withdrawal page. |
| Gutenberg form block | Lite | Place the form without manual shortcode entry. |
| Gutenberg button block | Lite | Place the button without manual shortcode entry. |
| WordPress button widget | Lite | Button in sidebar, footer or widget area. |
| Elementor button widget | Pro | Button inside Elementor. |
| Elementor form widget | Pro | Form inside Elementor. |
| WooCommerce My Account integration | Pro | Customer account overview for starting and viewing withdrawals. |
| Status key | Label | Meaning |
|---|---|---|
pending | Open / under review | The request has been submitted but not finally decided. |
approved | Approved | The request was fully accepted. |
partially_approved | Partially approved | Only selected items or quantities were accepted. |
rejected | Rejected | The request was not accepted. |
The export feature distinguishes between standard CSV, detail CSV and specialized reason-statistics exports. Standard CSV is case-based, detail CSV is item-based, and reason-statistics exports focus on reasons, products, reason groups, trends or raw data depending on the selected export type.
Withdrawal ID, submitted date, updated date, decision date, status, order number, order ID, customer, email, withdrawal type, privacy status, message, admin note, number of items, product names, SKUs, requested/approved/rejected quantities, optional reasons, reason groups, reason notes, item decisions and item details.
One row per item with withdrawal ID, order, customer, product name, SKU, product ID, variation ID, order item ID, requested quantity, approved quantity, rejected quantity, optional reason group, optional reason, optional reason note, item decision and item note.
Depending on export type: period, status filter, withdrawal type, product/SKU filter, reason filter, KPI values, reason group, reason label, product name, SKU, product ID, requests, positions, quantity, share, month and detail rows.
load_plugin_textdomain()languages/*.potlanguages/*-de_DE.polanguages/*-de_DE.moLite and Pro are prepared for multilingual operation. Source code should use English source strings while German and other languages are delivered through WordPress language files.
.po and .mo files.wm-widerrufsmanager; Pro can provide its own translation files.__(), esc_html__(), esc_attr__() or _n().esc_html(), attributes with esc_attr().Lite includes the standard validation for regular WooCommerce orders. PRO expands this area with additional protection, verification and mapping features for shops with custom order numbers or higher security requirements.
| Functional area | Lite | Pro | Internal value |
|---|---|---|---|
| Withdrawal form | Yes | Yes | Structured intake through order validation, form logic and item selection. |
| Withdrawal button | Yes | Yes | Central entry point through shortcode, block or widget. |
| WordPress dashboard widget | Yes | Extended | Lite 1.0.13 shows Total, Open, Approved and Rejected. PRO 1.0.3 adds current-month statistics, top product, top reason and direct statistics/export actions. |
| Modern quickstart with tutorial link | Yes | Yes | Setup status, key steps and YouTube tutorials are combined directly in the dashboard. |
| Gutenberg blocks | Yes | Yes | Block editor integration without manual shortcode knowledge. |
| Order and deadline validation | Yes | Yes | Prevents unsuitable, duplicate or out-of-deadline requests. |
| Standard order validation by order number and email | Yes | Yes | Lite includes the basic WooCommerce order check with billing email validation. |
| Flexible verification methods | No | Yes | PRO can use additional verification values such as order date, billing name/company or billing postcode. |
| Security Plus / rate limit | No | Yes | Limits public lookup attempts and helps reduce misuse, automated checks and avoidable support cases. |
| Log of blocked lookup requests | No | Yes | Blocked verification attempts become more transparent so admins and support teams can react faster. |
| Custom order-number mapping | Basic detection | Advanced | Helps shops with sequential or custom order numbers map customer input to the correct WooCommerce order. |
| Meta-key inspection for custom order-number plugins | No | Yes | Relevant order meta keys can be discovered, reviewed and activated for mapping. |
| Order-number mapping test | No | Yes | Admins can test whether a visible order number resolves to the correct internal WooCommerce order. |
| Partial quantities and partial withdrawals | Yes | Yes | Supports multi-item orders, variations and item quantities. |
| Admin management | Yes | Yes | Review, decisions, notes, history and traceability. |
| Item-level decisions | Yes | Yes | Approve or reject per item and quantity. |
| Basic emails | Yes | Yes | Automatic receipt and decision information. |
| Product/category/tag exclusions | No | Yes | Maintain withdrawal exclusions centrally and traceably. |
| Optional withdrawal reasons | No | Yes | Voluntary reason selection per item with reason groups, product visibility, statistics and CSV export. |
| Email template builder | No | Yes | More professional emails with layout, logo, colors, placeholders and HTML mode. |
| Additional PDF attachments per email template | No | Yes | Send static PDFs such as return instructions or checklists with selected emails. |
| Multiple recipients / CC / BCC / Reply-To | No | Yes | Improves internal routing for support, legal or accounting workflows. |
| PDF evidence | No | Yes | Downloadable and email-ready evidence for submission, decision and internal documentation. |
| Analytics & export | No | Yes | CSV export, detail reports, KPIs and specialized reason/product statistics. |
| GDPR automation | Basic | Advanced | Status-based retention, simulation, audit log and optional cron automation. |
| My Account integration | No | Yes | Customers can start and review withdrawals in their WooCommerce account. |
| Elementor widgets | No | Yes | Designer-friendly placement of button and form. |
| Refund helper | No | Yes | Supports amount and item reconciliation before WooCommerce refunds. |