Описание
Ångerrätt SE for WooCommerce gives Swedish WooCommerce stores a complete, self-service workflow for the statutory right of withdrawal under the Distance Contracts Act (distansavtalslagen).
A dedicated withdrawal page lets the customer:
- Enter their email address and receive a one-time verification code (OTP).
- Verify their identity by entering the code.
- Select an eligible order from the last 30 days and submit the withdrawal request.
When a request is submitted, the plugin records it, sets a dedicated order status, sends the customer a confirmation email (a legal receipt) and notifies the store. All emails use the standard WooCommerce email template so they match the rest of your store’s messaging.
Key features
- Dedicated withdrawal page (
/angra-kop/) created automatically on activation. - Customer verification via a one-time code (OTP) sent to the order’s email address — no login required. Works for both registered users and guests.
- Extensive exclusion options for custom-made products where the right of withdrawal does not apply. Exclusions can be set by tag, product category or individual products.
- Timestamped confirmation email sent automatically to the customer, listing products, price and shipping cost — serves as a legal acknowledgement of receipt.
- Admin notification on every withdrawal request, with a direct link to the order.
- Automatic order status update in the WooCommerce order view.
- Right-of-withdrawal information shown at checkout and on the order confirmation page.
- Configurable time limit as fallback. Buffer days approximate the delivery time; the exact delivery date is checked manually with your carrier. Automatic delivery-date lookup via Sendify and Fraktjakt is planned for the premium version.
- Contact details from the admin panel printed automatically on all pages in the withdrawal flow.
- Two display modes — Hook (WooCommerce standard) or Floating tab. The floating tab works regardless of theme and page builder, including Klarna Checkout.
- GDPR-friendly — withdrawal data is deleted automatically after a configurable number of months (default 36), and the records are covered by WordPress’s own personal-data export and erase tools. You choose whether the data is removed when the plugin is uninstalled.
This plugin is built for the Swedish market and its interface texts are in Swedish.
Установка
- Upload the plugin files to the
/wp-content/plugins/angerratt-se-for-woocommercedirectory, or install the plugin through the WordPress Plugins screen directly. - Activate the plugin through the Plugins screen in WordPress.
- A withdrawal page (
/angra-kop/) containing the[ngersefo_angerratt]shortcode is created automatically on activation. - Go to WooCommerce Ångerrätt to configure exclusions, the withdrawal window, contact details and display options.
WooCommerce 10.5.3 or later is required (this includes the security fix for CVE-2026-3589).
Часто задаваемые вопросы
-
Which page do customers use?
-
On activation the plugin creates a page at
/angra-kop/containing the[ngersefo_angerratt]shortcode. You can move the shortcode to any page you like. -
Does it support guest orders?
-
Yes. Identity is verified with a one-time code sent to the order’s email address, so customers do not need an account.
-
Is partial return supported?
-
Yes. Partial returns are optional and disabled by default — the plugin then registers a full withdrawal of the selected order, exactly as before. When you enable partial returns under WooCommerce Ångerrätt, the customer gets a checkbox in front of each eligible product in the confirmation step and can withdraw only the items they choose. The order total is recalculated to reflect the selected products, and you can choose per store whether the shipping cost is refunded on a partial return.
-
Where is the data stored?
-
Withdrawal requests are stored in a dedicated table in your own WordPress database. Records are removed automatically after the retention period you set in the settings.
Отзывы
Участники и разработчики
«Ångerrätt SE for WooCommerce» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
Участники«Ångerrätt SE for WooCommerce» переведён на 1 язык. Благодарим переводчиков за их работу.
Перевести «Ångerrätt SE for WooCommerce» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
1.7.13
- New: the verification code, the customer receipt and the store notification are now proper WooCommerce email types. They appear under WooCommerce Settings Emails with their own subject, heading and format, can be previewed, and are rendered through WooCommerce’s own template and styles like every other store email. The store notification can be switched off; the two customer emails cannot, because a withdrawal cannot be completed without the code and the Distance Contracts Act requires an acknowledgement of receipt.
- Fix: placeholders such as
{site_title}were printed literally in the footer of the customer’s acknowledgement, and the emails were sent without WooCommerce’s inline styles. Both came from rendering WooCommerce’s templates outside its email system; the emails now go through it. - New: plain-text versions of all three emails, for recipients whose client requests them.
1.7.12
- Fix: the plugin no longer forces its own «From» header on outgoing email. It previously copied WooCommerce’s sender address into every message, which overrode the site’s own mail configuration: SMTP plugins and hosts that rewrite the sender to an address they are allowed to send for leave an explicitly set From alone. The result was that a store’s order emails were delivered while this plugin’s emails were sent unauthenticated and rejected by the recipient — silently, because WordPress reports such a send as successful. The plugin’s emails now inherit whatever sender the site already uses. If your order emails arrive, these do too.
- New:
ngersefo_email_headersfilter for anyone who does want to set the sender in code.
1.7.11
- New: explanatory text under the Exclusions, Time limit and Return options headings in the settings screen.
- New: setting under Dataskydd for whether the plugin’s table and options are removed when the plugin is uninstalled. Default is off — data is kept, exactly as before. Deactivating the plugin never removes anything.
- New: withdrawal records are now covered by WordPress’s personal data export and erase tools, and the plugin contributes suggested text to the site’s privacy policy.
- Fix: the floating tab is 50% larger in all three sizes. The previous sizes were too small to read comfortably.
- Fix: the internal version constant was still 1.7.9 in the 1.7.10 release. It controls the cache-busting version on the plugin’s CSS and JavaScript, so style changes did not reach returning visitors, and it gated the automatic database upgrade. Now follows the plugin version.
- Fix: the withdrawal page is no longer deleted on activation. Since 1.7.3 every activation permanently deleted any existing withdrawal page — past the trash — and created a fresh, empty one, which discarded any changes the store had made to it. An existing page is now reused, and the shortcode is appended only if it is missing.
- Fix: choosing the custom colour for the floating tab without touching the colour picker saved no colour at all.
- Fix: the display method, tab positions and tab size are now validated against their allowed values on save.
- Fix: step one of the withdrawal flow returned a session token only when the email address had an eligible order, which made it possible to tell registered addresses apart despite the deliberately neutral message. All responses are now identical.
- Tweak: the plugin now calls itself «Ångerrätt SE for WooCommerce» everywhere. The admin heading and the activation errors said «Woo Ångerrätt».
1.7.10
- Hardening: sanitize the selected-items input on submission, use a
$wpdb->prepare()placeholder for the internal table name, and remove a redundantsuppress_filtersflag. No functional changes.
1.7.9
- Tweak: the two withdrawal tabs in the order list are now told apart — WooCommerce’s built-in status filter is labelled «Ångerbegäran Nya» (orders still awaiting handling) and the new full view is «Ångerbegäran Alla». Only the tab labels change; the order status itself is unchanged.
1.7.8
- New: a «Ångerbegäran» tab with a counter above the WooCommerce order list shows every order that has ever had a withdrawal request, regardless of its current status (they no longer disappear from view when the status changes). Works with both HPOS and classic order storage.
1.7.7
- Fix: reverted the settings field widths to the simple inline approach that worked in 1.7.3 (25% width) with an added minimum width so they no longer compress on mobile, and a cap so they never overflow the screen. All fields share the same width again.
1.7.6
- Fix: the settings field width rules are now enforced so they reliably win over the active WooCommerce/theme admin styles. In some setups the previous rules were overridden, leaving the fields full width; they now consistently share one capped, responsive width.
1.7.5
- Fix: all settings fields now share one consistent width. Text inputs, textareas and the product/tag selectors are capped at the same maximum (the reference field width) so none is wider than the others, have a minimum width so they stay usable, and never extend past the screen edge on phones. The product category grid also collapses to a single column on small screens.
1.7.4
- Fix: settings fields no longer use a fixed 25% width that collapsed on phones and narrow browser windows. Text inputs and textareas now use the responsive WordPress core classes (regular-text/large-text) and the product/tag selectors fill the available column up to a sensible maximum, so the settings screen is usable on mobile.
1.7.3
- On activation the withdrawal page is always (re)created cleanly: any earlier withdrawal pages (slugs angra-kop, angra-kop-N and woo_angerratt) are permanently deleted first, then a fresh «Ångra ett köp» page with the [ngersefo_angerratt] shortcode is created.
- New: optional partial returns. Enable it under WooCommerce Ångerrätt to let customers select individual products to withdraw via checkboxes in the confirmation step, with the order total recalculated for the selected items.
- New: per-store setting for whether the shipping cost is refunded on a partial return (full returns always refund shipping).
- New: the article number (product SKU, or the WooCommerce product ID as a fallback) is shown under each product name on the withdrawal page and in both the customer and admin emails.
- New: the shipping method name is printed under the shipping line on the withdrawal page and in both emails.
- The withdrawal request now records the return type and shipping handling for traceability.
1.7.2
- OTP verification no longer relies on PHP sessions; it now uses a transient keyed by a one-time token, which is more reliable across caching and hosting setups.
- Output escaping, input unslashing/sanitization and
wp_parse_url()usage brought fully in line with the WordPress coding standards.
1.7.1
- Public release prepared for the WordPress.org directory.
- Removed the external license check and the bundled update mechanism (updates are handled by WordPress.org).
- Internationalization, database and nonce handling reviewed against the WordPress coding standards.
