Terug naar het blog
Techniek Gepubliceerd op 22.09.2026 6 min. leestijd

Wie leest er nog meer mee? Scripts van derden op formulierpagina’s

Een pagina met een contactformulier laadt vaak code van een half dozijn andere bedrijven. Een deel daarvan kan zien wat bezoekers typen – en het meeste heeft niemand in uw team ooit bekeken.

Wanneer iemand uw contactformulier invult, gaat hij ervan uit dat het bericht naar u gaat. Op veel sites draait de formulierpagina echter ook scripts van analyseaanbieders, advertentienetwerken, chatleveranciers en alles wat een tagmanager in de loop der jaren heeft verzameld. Elk van deze scripts draait met dezelfde rechten als uw eigen code: het kan de pagina lezen, invoervelden volgen en gegevens naar de eigen servers sturen. Dat betekent niet dat ze dat allemaal doen. Maar op de pagina waar bezoekers hun naam, e-mailadres en soms details over hun gezondheid, geld of juridische problemen intypen, moet u weten wie er meeleest.

De gebruikelijke verdachten

  • Session-replaytools leggen klikken, scrollen en vaak toetsaanslagen vast, zodat een bezoek later kan worden afgespeeld. Tenzij velden worden gemaskeerd, kan dat ook omvatten wat mensen in het formulier typen.
  • Advertentie- en analysepixels melden paginaweergaven en conversies aan derden – op de formulierpagina zelf en heel vaak op de bedankpagina.
  • Chatwidgets laden een complete applicatie vanaf een ander domein, meestal op elke pagina, ook op die met het formulier.
  • Met tagmanagers kan marketing scripts toevoegen zonder deployment. Handig, maar het betekent ook dat code op de formulierpagina kan belanden zonder dat iemand die heeft gecontroleerd.
  • Kleinere hulpmiddelen – A/B-tests, heatmaps, social embeds, lettertypen, kaarten – voegen elk een host toe die minstens het IP-adres van de bezoeker en meestal het adres van uw site ontvangt; scripts daaronder kunnen ook de volledige pagina-URL lezen.

Session replay: een recorder naast het invoerveld

De meeste replaytools bieden instellingen om invoervelden te maskeren of hele gebieden uit te sluiten, en sommige maskeren bepaalde velden standaard. De zwakke plekken zijn de uitzonderingen: een vrij berichtveld dat de standaardinstelling niet dekt, een formulier opgebouwd uit componenten die de maskeringsregels niet herkennen, of een instelling die iemand tijdens het debuggen uitzette en nooit meer aanzette. Een opname die bij een derde is opgeslagen, kan dan precies bevatten wat de bezoeker u schreef – iets wat hij niet verwachtte en wat uw privacyverklaring, die volgens Art. 13 AVG de ontvangers of categorieën van ontvangers van persoonsgegevens moet noemen, misschien helemaal niet vermeldt.

Pixels en de bedankpagina

Conversietracking heeft een signaal nodig dat een formulier is verzonden, en de bedankpagina is de voor de hand liggende plek om dat af te vuren. De meeste pixels sturen bij elke gebeurtenis het volledige pagina-adres mee. Verzendt het formulier via GET, of voegt de doorverwijzing na het verzenden waarden zoals ?name=…&email=… aan de URL toe, dan gaan die waarden rechtstreeks naar de advertentie- of analyseaanbieder. Sommige pixels bieden ook functies die automatisch e-mailadressen of telefoonnummers uit formulieren oppikken om de matching te verbeteren. En als de pixel afgaat voordat de bezoeker op de cookiebanner heeft gereageerd – of nadat hij heeft geweigerd – is het probleem niet langer alleen technisch.

Hoe formuliergegevens ongemerkt de site verlaten
1Bezoeker typt
Naam, e-mailadres en bericht gaan in de formuliervelden.
2Replayscript neemt op
Niet-gemaskeerde velden belanden in een opname op een server van een derde.
3Doorverwijzing met parameters
Na het verzenden verwijst de site door naar /thanks?email=…
4Pixel gaat af
De conversiegebeurtenis stuurt de volledige URL, inclusief e-mailadres, naar het advertentienetwerk.
5Gegevens zijn weg
Ze liggen nu bij aanbieders met wie de bezoeker ze nooit wilde delen.
Een hypothetische keten. Geen van de stappen is op zichzelf ongewoon.

