Probleem melden - Klantfeedback op productpagina's, meldingen van kapotte links en verkeerde prijzen met dashboard
Laat klanten melden wanneer een productpagina niet klopt. Een discrete knop Probleem melden opent een venster: de bezoeker kiest het type — kapotte link, verkeerde prijs, ontbrekende informatie of overig — en beschrijft het. Elke melding wordt eerst in uw shop opgeslagen en pas daarna gemaild, dus er gaat niets verloren. U werkt ze af in een back office-dashboard met filters, bulkacties en CSV-export, en laat de melder weten zodra u het hebt opgelost. Geen jQuery, geen overrides. Voor PrestaShop 1.7 tot en met 9.
Uw klanten vinden uw kapotte pagina's eerder dan u
Elke catalogus veroudert. Een leverancierslink sterft, een prijs staat er nog uit vorig seizoen, en juist het ene detail dat kopers nodig hebben ontbreekt in een beschrijving. Degenen die dat opmerken zijn uw bezoekers — en als u ze geen manier geeft om het te zeggen, vertrekken ze gewoon.
Deze module zet een discrete knop Probleem melden op elke productpagina. Eén klik opent een venster, de bezoeker schrijft in één zin wat er mis is, en de melding komt binnen in uw back office.
Vier soorten problemen en één zin
De bezoeker kiest tussen kapotte link, verkeerde prijs, ontbrekende informatie en overig — u bepaalt zelf welke van de vier u aanbiedt — en schrijft een korte beschrijving van 10 tot 1000 tekens, met een live teller tijdens het typen.
Naam en e-mailadres zijn optioneel en worden alleen aan gasten getoond; ingelogde klanten worden via hun account herkend. Het e-mailadres dient precies één doel: de melder laten weten dat u het probleem hebt opgelost.
Eerst opgeslagen, dan gemaild — en daar draait alles om
De melding wordt naar uw database geschreven voordat er ook maar een poging tot verzenden wordt gedaan. Heeft uw mailserver een slechte dag, dan staat de melding gewoon in uw lijst. De fout gaat naar uw logboek in plaats van als foutmelding naar de bezoeker.
Deze volgorde is de reden dat versie 4 bestaat. Verderop meer daarover.
Een back office die een echte werkwijze is
Meldingen komen binnen in een lijst die u kunt afwerken. Filter op status, type probleem, categorie, periode en met vrije tekst over bericht, naam en e-mailadres. Selecteer er meerdere en zet ze in één handeling op in behandeling, opgelost, spam — of verwijder ze.
Elke regel klapt open en toont het volledige bericht, het product — met links naar zowel de front office-pagina als de editor —, de melder, tijdstempels, een statuskeuze en een notitieveld voor uw antwoord. Meldingen doorlopen de statussen open, in behandeling, opgelost, duplicaat en spam.
De CSV-export levert u precies wat uw huidige filters opleveren, niet de hele tabel.
Cijfers die laten zien waar de problemen zitten
Een paneel In één oogopslag telt wat er open staat, wat er deze week en deze maand binnenkwam, wat u hebt opgelost en wat spam was — elk getal is aanklikbaar en brengt u direct in een gefilterde lijst. Daarnaast staan uw vijf meest gemelde producten, meestal de snelste route naar de pagina die echt aandacht nodig heeft.
Een widget op de startpagina van het Dashboard toont het aantal wachtende meldingen en verbergt zichzelf volledig wanneer er geen zijn.
Laat de melder weten dat u het hebt opgelost
Zet u een melding op Opgelost, dan stuurt één vinkje een e-mail naar degene die hem indiende. Die wordt alleen verstuurd als er een adres is achtergelaten, en uw notitie gaat mee in het bericht. Het kost niets en het is precies het onderdeel dat klanten onthouden.
Spambescherming die echte mensen niet straft
Een honeypotveld, een minimale invultijd en een HMAC-ondertekend token met beperkte geldigheid staan altijd aan en vragen geen configuratie. Het token is twee uur geldig en is aan het product gebonden, dus het kan niet elders in uw catalogus opnieuw worden gebruikt.
Daarbovenop: een uurlimiet per bezoeker en per product (standaard 1, zet op 0 om uit te schakelen) plus een vast maximum van 10 meldingen per uur per bezoeker. Duplicaatdetectie legt dezelfde melding van dezelfde persoon over hetzelfde product binnen 24 uur weg als Duplicaat in plaats van u twee keer te waarschuwen — ze staan allemaal gewoon in de lijst.
Optionele reCAPTCHA v3 is beschikbaar en staat standaard uit. Het laadt Google-code op uw productpagina's, dus vermeld het in uw privacyverklaring als u het aanzet.
Het IP-adres van de melder wordt nooit opgeslagen
Een snelheidslimiet moet een terugkerende bezoeker herkennen, daarom slaat de module hash_hmac('sha256', $ip, _COOKIE_KEY_) op — een hash met het eigen geheim van uw shop als sleutel — en nooit het adres zelf.
Die sleutel is doorslaggevend. Een SHA-256-hash van een IP-adres zonder sleutel is in minuten terug te rekenen door alle vier miljard IPv4-adressen te hashen; met een geheim dat alleen uw shop kent, lukt dat niet. De testsuite van de module controleert dat expliciet.
Meldingen worden verwijderd zodra hun product wordt verwijderd, en allemaal bij het deïnstalleren. Is de officiële AVG-module psgdpr geïnstalleerd en ingeschakeld, dan wordt het toestemmingsblok daarvan automatisch in het formulier weergegeven.
Versie 4 repareerde een module die sinds 3.1.0 geen enkele melding had afgeleverd
Dit hoort ronduit gezegd te worden, want het is de echte reden om te updaten.
Toen het verzendpunt in 3.1.0 verhuisde naar controllers/front/, verhuisde het pad naar het mailsjabloon ernaast niet mee — het wees naar een map die niet bestaat. Mail::Send() gaf false terug, de module antwoordde met die('0') — en omdat 0 geldige JSON is, parste de front end dat en voerde de succes-afhandeling uit.
Elke shop op 3.1.0 tot en met 3.2.2 gooide klantmeldingen weg en bedankte de melder er ondertussen voor. Vier uitgebrachte versies lang, en er werd niets opgeslagen — er viel dus ook niets te herstellen. Mailpaden worden nu opgelost vanaf _PS_MODULE_DIR_, en opslaan gebeurt vóór het mailen.
Het sloot ook een open mailrelay
Versie 3.x las de ontvanger van de melding uit een verborgen veld in de pagina. Die werd nooit gevalideerd, nooit vergeleken met het eigen adres van de shop, en vervolgens rechtstreeks aan Mail::Send() doorgegeven.
Elke anonieme bezoeker kon uw shop mail laten versturen naar elk adres dat hij wilde, met niet-ge-escapete HTML in de tekst, zo vaak als hij wilde. Ten koste van uw verzendreputatie. De ontvanger komt nu uitsluitend uit de moduleconfiguratie.
De secure_key die dit had moeten voorkomen was md5(_COOKIE_KEY_ . 'reportbrokenlink') — constant zolang de shop bestaat en in elke productpagina afgedrukt. Eenmaal uitgelezen, voor altijd herbruikbaar. Nu is het een HMAC-ondertekend token met beperkte geldigheid, gebonden aan het product.
Bezoekersinvoer wordt bovendien ge-escapet bij het uitvoeren, niet alleen gefilterd bij het binnenkomen. PrestaShop vervangt mailvariabelen met een simpele str_replace en escapet daarbij niets — een niet-ge-escapete tekst zou een melder in staat stellen een phishinglink te plaatsen in een e-mail die echt van uw shop afkomstig is.
De front end verloor jQuery 1.8.2 en elke andere afhankelijkheid
Versie 3.x laadde jQuery 1.8.2 vanaf het CDN van Google op elke productpagina. Dat stuurde het IP-adres van elke bezoeker naar Google nog vóór enige toestemming, bracht een bibliotheek uit 2012 mee met vier gepubliceerde adviezen, en overschreef de eigen jQuery van uw thema voor alles wat daarna draaide.
Dat is allemaal verdwenen. De front end is afhankelijkheidsvrij vanilla JavaScript en CSS — één klein bestand van elk, alleen op productpagina's geregistreerd. Geen jQuery, geen Bootstrap.
Verzenden gebeurt nu via POST. Versie 3.x verstuurde de gegevens via GET — via een optie post: "POST" die in jQuery helemaal niet bestaat, waardoor stilzwijgend de standaard werd gebruikt — waardoor het e-mailadres van elke melder in de toegangslogboeken van uw webserver belandde.
Toegankelijk omdat het zo is gebouwd
Het venster is een echte dialoog: de focus gaat erin, Tab blijft erbinnen gevangen, Escape sluit het, en de focus keert terug naar de knop waar u vandaan kwam. Fouten worden aan schermlezers gemeld, focusranden zijn zichtbaar, prefers-reduced-motion wordt gerespecteerd, en onder 480 px gaat het schermvullend.
Bij openen wordt het bovendien naar <body> verplaatst. Ter plaatse weergegeven zat het binnen het winkelwagen-<form> van het thema — een genest formulier dat de opmaak brak en het verkeerde kon versturen.
Compatibiliteit
PrestaShop 1.7 tot en met 9, PHP 7.2 tot 8.3, in acht talen: Duits, Engels, Frans, Italiaans, Nederlands, Pools, Spaans en Turks. Als Nederlandstalige verkoper werkt u dus in een vertaald back office.
Geen overrides, geen aanpassingen aan core of thema, geen jQuery. Vijf hooks, één databasetabel. Bij deïnstalleren verdwijnen de tabel, elke opgeslagen melding en alle instellingen — exporteer dus eerst naar CSV als u ze wilt bewaren.
Veelgestelde vragen
Hebben mijn klanten een account nodig om iets te melden?
Nee, en het is aan te raden meldingen van gasten toe te laten — gasten zijn meestal degenen die een kapotte pagina opmerken. Wilt u het liever anders, dan beperkt u de knop met één instelling tot ingelogde klanten.
Waar verschijnt de knop?
Op productpagina's, ofwel naast de productinformatie ofwel eronder — displayProductAdditionalInfo (naast de productinformatie) of displayFooterProduct (onderaan de productpagina). Verbergt uw thema de ene, schakel dan in de module-instellingen over op de andere.
Wat gebeurt er als mijn mailserver uitvalt?
Er gaat niets verloren. De melding wordt opgeslagen voordat er een poging tot verzenden wordt gedaan, de fout komt terecht in Geavanceerde instellingen → Logs, en de melding wacht in uw lijst. Dit is het grootste verschil met versie 3.
Worden de IP-adressen van melders opgeslagen?
Nee. De snelheidslimiet gebruikt een SHA-256-hash met het eigen geheim van uw shop als sleutel, nooit het adres zelf. Naam en e-mailadres zijn optioneel en worden alleen verzameld zodat u de melder kunt laten weten dat u het probleem hebt opgelost.
Een bezoeker zegt dat het formulier meldde dat het verlopen was.
Het ondertekende token is twee uur geldig, dus wie een productpagina langer open laat staan, krijgt dit te zien. De pagina herladen lost het op. Tokens zijn aan het product gebonden, en juist dat voorkomt dat ze elders in uw catalogus opnieuw worden gebruikt.
Waarom worden sommige meldingen als Duplicaat gemarkeerd en niet naar mij gemaild?
Duplicaatdetectie staat standaard aan: dezelfde persoon, hetzelfde product, hetzelfde type probleem binnen 24 uur wordt weggelegd als duplicaat in plaats van u twee keer te waarschuwen. Ze staan allemaal gewoon in de lijst — filter op status Duplicaat, of zet de instelling uit.
Kan ik de meldingen uit PrestaShop halen?
Ja. De CSV-export levert precies wat uw huidige filters opleveren. Cellen die beginnen met een teken dat een spreadsheet als formule leest (=, +, -, @, tab of regelterugloop) worden bewust onschadelijk gemaakt, zodat niemand een spreadsheetformule kan binnensmokkelen in een bestand dat u opent.
Heeft het jQuery of Bootstrap nodig?
Geen van beide. De front end is vanilla JavaScript en CSS, één klein bestand van elk, alleen op productpagina's geladen. Onderzoekt u een klik die niets doet, kijk dan in uw browserconsole naar een losstaande fout van een ander programmaonderdeel op de pagina.
Wat gebeurt er met mijn meldingen als ik deïnstalleer?
Ze worden verwijderd, samen met alle instellingen — u wordt eerst om bevestiging gevraagd. Exporteer vooraf naar CSV als u ze later nog nodig zou kunnen hebben.
-
CompatibiliteitPrestashop 1.4
Prestashop 1.5
Prestashop 1.6
Prestashop 1.7
Prestashop 8
Prestashop 9 -
Beschikbare Module VertalingenDuits
Engels
Frans
Italiaans
Nederlands
Pools
Spaans
Turks
MEG Venture
4 other products in the same category
| Versie | 4.0.0 |
|---|---|
| Laatst bijgewerkt | 2026-07-30 |
| Wijzigingslogboek | - [2026-07-30] Backfill missing translation keys for issue reporting feature in multiple languages - [2026-07-25] Refactor report submission handling to use delegated event listeners and avoid nested forms - [2026-07-24] Add Turkish translations for report broken link module - [2026-07-23] Refactor code structure for improved readability and maintainability - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Add authentic translations for FR, DE, PL, NL, TR, IT, ES - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Add missing translation files (fr, de, pl, nl, tr, it, es) - [2026-07-16] Refactor dashboard widget styling and update template for consistency with admin theme - [2026-07-15] Add report broken link module templates and functionality - [2026-07-15] Add README file for reportbrokenlink module - [2023-09-22] v3.2.2 - [2023-09-07] v3.2.1 - [2022-02-20] Update reportbrokenlink-extra.tpl - [2021-11-20] v3.2.0 - [2021-09-27] v3.1.0 - [2021-09-27] Initial commit |
• [2026-07-15] Add report broken link module templates and functionality
• [2026-07-15] Add README file for reportbrokenlink module
• [2023-09-22] v3.2.2
• [2023-09-07] v3.2.1
• [2022-02-20] Update reportbrokenlink-extra.tpl
• [2021-11-20] v3.2.0
• [2021-09-27] v3.1.0
• [2021-09-27] Initial commit
Commentaar (1)
Uw beoordelingswaardering kan niet worden verzonden
Rapporteer reactie
Melding verzonden
Uw opmerking kan niet worden verzonden