Directory / plugin

Spotrebiteľské práva pre WooCommerce

v2.8.0 · by onlinefotka

Withdrawal & complaint forms for WooCommerce + EU Legal Guarantee notice (Regulation 2025/1960, mandatory from Sep 2026). Fully EU-compliant.

About this plugin

🇸🇰 Slovenský popis

Tento plugin pridáva do vášho WooCommerce e-shopu online formuláre na odstúpenie od zmluvy a reklamácie, plne v súlade s európskou Smernicou EÚ 2023/2673 a slovenským zákonom č. 108/2024 Z. z. o ochrane spotrebiteľa.

Pre koho je to určené:

Pre slovenských prevádzkovateľov WooCommerce e-shopov, ktorí potrebujú:

  • Splniť zákonnú povinnosť podľa EÚ smernice 2023/2673 (účinná od 19. 6. 2026), ktorá vyžaduje aby každý e-shop mal funkciu „Odstúpiť od zmluvy tu” priamo na webe (nie len PDF na stiahnutie).
  • Zjednodušiť proces reklamácií — zákazník vyplní reklamáciu online, nemusí tlačiť papierový formulár, môže priložiť fotografie vady.
  • Mať poriadok v reklamáciách — všetky odoslané reklamácie sa zhromaždia v administračnom rozhraní, kde môžete vyplniť reklamačný protokol, sledovať stav a vytlačiť oficiálny dokument.

Hlavné funkcie:

  • Zákonná záruka EÚ — nový modul zobrazujúci harmonizované oznámenie podľa Nariadenia Komisie (EÚ) 2025/1960 (povinné od 27. 9. 2026). Kliknúteľné tlačidlo + modálne okno s oficiálnym obrázkom v jazyku stránky (SK/CS/DE/HU/PL/EN). Umiestnenie: košík, pokladňa, stránka produktu, päta. Kompatibilné s WooCommerce Blocks. Shortcode [zakonna_zaruka] pre ľubovoľné umiestnenie.
  • Odstúpenie od zmluvy — formulár cez shortcode [withdrawal_form], tlačidlo „Odstúpiť od zmluvy tu” pri každej objednávke v Mojom účte, automatická kontrola 14-dňovej lehoty (po vypršaní sa tlačidlo skryje), HTML potvrdenie s presným dátumom a časom odoslania (zákonný dôkaz na trvalom nosiči).
  • Reklamácie — kompletný online reklamačný formulár cez shortcode [complaint_form] (alias [reklamacia]), všetky polia zo štandardného slovenského papierového formulára: meno/firma, telefón, e-mail, IBAN, výrobca, model, výrobné číslo, dátum predaja, číslo objednávky/faktúry, popis vady. Voliteľné nahrávanie fotografií vady (drag & drop, JPG/PNG/WEBP/HEIC, do 5 MB).
  • Reklamačný protokol — admin vyplní rozhodnutie (výmena/vrátenie ceny/zamietnutie), dátumy, IBAN na vrátenie. Vytlačiteľný A4 protokol (browser-natívne uloženie do PDF), pripravený na archiváciu.
  • 30-dňová zákonná lehota — plugin posiela 5 dní pred uplynutím automatickú pripomienku adminovi (cez WP Cron). Žiadna pokuta od ÚZP za zameškané reklamácie.
  • Údaje predávajúceho — vyplníte IČO, DIČ, IČ DPH a adresu raz, zobrazuje sa v hlavičke formulárov aj na tlačenom protokole. Berie sa primárne z WooCommerce Nastavenia Všeobecné, voliteľný override.
  • Plne preložené do slovenčiny — formuláre aj admin rozhranie.

Čo plugin NEROBÍ:

  • Automatické refundy ani zmenu stavu objednávky vo WooCommerce
  • Generovanie dobropisov alebo vratových štítkov
  • Napojenie na dopravcov
  • Výnimky z práva na odstúpenie (digitálny obsah, hygienický tovar atď.)

Tieto kroky rieši prevádzkovateľ manuálne podľa svojich obchodných podmienok.

Inštalácia v 3 krokoch:

  1. Aktivujte plugin
  2. Vytvorte 2 stránky a vložte do nich shortcode [withdrawal_form] a [complaint_form]
  3. V Spotrebiteľské práva Nastavenia zadajte URL týchto stránok + vyplňte IČO/DIČ ak ste firma

🇬🇧 English description

This plugin adds online forms for both withdrawal from contract and complaints (reklamácie) to your WooCommerce store, fully compliant with EU Directive 2023/2673 and Slovak Act No. 108/2024 Coll. on consumer protection.

Withdrawal from contract

  • Shortcode [withdrawal_form] — embeddable on any page
  • “Withdraw from contract here” button on every order in My Account (hides after 14 days)
  • Automatic 14-day withdrawal-period check — visual and server-side blocking after expiry
  • Automatic form pre-fill for logged-in customers
  • Order ownership verification: e-mail or postcode for guest checkouts
  • HTML confirmation e-mail with submission date and time (legal proof on a durable medium)
  • HTML notification e-mail to the shop owner — supports multiple recipients (comma-separated)
  • Rate limiting — max 10 attempts per hour per IP (admins bypass)
  • Legally exact button wording per Articles 1 and 3 of the directive