Tagmanagers, toestemming en de toeleveringsketen

In tagmanagers raakt het overzicht vaak zoek. Een campagnetag voor een beurs van twee jaar geleden, een proef met een heatmaptool, een pixel voor een netwerk dat niemand meer gebruikt – het kan allemaal nog op elke pagina laden, ook op die met het formulier. Triggers staan vaak op “alle pagina’s”, en toestemmingsregels worden per tag ingesteld, dus één tag met een ontbrekende voorwaarde is genoeg om een script te laden voordat de bezoeker heeft ingestemd.

Dan is er nog de toeleveringsketen. Wanneer u een script van een andere host insluit, vertrouwt u op wie die host vandaag en in de toekomst beheert. Een leverancier kan veranderen wat zijn script doet, worden verkocht, of zijn leveringsinfrastructuur gecompromitteerd zien. De browser kan een legitiem script niet van een gemanipuleerd script onderscheiden, dus geïnjecteerde code op een formulierpagina kan elk veld lezen en het overal naartoe sturen – hetzelfde patroon dat wordt gebruikt voor skimming op afrekenpagina’s.

Wat u kunt doen

  1. 1Maak een inventaris. Open elke formulierpagina en de bijbehorende bedankpagina met de ontwikkelaarstools van de browser, bekijk het tabblad Netwerk en noteer elke externe host. Doe dat één keer zonder toestemming en één keer na het accepteren van de banner.
  2. 2Verwijder wat niemand nodig heeft. Tags zonder duidelijke eigenaar en doel komen in aanmerking voor verwijdering. Beperk de triggers in de tagmanager zodat alleen de tags die op formulierpagina’s moeten draaien, dat ook doen.
  3. 3Maskeer invoer in replaytools. Maskeer alle invoervelden, niet alleen wachtwoorden, en sluit het formuliergebied zo mogelijk helemaal uit. Bekijk daarna een opname om te zien wat er werkelijk is opgeslagen.
  4. 4Verstuur conversies zonder persoonsgegevens. Verzend via POST, houd formulierwaarden uit doorverwijzings-URL’s en vuur een neutrale gebeurtenis af zoals “contact_form_sent”. Schakel het automatisch verzamelen van formuliervelden in pixels uit.
  5. 5Laad pas na toestemming. Scripts die toestemming vereisen, mogen niet laden voordat de bezoeker instemt – en moeten uit blijven als hij weigert. Test beide paden.
  6. 6Pin vast en beperk waar mogelijk. Subresource Integrity (een hash op de scripttag) laat de browser een statisch bestand weigeren dat is gewijzigd; dat past niet bij scripts die per definitie veranderen, zoals tagmanagers. Een Content Security Policy beperkt welke hosts scripts mogen uitvoeren – begin in report-only-modus om te zien wat er zou breken.
  7. 7Let op wijzigingen. Een nieuwe scripthost op een formulierpagina hoort een bewuste beslissing te zijn, geen verrassing. Zorg ervoor dat u een melding krijgt wanneer er een verschijnt.

formexposed controleert welke trackingpixels op uw formulierpagina’s afgaan, of een session-replaytool formulierinvoer kan opnemen en of het weigeren van de cookiebanner tracking echt stopt – passief, er wordt niets verzonden. Een gratis controle toont het algemene niveau; deze bevindingen staan in het volledige rapport. Met monitoring voor een geverifieerd domein waarschuwt formexposed u ook wanneer er een nieuwe scripthost op een formulierpagina verschijnt.

Geen juridisch advies
Dit artikel geeft algemene informatie over de technische en privacykant van scripts van derden. Het is geen juridisch advies. Of een specifieke configuratie toestemming vereist of in uw privacyverklaring moet worden beschreven, hangt af van uw situatie – vraag bij twijfel een privacyprofessional.