A focused, privacy-minimal WooCommerce workflow for receiving electronic contract-withdrawal statements and acknowledging them with a timestamped receipt.
|
|
|
| Guest-accessible withdrawal form | Distinct review and confirmation step | Signed, timestamped receipt |
|
|
| Search and export from your phone | Matched-order details and review-only action |
Screenshots use isolated English and Greek WooCommerce demos with entirely synthetic consumer, order and receipt data.
- Keeps a prominent public action available without login.
- Collects name, order or contract reference, and acknowledgement email.
- Uses a distinct review step and confirmation action.
- Stores an immutable statement snapshot and timestamps.
- Sends the consumer an acknowledgement and notifies the merchant.
- Associates an order only when both its reference and billing email match.
- Supports WooCommerce High-Performance Order Storage (HPOS).
- Exports matching records through WordPress privacy tools.
- Searches merchant records by order, email or receipt reference, with date and workflow-status filters.
- Exports the filtered merchant view as CSV without changing receipts or WooCommerce orders.
It does not decide legal eligibility, enforce a calculated deadline, cancel orders, or issue refunds. The software assists implementation and is not legal advice or a compliance guarantee.
- WordPress 6.2 or newer
- WooCommerce 8.2 or newer
- PHP 7.4 or newer
The current release is tested with WordPress through 7.1 and WooCommerce through 11.1.
- Install and activate WooCommerce.
- Copy
lineweb-withdrawal-for-woocommercetowp-content/plugins/. - Activate the plugin.
- Confirm that the generated withdrawal page is published and publicly accessible.
- Run a real email-delivery test before production use.
Activation creates a page containing [lwfw_withdrawal_form]. The fixed storefront action and optional order/email shortcuts point to this page.
When upgrading from 1.0.0 or 1.0.1, the plugin updates its managed page automatically. If you added [lineweb_withdrawal_form] manually to other pages, widgets or templates, replace it with [lwfw_withdrawal_form] when upgrading. Other content is not rewritten.
The installable ZIP uses WordPress.org language packs and does not bundle translation files. The Greek catalogue and translation template remain in languages/ as contribution sources for translate.wordpress.org. A language pack becomes available after the translation is approved there; the screenshots show the Greek catalogue in a demo installation.
Open WooCommerce > Withdrawals. Search by an order/contract reference, receipt reference or email, combine it with review/email status and date filters, then select Apply filters. Dates include the entire local date recorded on each receipt, even if the store timezone changes later.
Export matching CSV downloads all matching pages, up to 10,000 statements per export. Narrow the date range for larger archives. Export requires the manage_woocommerce capability and a valid request nonce. It contains consumer names, emails, references, timestamps and workflow statuses, but no signed receipt links or full statement text. Keep downloaded files private and apply your store's retention policy.
CSV uses UTF-8 and escapes commas, quotes and line breaks. Formula-like values receive a text prefix; do not enable formulas or assume edited/re-saved files retain the same protection in every spreadsheet application. Export excludes records inserted after it starts; workflow statuses may reflect updates made while it is being generated. It is a management extract, not a transactional audit snapshot or an import format.
An email status of sent means the mailer accepted the message, not that the consumer's inbox received it. No export or filter action sends mail, determines eligibility, changes an order or issues a refund.
- No telemetry or external API calls.
- No persistent IP address or user-agent storage.
- Nonces on both public steps and merchant actions.
- Short-lived, keyed rate limits and confirmation drafts.
- Generic public behaviour when an order cannot be matched.
- Signed public receipt URLs.
- Receipt records are preserved on uninstall unless the site explicitly opts into deletion.
Store owners must define a suitable retention period and assess erasure requests against their own legal obligations.
composer install
composer lint
composer standards
./tools/build-release.shThe release script checks the staged file list and public prefixes before creating a clean ZIP without development dependencies, translations, tests, Git metadata, or private workspace notes. See tests/README.md for disposable WordPress regression tests.
Copyright (C) 2026 Andrew Matia / Lineweb.
Licensed under GPL-2.0-or-later. See LICENSE.
Source by Andrew Matia and Lineweb.