Complaints (reklamácie)

  • Shortcode [complaint_form] (alias [reklamacia])
  • All fields matching the standard Slovak complaint form: buyer details, IBAN, brand, model, serial number, sale date, order number, invoice, defect description
  • Brand and model are optional — focus is on the defect description
  • Separate “Order number” field — auto-filled from order dropdown for logged-in customers, manual text input for guests
  • Optional photo upload with drag & drop (up to 5 photos by default, configurable)
  • Secure photo handling — real MIME-type verification (JPG, PNG, WEBP, HEIC), .htaccess protection, random filename hash, realpath safety check
  • Auto-fill from order selection for logged-in customers (brand, model, sale date, order number, invoice number)
  • Admin complaint list with filter (by status), search (name, e-mail, invoice, order number, ID) and pagination
  • Admin “Reklamačný protokol” form — fill resolution (exchange / refund / rejected), expert assessment contact, dates
  • Status pipeline: New In progress Resolved / Rejected (coloured badges)
  • “Date resolved” is required when closing a complaint (auto-fills today if empty)
  • Internal notes field (private) — visible only to admins, NOT included in print or customer e-mails
  • Delete action with confirmation and disk cleanup of attached photos
  • Optional status update e-mail to customer
  • Printable A4 view — buyer-filled form + protocol on one page (browser-native print to PDF)
  • Seller info settings — IČO, DIČ, IČ DPH, correspondence address (hybrid: WC Store Address + plugin overrides)
  • WP Cron daily reminder e-mail to admin 5 days before the 30-day legal deadline expires (each complaint reminded only once)
  • 30-day legal deadline reminder per Act No. 108/2024 Coll.

EU Legal Guarantee (Zákonná záruka EÚ)

Displays the harmonised notice on the legal guarantee of conformity as mandated by Commission Implementing Regulation (EU) 2025/1960 (mandatory from 27 September 2026 per Directive 2024/825).

  • Trigger button + modal approach — a clickable button opens a modal overlay with the official WebP notice image
  • Language-specific official images included for SK, CS, DE, HU, PL and EN
  • PDF download link — links directly to the EUR-Lex Official Journal PDF; custom URL override available
  • Configurable placement: cart page (below order total), checkout page (above place order button), product page (below Add to cart), site footer
  • WooCommerce Blocks compatible — injected via render_block filter (no JS build step required)
  • Shortcode [zakonna_zaruka] — place the trigger anywhere on the site regardless of the automatic placement settings
  • Admin settings: custom notice image via Media Library, custom PDF URL, configurable trigger text
  • Trigger button inherits the active theme’s .button styles — matches any WooCommerce theme automatically
  • Full accessibility: focus trap, Esc key, role="dialog", aria-modal="true", screen-reader text
  • Page-cache friendly — all output is static PHP, no AJAX calls on page load

Common features

  • Dedicated top-level admin menu “Spotrebiteľské práva” (Consumer Rights) with 3 clean submenus: Withdrawals from contract, Complaints, Settings
  • Database log of all submissions (separate tables for withdrawals and complaints)
  • Full multilingual support (EN, SK, CS, HU, DE, PL) — auto-detected from WordPress Site Language
  • HPOS and legacy WooCommerce compatibility
  • WordPress Privacy Policy integration in GDPR consent
  • Automatic DB schema upgrades — new columns are added on plugin load if missing (no manual SQL needed)

WooCommerce compatibility

The plugin works with both order-storage systems:

  • HPOS (High Performance Order Storage) — new wc_orders tables, WooCommerce 7.1+
  • Legacy — classic storage via WordPress posts/postmeta

Switching is fully automatic. HPOS compatibility is declared via FeaturesUtil — the plugin shows a green compatibility badge in WooCommerce > Settings > Advanced.

Legislation

The plugin is designed in compliance with:

  • EU Directive 2023/2673 (effective 19 June 2026)
  • Slovak Act No. 108/2024 Coll. on consumer protection (replaced Act No. 102/2014 Coll. effective 1 July 2024)
  • Commission Implementing Regulation (EU) 2025/1960 — harmonised notice on the legal guarantee of conformity (mandatory from 27 September 2026 per EU Directive 2024/825)

What the plugin does NOT do

  • Exceptions from the right of withdrawal (digital content, hygiene goods, etc.)
  • Automatic refunds or order status changes in WooCommerce
  • Generating credit notes or return labels
  • Carrier integration

These steps are handled by the shop owner manually according to their terms and conditions.

Usage

Withdrawal from contract:

  1. Create a page and insert the shortcode [withdrawal_form]
  2. In Consumer Rights Settings, enter the URL of that page
  3. Add a link to that page in your site footer

Complaints (reklamácie):

  1. Create a separate page and insert the shortcode [complaint_form]
  2. In Consumer Rights Settings, enter the URL of that page
  3. Fill in the Seller info section (IČO/DIČ if applicable) — these details appear on the printed protocol

EU Legal Guarantee notice — [zakonna_zaruka] shortcode:

The EU Legal Guarantee trigger button is added automatically on Cart and/or Checkout once you enable the module in Settings. For any other location — a custom page, a widget, a page builder block — use the shortcode [zakonna_zaruka]:

[zakonna_zaruka] — outputs the trigger button; the modal is automatically included in the page footer

No attributes needed. The module must be enabled in Consumer Rights Settings EU Legal Guarantee for the shortcode to output anything.

Withdrawal link in WooCommerce emails (YayMail / email customizers):

Use the [withdrawal_link] shortcode inside any WooCommerce email template (YayMail, Kadence Emails, Email Customizer for WooCommerce, etc.) to insert a pre-filled link to the withdrawal form. The link automatically includes the correct order key so the customer lands on the form with their order pre-filled.

[withdrawal_link] — inserts a link with the default label "Withdraw from contract"
[withdrawal_link label="Cancel order"] — custom link text
[withdrawal_link label="Withdraw" class="btn btn-primary"] — with CSS class(es) on the `<a>` tag

The shortcode only works inside WooCommerce transactional emails (e.g. Order Completed). It reads the current order from the email context automatically. Outside of an email context it returns an empty string. The withdrawal form page URL must be configured in Consumer Rights Settings.

Plugin tags