Je wilt een herroepingsknop in WooCommerce en je merkt: standaard zit hij er niet in. Klopt. WooCommerce levert de webshop, maar de knop waarmee een klant zijn aankoop binnen de bedenktijd kan annuleren moet je zelf toevoegen. Je hebt drie routes: zelf bouwen met custom code, een handmatig formulier of PDF, of een kant-en-klare plugin. Voor de meeste shops is een plugin het snelst en het veiligst. Hieronder lees je per route de voor- en nadelen, waar de knop technisch hoort, en een concrete stap-voor-stap om het werkend te krijgen.
Waarom WooCommerce geen herroepingsknop heeft
WooCommerce is een algemene webshop-engine voor de hele wereld. De regels rond herroeping verschillen per land en per markt. Daarom bouwt het kernteam geen kant-en-klare herroepingsknop in. Je krijgt de bouwstenen (orders, accountpagina’s, e-mails, hooks) maar niet de juridische invulling.
Sinds 19 juni 2026 is een online herroepingsknop EU-breed verplicht voor de meeste consumentenwebshops. De kern van de regel: online annuleren moet net zo makkelijk zijn als online bestellen. Een klant die in drie klikken afrekent, mag niet plotseling een PDF moeten downloaden, invullen, en per post versturen om te herroepen. De knop moet bereikbaar zijn gedurende de bedenktijd van 14 dagen. Wat dit precies betekent en voor wie, staat in onze uitleg over de herroepingsknop die sinds 2026 verplicht is.
Het gevolg voor jou als shop-eigenaar: je moet zelf iets toevoegen. De vraag is alleen wat. Daarvoor moet je eerst weten waar de knop hoort te staan.
Waar de knop technisch hoort te staan
De eis “even makkelijk als bestellen” vertaalt zich naar concrete plekken in WooCommerce. Een knop ergens diep in de footer telt niet. De klant moet de knop tegenkomen op het moment dat hij erover nadenkt. Twee plekken zijn logisch en samen dekkend.
De bedankpagina (order-received)
Direct na het afrekenen landt de klant op de order-received pagina (de bedankpagina). Hier staat zijn order vers in beeld. Dit is de eerste plek waar een herroepingsknop hoort. Technisch hang je content onder de ordertabel via de hook woocommerce_order_details_after_order_table. Die hook geeft je het WC_Order-object, dus je weet welke order het is en kunt de knop koppelen aan dat ordernummer.
Mijn account en het orderoverzicht
De tweede plek is het klantaccount. Onder Mijn account ziet de klant zijn orders, en per order een detailweergave (de view-order endpoint). Hier hoort de herroepingsknop terug te komen, want dagen later komt de klant niet meer op zijn oude bedankpagina, maar wel op zijn account. Een knop in de orderrij voeg je toe met de filter woocommerce_my_account_my_orders_actions. Een eigen pagina voor het herroepingsverzoek bouw je als endpoint met wc_get_endpoint_url() en de actie-hook woocommerce_account_<endpoint>_endpoint.
Kortom: bedankpagina plus accountpagina. Mis je een van de twee, dan loop je het risico dat een toezichthouder oordeelt dat de knop niet “tijdens de bedenktijd bereikbaar” was. Het verschil tussen een nette herroepingsknop en de oude stopknop voor abonnementen lees je in onze vergelijking van de herroepingsknop tegenover de stopknop.
Route 1: zelf bouwen met custom code
Je bouwt de knop zelf, in een child-theme of een kleine eigen plugin. Je hangt hem via de hooks hierboven op de juiste plekken, je maakt een formulier of endpoint voor het verzoek, en je regelt zelf de bevestigingsmails en de vastlegging bij de order.
Voordelen
- Volledige controle over uiterlijk, gedrag en data.
- Geen extra plugin, dus geen afhankelijkheid van een externe maker.
- Past precies in je eigen theme-structuur (geen losse mu-plugin nodig, alles als module in het theme).
Nadelen
- Het kost echte ontwikkeltijd, en daarna onderhoud bij elke WooCommerce-update.
- Je moet zelf de juridische eisen borgen: de knop op beide plekken, de juiste bevestiging, de vastlegging met datum en tijd, en meertaligheid.
- Eén vergeten randgeval (gastbestellingen zonder account, een afwijkend theme-template) en je voldoet net niet.
Deze route is geschikt als je al een ontwikkelaar in huis hebt en bijzondere wensen hebt die geen enkele plugin dekt. Voor de meeste shops is het duurder en risicovoller dan het lijkt, want de juridische randjes zitten precies in de details die je snel over het hoofd ziet.
Route 2: handmatig formulier of PDF
De snelste route op papier: je maakt een pagina met een herroepingsformulier, of je biedt een PDF aan die de klant kan downloaden, invullen en mailen. Een link in de footer of in de algemene voorwaarden, en klaar.
Voordelen
- In een half uur opgezet, zonder code.
- Geen technische afhankelijkheden.
Nadelen
- Groot risico dat het niet voldoet. Een PDF of los formulier dat de klant zelf moet opzoeken is juist niet “even makkelijk als bestellen”.
- De knop staat niet bij de order zelf, dus de klant moet zoeken.
- Geen automatische vastlegging bij de order, geen automatische bevestigingsmail.
Dit was jarenlang de standaard, en precies daarom is de wet aangescherpt. Een verstopt formulier voldoet sinds 2026 vrijwel nooit meer. Wat je riskeert als je de knop niet of niet goed regelt, en hoe de ACM daarnaar kijkt, staat in ons stuk over het risico van geen herroepingsknop.
Route 3: een kant-en-klare plugin
Je installeert een plugin die de knop op de juiste plekken zet en het verzoek netjes afhandelt. Voor de meeste shops is dit de beste verhouding tussen snelheid, kosten en zekerheid.
Voordelen
- Binnen een uur live, zonder eigen code.
- De knop staat op de bedankpagina en in Mijn account, op de juiste hooks, zonder dat je ze zelf hoeft te kennen.
- Bevestigingsmails naar klant en shop, en vastlegging van het verzoek bij de order met datum en tijd.
- Updates volgen mee met wetgeving en WooCommerce-versies.
Nadelen
- Een terugkerende licentiekost (vaak een paar tientjes per jaar).
- Je kiest een afhankelijkheid, dus de kwaliteit van de plugin telt.
Onze eigen Herroepingsknop Pro (39 euro per jaar) zet de knop op beide plekken, regelt de mails en de vastlegging, en werkt meertalig. Wil je hem laten installeren en instellen zonder zelf te prutsen, dan regelen wij dat. Een compleet overzicht van de opties staat op onze pagina over de herroepingsknop voor WooCommerce.
De drie routes vergeleken
| Route | Snelheid | Kosten | Onderhoud | Compliance-risico | Geschikt voor |
|---|---|---|---|---|---|
| Zelf bouwen | Traag (dagen) | Hoog (ontwikkeluren) | Jij, doorlopend | Gemiddeld tot hoog | Shops met eigen developer en bijzondere wensen |
| Formulier of PDF | Zeer snel (half uur) | Laag | Weinig | Zeer hoog | Eigenlijk niemand meer sinds 2026 |
| Plugin | Snel (een uur) | Laag (licentie per jaar) | Maker, via updates | Laag | De meeste shops |
Stap voor stap: de plugin-route
Dit is de praktische volgorde om de knop werkend en compliant te krijgen met een plugin. De stappen gelden grotendeels ook voor onze Herroepingsknop Pro.
- Maak eerst een backup. Theme-bestanden, database, en een snapshot bij je host. Je raakt orders en accountpagina’s aan, dus zorg dat terugrollen één handeling is.
- Installeer de plugin op een staging-omgeving. Test eerst los van productie. Activeer hem en doorloop de instellingen.
- Zet de teksten goed. De knoptekst, de bevestigingsmail aan de klant, en de melding aan jouw shop. Houd het concreet: “Bestelling herroepen” werkt beter dan vaag jargon.
- Controleer de plekken. Plaats een testbestelling. Kijk of de knop op de order-received pagina staat en of hij terugkomt onder Mijn account bij de orderdetails.
- Test het verzoek. Klik op herroepen, vul het formulier in, en controleer of de klant en de shop allebei een mail krijgen, en of het verzoek met datum en tijd bij de order is vastgelegd.
- Zet hem live en test nog één keer op productie. Een echte bestelling in een echte browser, niet alleen op staging.
Een knop toevoegen zonder dat je conversie eronder lijdt is een apart aandachtspunt. Hoe je dat doet zonder kopers af te schrikken, lees je in ons artikel over de herroepingsknop zonder conversieverlies.
Checklist: waar let je op bij de plugin-keuze
Niet elke plugin doet wat hij belooft. Loop deze punten langs voordat je kiest.
- Beide plekken. Zet de plugin de knop op zowel de bedankpagina (
woocommerce_order_details_after_order_table) als in Mijn account, en niet alleen op een losse pagina? - Bevestiging beide kanten op. Krijgt de klant een mail, en krijg jij als shop een melding?
- Vastlegging bij de order. Wordt het verzoek met datum en tijd opgeslagen, zodat je later kunt aantonen wanneer iemand herriep?
- Meertalig. Werkt hij met WPML, als je een meertalige shop hebt?
- Gastbestellingen. Werkt de knop ook voor klanten zonder account, via de order-received pagina of een unieke link?
- Onderhoud. Krijgt de plugin updates die meebewegen met WooCommerce en de wet?
Meertaligheid, caching en compatibiliteit
WPML en vertalingen
Heb je een meertalige shop met WPML, dan moeten de knoptekst, het formulier en de bevestigingsmails per taal kloppen. Controleer of de plugin zijn teksten registreert in String Translation, zodat je de Nederlandse en bijvoorbeeld Engelse versie los kunt vertalen. Test daarna een herroeping in elke taal, want de mailtemplate gaat hier vaak mis.
Caching
De bedankpagina en Mijn account zijn klant-specifiek. WooCommerce sluit deze pagina’s standaard uit van caching, maar een agressieve cachelaag (WP Rocket, Varnish bij je host, Cloudflare) kan ze alsnog pakken. Het gevolg: een klant ziet de knop of de orderdata van iemand anders, of helemaal niet. Controleer dat cart, checkout, my-account en de order-received URL uitgesloten zijn van paginacache. Na het instellen leeg je de cache en test je in een verse browser.
Compatibiliteit met je theme en checkout
Werk je met een sterk aangepast checkout-theme of een blok-gebaseerde checkout, controleer dan extra goed of de hooks daar vuren. Sommige page-builders en custom templates draaien de standaard order-template niet, waardoor de knop niet verschijnt. Een testbestelling laat dat meteen zien.
Testen of het echt werkt
Een knop die je niet hebt getest is geen knop. Doe een echte testbestelling van begin tot eind en loop deze punten na.
- Staat de knop op de order-received pagina direct na het afrekenen?
- Komt hij terug onder Mijn account bij de orderdetails, ook als je later inlogt?
- Werkt de knop voor een gastbestelling zonder account?
- Krijgen klant en shop allebei een bevestiging?
- Staat het herroepingsverzoek met datum en tijd genoteerd bij de order?
- Klopt alles in elke taal van je shop?
Pas als alle zes punten staan, is de herroepingsknop in WooCommerce echt geregeld.
Veelgestelde vragen
Heeft WooCommerce standaard een herroepingsknop?
Nee. WooCommerce levert de orders, accountpagina’s en hooks, maar geen kant-en-klare herroepingsknop. Je voegt hem zelf toe via code of een plugin.
Voldoet een PDF of een los formulier aan de wet?
Meestal niet. Sinds 19 juni 2026 moet online herroepen even makkelijk zijn als online bestellen. Een PDF of formulier dat de klant zelf moet opzoeken voldoet daar zelden aan.
Waar moet de knop staan?
Op twee plekken: de order-received pagina (de bedankpagina) en in Mijn account bij de orderdetails. Zo is de knop tijdens de hele bedenktijd van 14 dagen bereikbaar.
Welke route is het beste voor mijn shop?
Voor de meeste shops een plugin: snel, betaalbaar en met laag compliance-risico. Zelf bouwen loont alleen met een eigen developer en bijzondere wensen. Een los formulier of PDF voldoet sinds 2026 vrijwel nooit.
Werkt de herroepingsknop ook voor gastbestellingen?
Bij een goede plugin wel. De knop verschijnt dan op de order-received pagina of via een unieke link in de bevestigingsmail, zodat ook klanten zonder account kunnen herroepen.
Aan de slag
De herroepingsknop in WooCommerce regel je het snelst en veiligst met een plugin die de knop op de bedankpagina en in Mijn account zet, de bevestigingen verstuurt en het verzoek vastlegt. Zelf bouwen kan, maar kost tijd en draagt het juridische risico bij jou. Een verstopt formulier voldoet niet meer. Wil je het in één keer goed, kijk dan op onze pagina over de herroepingsknop voor WooCommerce. Je kiest tussen onze Herroepingsknop Pro (39 euro per jaar) of de optie waarbij wij het volledig voor je installeren, instellen en testen. Dan staat de knop op de juiste plekken, in elke taal, en weet je zeker dat hij werkt.