Naar de inhoud
Open Nexym

Het embed-script

Eén regel in je webshop, voor elke module die je nu of later aanzet. Plaatsen, controleren met de debugger, toestemming, testmodus en paden waar het niets doet.

Bijgewerkt 29 okt 2026·Leestijd 32 minbeginnersetup

Het embed-script is het ene stukje code dat je in je webshop plakt. Het laadt alle modules die aan staan, zoals de zoekbalk, de chat, popups en de reviewwidget. Het meet ook wat er op je site gebeurt, zoals een product dat bekeken wordt. Dat meten doet het altijd, ook als er geen enkele module aan staat. Zet je later een module aan, dan hoef je niets opnieuw te plakken: hetzelfde script haalt er vanzelf bij wat aan staat.

  1. Een bezoeker opent een pagina van je webshop. De browser laadt het script van Nexym.
  2. Nexym stuurt één bestand terug: altijd de basis, plus de modules die bij jou Aan staan. Een module die uit staat of in test, zit er niet in.
  3. Het script kijkt wat de bezoeker in je cookiebanner koos en houdt zich daaraan.
  4. De modules starten: de zoekbalk neemt je zoekveld over, de chat verschijnt, enzovoort.
  5. Het script noteert wat er gebeurt (zoeken, product bekeken, in de winkelwagen) en stuurt dat in één keer naar Nexym als de bezoeker de pagina verlaat.

Zolang Nexym aan je website levert, draait de basis. Ook als alle modules uit staan, of allemaal in test. Modules komen daar bovenop.

De basis doet Volgens
Paginasignalen: product en categorie bekeken, winkelwagen, afrekenen, bestelling Wat je site al vertelt onder Beheer → Bezoekers & toestemming → Wat we meten
Het bezoekersnummer: de dagelijkse berekening, of een blijvend nummer na toestemming Bezoekers herkennen onder Beheer → Bezoekers & toestemming
Klant herkennen, als je dat aan hebt staan Klant herkennen
Wie er is ingelogd: één bron voor de A/B-test en klant herkennen Ingelogde klant onder Beheer → Bezoekers & toestemming → Wat we meten
Foutmeldingen van ons eigen script, en de debugger Vast

De basis staat altijd aan zolang er geleverd wordt; de statusbalk bovenaan Beheer → Setup zegt hoeveel modules de tag meedraagt en hoe groot hij is. Geen enkele module zet de basis aan of uit. De module Consent is alleen een bron voor wat zegt dat ze akkoord zijn.

Wat de basis wél stopt:

Wat Waar je het ziet
Lever niets aan mijn website (Stoppen met leveren) Beheer → Setup, en de basisrij zegt Gestopt
De tag uit je template halen Setup meldt dat de tag niet meer gezien wordt
Een website die niet onder Je websites staat: daar wordt niets geleverd. Staat er nog geen enkele website, dan draait de tag wel, maar neemt Nexym niets aan van wat hij meet De basisrij waarschuwt zolang de lijst leeg is
Bots, landen en user agents die je blokkeert Beheer → Bezoekers & toestemming → Geavanceerd → Wie hij niet te woord staat

Verborgen paden en Pas laden na toestemming houden alleen modules tegen, niet het meten.

Onder Beheer → Setup staat je tag compleet klaar, met de projectsleutel van jouw project erin. Klik Tag kopiëren en zet hem vlak voor </body> in je thema. Kun je dat niet zelf, klik dan Naar mijn developer sturen: je developer krijgt de regel per e-mail, met de uitleg erbij.

<!-- Nexym — één tag, voor elke module die je aanzet -->
<script async src="https://app.nexym.nl/nx/e/wc_PROJECTSLEUTEL" crossorigin="anonymous"></script>
// app/design/frontend/<Vendor>/<theme>/Magento_Theme/templates/html/footer.phtml
<script async src="https://app.nexym.nl/nx/e/wc_PROJECTSLEUTEL" crossorigin="anonymous"></script>
{%- comment -%} theme.liquid, vlak voor </body> {%- endcomment -%}
<script async src="https://app.nexym.nl/nx/e/wc_PROJECTSLEUTEL" crossorigin="anonymous"></script>

Kopieer de tag altijd uit Beheer → Setup, niet uit dit voorbeeld: daar staat je eigen sleutel in. Een oudere tag met /connect/e/ in het adres blijft gewoon werken.

Het Setup-scherm: de status van het script, toestemming en events, en daaronder de scripttag.
Onder Beheer → Setup staat je tag, met daaronder wat hij op dit moment meedraagt.

Onder Beheer → Setup → Je websites staan de domeinen waarop het script mag werken, één rij per taal. Een subdomein van een toegestane website mag ook. Staat een domein er niet bij, dan levert het script daar niets. Dat is de bedoeling.

Setup meet zelf mee of het werkt. Per website zie je wanneer de tag er voor het laatst draaide, op welk platform en welke cookiebanner herkend werd. Een domein dat je tag gebruikt maar niet op de lijst staat, verschijnt onder Gebruikte je tag zonder vermeld te staan. Zo merk je een vergeten subdomein of een testsite meteen.

Heb je één winkel op meerdere domeinen of paden, bijvoorbeeld jouwshop.nl, jouwshop.nl/en en jouwshop.de? Dan hoef je geen project per domein te maken. Zet ze allemaal als rij onder Je websites in één project.

Een website is waar het script draait: een domein, en eventueel een pad. Een website heeft een taal, een valuta en een tijdzone. De taal is dus een eigenschap van de website, geen website op zichzelf. Twee websites kunnen dezelfde taal hebben, bijvoorbeeld jouwshop.nl en jouwshop.be.

  • Welke website een bezoeker ziet, bepaalt Nexym aan de hand van het adres van de pagina: het domein (zonder www. en zonder poort) en het langste pad dat past. jouwshop.nl/en/schoenen hoort bij de rij met pad /en. Wat door geen rij geclaimd wordt, hoort bij de bovenste rij: dat is je hoofdwebsite.
  • Modules nemen de taal en valuta automatisch van de website. Zoeken, popups en chat spreken op /en Engels zonder dat je per module iets instelt.
  • Richten doe je met de voorwaarde Website (of Taal van de website) in de voorwaarden-editor, bijvoorbeeld “Pagina’s: Website is jouwshop.nl/en”. Zie Popups en Site search.
  • Analyseren doe je met het websitefilter (Alle websites of één website) op Signals, Site search → Analytics en Popups. Elke meting onthoudt op welke website hij gebeurde. Alle websites geeft dezelfde totalen als voorheen.
  • Koppeling · storeview. Kies per rij van welke koppeling (je webshop) deze website een storeview is. Kent de koppeling haar storeviews (zoals Magento), dan kies je de storeview op naam, bijvoorbeeld “Webshop · Nederlandse winkel”. Dan toont Site search per website alleen wat op die storeview te koop is, en worden bestellingen aan de juiste website gekoppeld. Kent geen enkele koppeling storeviews, dan typ je de code van de storeview zelf in het vakje eronder. Laat je het leeg, dan verandert er niets.
  • Valutateken tonen in de storefront. Onder de valuta van elke rij staat dit vinkje, standaard aan. Zet je het uit, dan tonen alle modules op die website bedragen zonder teken: “119,00” in plaats van “€ 119,00”. Decimalen, scheidingstekens en volgorde blijven zoals de taal ze schrijft. Het geldt voor alles wat een bezoeker leest: prijzen, oude prijzen, de prijsfilter en zijn chips in Zoeken, de productkaarten en prijzen in de chat, de prijzen in popups en de Maatchecker, de mail “weer op voorraad” (volgens de website waarop iemand zich aanmeldde) en de bedragen in het retourportaal (volgens de website van de bestelling). Bedragen blijven intern in de valuta van de website: rapporten, feeds, het dashboard en mails aan jou houden het teken, en een creditnota ook.

Een store is een domein dat je als eigen winkel draait, met zijn talen eronder — in Magento-termen een website met zijn storeviews. Draai je naast jouwshop.nl ook een outlet op jouwoutlet.nl, dan zijn dat twee stores in één project.

  • Klik onder Je websites op Store toevoegen. Er komt een nieuw blok bij met een eigen naam en kleur; vul het domein van de store in. Met Taal toevoegen zet je er een taal (een pad zoals /en) bij, op hetzelfde domein.
  • De naam en kleur zie je terug in de store-kiezer bovenaan het dashboard.
  • Haal je alle talen van een store weg, dan verdwijnt de store, met wat je voor die store apart had ingesteld.
  • Heb je één store, dan ziet het scherm eruit zoals altijd: één tabel, zonder naam en kleur.

Koppelingen en stores. Bij twee of meer stores zie je bij elke koppeling (Koppelingen & sync → de koppeling) het blok Stores:

  • Is de koppeling de shop van een store (websites noemen haar onder Koppeling · storeview), dan staat er welke stores en talen ze voedt. Aanpassen doe je bij Websites.
  • Elke andere koppeling (ERP, e-mailmarketing, feed, bestandsuitwisseling) is standaard voor Alle stores. Kies Gekozen stores om haar alleen voor bepaalde stores te laten werken.

Bij het toevoegen van een koppeling kies je dit meteen: Shop van een store koppelt de nieuwe koppeling aan alle talen van die store die nog geen koppeling hebben.

Heeft je project meer dan één store (bijvoorbeeld je hoofdwinkel en een outlet op een eigen domein), dan staat onder je websites de kaart Klantgegevens tussen stores. Daar kies je wie een bestelling mag opzoeken in de chat, het retourportaal, de reviews (“Schrijf een review” met je bestelnummer) en het maatadvies van de Maatchecker:

  • Per store (standaard): elke store ziet alleen zijn eigen klanten en bestellingen. De talen van één store delen altijd: een bestelling op jouwshop.nl/en is ook op jouwshop.nl/de terug te vinden, maar niet op je outlet.
  • Gedeeld: elke store ziet alle klanten en bestellingen van het project.

Bij één store verandert er niets en zie je de kaart niet. Een bestelling waarbij de shop niet aangeeft op welke website hij is geplaatst, telt alleen voor een store als de koppeling waarmee hij binnenkwam alleen aan die store gekoppeld is; anders vindt geen enkele store hem. Het retourportaal draait op ons eigen domein: het weet de store als de klant via een link op je shop binnenkomt. Typt iemand het adres van het portaal zelf in, dan vindt het portaal elke bestelling van het project waarbij het bestelnummer en e-mailadres of postcode kloppen.

Open je site met ?nexym_debug=1 achter het adres, bijvoorbeeld https://www.example.com/?nexym_debug=1. Je browser staat dan in debugmodus: elke gebeurtenis komt in de console van je browser én in Operaties → Signalen → Live, gemerkt als browser · debug. Die gebeurtenissen tellen nergens in mee. Met ?nexym_debug=0 zet je het weer uit.

De knop Open … in debug bovenaan Beheer → Website & tracking → Debugger doet hetzelfde; de knop Signalen → Live ernaast brengt je naar de gebeurtenissen.

Widgets die ín je pagina staan, komen binnen nadat de pagina al getekend is. Een reviewcarrousel of de retourknop duwt dan de tekst eronder omlaag. Google meet dat als verschuiving tijdens het laden (CLS), en een bezoeker klikt er soms net naast.

Met Ruimte vooraf reserveren houdt je pagina die ruimte vanaf de eerste weergave vast. Op de plek van de widget staat een lichte placeholder in de vorm van de widget, en als de widget binnenkomt, verschuift er niets. Je zet het aan en uit onder Beheer → Setup, bij je tag. Voor nieuwe projecten staat het standaard aan.

Staat het aan, dan krijgt je tag er één regel bij, boven de scripttag:

<!-- Nexym — houdt de ruimte van je widgets vast vanaf de eerste weergave -->
<link rel="stylesheet" href="https://app.nexym.nl/nx/e/wc_PROJECTSLEUTEL/slots" data-nexym-slots>
<script async src="https://app.nexym.nl/nx/e/wc_PROJECTSLEUTEL" crossorigin="anonymous"></script>

Kopieer ook deze regel uit Beheer → Setup: daar staat je eigen sleutel in. De regel is een klein bestand (een paar kB) dat je browser bewaart, net als het script. Zonder de regel werkt alles zoals voorheen: de ruimte wordt dan alleen vastgehouden als het script binnen is voordat je pagina getekend is.

Wat er verder gebeurt:

  • Widgets verderop in de pagina worden pas gevuld vlak voordat ze in beeld scrollen. Je pagina laadt daardoor sneller, zonder dat een bezoeker iets ziet laden.
  • De hoogte leert zichzelf. Eerst schat Nexym de hoogte uit de instellingen van de widget. Daarna meet het script hoe hoog de widget op jouw site echt werd en gebruikt het die maat. Bij elke widget zie je dat terug als Ruimte vooraf gereserveerd: ~330 px (gemeten) of (geschat).
  • Er springt niets terug. Heeft een widget niets te tonen, bijvoorbeeld een product zonder reviews, dan blijft de ruimte leeg staan tot de bezoeker eraf scrollt. Pas dan verdwijnt hij, waar niemand het ziet.
  • Privacy. De meting is een hoogte in pixels per widget, schermgrootte en soort pagina. Er gaat niets over de bezoeker mee: geen cookie, geen id, geen adres. Heeft een bezoeker statistieken geweigerd in je cookiebanner, dan wordt er niets gemeten.

Het geldt voor de widgets die in je pagina staan: de reviewwidgets, de retourknop en de kaart van de keuzehulp in je productoverzicht. Popups, de chat, de cookiebanner en de zoekresultaten liggen óver je pagina heen en duwen niets opzij, dus die hebben dit niet nodig.

De debugger is een venster over je echte website heen. Het laat zien wat het script op die pagina deed, in die ene browser. Je beheert hem onder Beheer → Debugger.

Hij heeft deze tabbladen:

Tabblad Wat je ziet
Overzicht Het project en de site, de scriptversie, welke modules draaiden en in welke volgorde, en fouten bij het starten van een module. Draait site search op de pagina, dan staat hier ook de schakelaar Rangschikking tonen in de resultaten (standaard uit, onthouden in deze browser)
Tijdlijn Events tussen modules, wijzigingen in toestemming en elk verzoek naar andere partijen, gemarkeerd als vóór of na toestemming
Opslag Cookies, localStorage en sessionStorage, en wanneer elk voor het eerst verscheen
Pagina Elk script, iframe en trackingpixel, en of het tegengehouden, vrijgegeven of uitgevoerd is
Signalen Wat het script van de pagina leest: events uit je dataLayer, het product, de winkelwagen
Eén per module Wat die module op de pagina deed, bijvoorbeeld Maatadvies voor de Size checker

Alles wat met debuggen te maken heeft, staat in dit ene venster. Een module tekent geen eigen debugpaneel op je pagina; hij voegt een tabblad toe.

Er zijn twee manieren om de debugger te openen:

  • Een debuglink. Onder Open de debugger op je site kies je een website en hoe lang de link werkt (1 of 4 uur, 1, 3 of 7 dagen, of zelf een aantal uren of dagen) en klik je Link maken. Iedereen met de link kan de debugger openen tot hij verloopt, op elk apparaat. Handig voor een collega of je developer.

    Onder Uitgedeelde links zie je per link wanneer hij verloopt (“verloopt over 3 u · vandaag 18:40”). Met Verlengen geef je hem meer tijd: +1 uur, +4 uur, +1 dag, +3 dagen, +7 dagen of een eigen aantal. De URL blijft hetzelfde, dus je tester hoeft niets nieuws te openen. Een link die al verlopen is, werkt na verlengen weer; verlopen links blijven 7 dagen in de lijst staan. Een link werkt hooguit 30 dagen na het maken, hoe vaak je hem ook verlengt. Met Intrekken stop je één link; met Links intrekken werkt geen enkele uitgedeelde link meer. Maken, verlengen en intrekken staan in de auditlog, met wie het deed en tot wanneer de link werkt.

  • Vanaf een vast IP-adres. Onder Debugger-toegang (IP) zet je de IP-adressen van bijvoorbeeld je kantoor, één per regel (203.0.113.7 of een reeks als 198.51.100.0/24). Vanaf die adressen opent ?nexym_debug=1 de debugger. Zet je Altijd aan voor deze adressen aan, dan zie je hem op elke pagina, zonder ?nexym_debug=1. Een lege lijst laat niemand binnen op adres.

Debugmodus verlaten doe je met Leave debug mode in het venster, of door je site te openen met ?nexym_debug=0.

Het retourportaal en de reviewpagina staan niet op je eigen site maar op het adres van Nexym. Ook daar werkt debugmodus. Je ziet dan een paneel met dezelfde opmaak als de debugger: rechtsonder op een groot scherm, als smalle balk bovenaan op je telefoon. Het paneel is ingeklapt tot je erop klikt, en het ligt nooit over de knoppen van de pagina.

Zo open je een van die pagina’s in debugmodus:

  1. Ga naar Beheer → Debugger.
  2. Klik onder Pagina’s die Nexym voor je host bij het retourportaal of de reviewpagina op Openen in debugmodus.

De pagina opent met een link die 8 uur werkt. Je browser onthoudt hem voor de rest van je bezoek, dus ook de volgende stappen en pagina’s staan in debugmodus. Een IP-adres op de lijst met Altijd aan voor deze adressen werkt hier ook. Met Links intrekken stopt ook deze link.

Wat het paneel laat zien:

Pagina Wat je ziet
Elke pagina De stand van de module (test of live), waarom je browser binnen is (debuglink, adres op de lijst of live), en of wat je doet als TEST wordt vastgelegd
Retourportaal De taal en hoe die gekozen is, de gevonden bestelling en hoe je hem vond, de redenen, oplossingen en manieren van terugsturen, en waarom een manier ontbreekt (bijvoorbeeld vervoerder niet gekoppeld of ophalen staat uit). Verder de kosten per oplossing en methode, hoe de ophaaldagen worden gemaakt, welke mails zouden gaan en of ze worden tegengehouden, de klantherkenning en de laatste foutmeldingen
Reviewpagina De stand van de uitnodiging in het adres (geldig, gebruikt of gesloten, met campagne en bestelling), waarom een uitnodiging wel of niet zou gaan (afgemeld, een open klacht of retour, de voorwaarden van de campagnes), de widget- en moderatie-instellingen, waar de score uit bestaat en wat erbuiten blijft, en de uploadlimieten

Debugmodus verlaten doe je met Debugmodus verlaten in het paneel, of door de pagina te openen met ?nexym_debug=0 achter het adres.

Testmodus: een module bekijken voordat bezoekers hem zien

Section titled “Testmodus: een module bekijken voordat bezoekers hem zien”

Elke module heeft drie standen: Uit, Test en Aan. Een module in Test zit niet in het script van je bezoekers. Alleen een browser die de debugger binnenlaat, laadt hem erbij. De module staat dan in het venster als test · alleen voor jou.

Zo zie je een module in test op je eigen site:

  1. Zet de module op Test (onder Modules, of op de pagina van de module).
  2. Maak een debuglink, of zet je IP-adres onder Beheer → Debugger met Altijd aan voor deze adressen aan.
  3. Open je site. De module verschijnt, alleen voor jou.

Wat je in testmodus doet, blijft binnen Nexym: er gaat geen e-mail naar klanten en niets telt mee in je cijfers of in Impact. Een module in test kost niets. Zie ook Testmodus.

De tag staat in je template en weet per pagina niets. Daarom regel je dat onder Beheer → Setup → Waar het draait.

Paden waar geen enkele module iets doet, één per regel. * is het enige jokerteken, bijvoorbeeld /checkout/*. Plak je een volledig adres, dan wordt alleen het pad gebruikt. Hoofdletters maken niet uit. Standaard staat hier niets.

Meten gaat op zo’n pagina wél door: events uit je eigen dataLayer blijven binnenkomen. Een verborgen checkout vertelt je dus nog steeds wat daar gebeurt. Een module die alleen meet (niets toont en niets verandert, zoals Web Vitals) mag er ook draaien, als de instellingen van die module dat toestaan. Het scherm noemt welke modules dat op dit moment doen.

Onder de paden van je site staat Alleen voor deze module: per module een eigen rij met paden waar alleen díe module wegblijft, bijvoorbeeld UI-elementen blijft weg van en Chat blijft weg van. De paden bovenaan de kaart blijven gelden voor elke module; deze rijen komen daar per module bij.

Rij Hoe een pad telt Standaard
UI-elementen blijft weg van Het pad en alles eronder: /checkout geldt ook voor /checkout/betalen. /checkout
Chat blijft weg van Het pad en alles eronder; * is een jokerteken. Hoogstens 40 paden. Leeg

Elke module kijkt precies zo naar deze paden als vroeger op zijn eigen instellingenscherm. Net als andere instellingen kun je ze per winkel of taal laten afwijken. Op het scherm van de module zelf staat nu alleen een verwijzing: Ingesteld onder Setup → Waar het draait · Afwijken voor deze module.

Staat dit aan, dan starten de modules pas als de bezoeker een keuze maakte in de cookiebanner. Elke keuze telt: ook alleen voorkeuren, alleen marketing of alles weigeren. Wat een module daarna mag bewaren of versturen, bepaalt de module zelf per soort toestemming. Komt die keuze later op dezelfde pagina, dan starten de modules alsnog meteen. Standaard staat dit uit.

Dit gaat over draaien. Het bewaren van een bezoekersnummer is iets anders, zie Bezoekers herkennen.

Magento 2.4.7 en nieuwer: de checkoutpagina

Section titled “Magento 2.4.7 en nieuwer: de checkoutpagina”

Magento 2.4.7 en nieuwer dwingt op de checkoutpagina zelf (/checkout/) een strenge Content Security Policy af: scripts van een andere host dan je shop worden daar geblokkeerd, dus ook de Nexym-tag. Op de rest van je shop, en op de bedankpagina (/checkout/onepage/success/), staat die policy standaard op alleen melden en draait de tag gewoon.

Je hoeft hier niets voor te doen. Wat Nexym bij het afrekenen nodig heeft, leest het op de bedankpagina: de bestelling (Impact) en de koper (Gasten na het afrekenen). Een Magento-module, een CSP-uitzondering of een extra snippet is niet nodig.

Het script leest wat je bezoeker in je cookiebanner koos, en houdt zich daaraan. Waar dat antwoord vandaan komt, zoekt Nexym zelf uit; onder Beheer → Bezoekers & toestemming staat het bij Toestemming komt van (bijvoorbeeld Een bekende cookiebanner (gedetecteerd)):

  1. de Nexym-module Consent, als die live staat;
  2. anders de banner op je site: Google Consent Mode, IAB TCF of een van de veelgebruikte cookiebanners (waar dat kan ook al voordat die banner zelf geladen is, uit zijn eigen cookie);
  3. alleen als je dat onder Geavanceerd met de hand instelt: je eigen code die Nexym.consent.grant() en Nexym.consent.revoke() aanroept, of een banner die ons script pas ná akkoord laadt.

Zeggen bezoekers ja terwijl je instelling naar iets anders luistert, dan zie je bovenaan het scherm welke banner Nexym hoort, met één knop om over te schakelen naar automatisch.

Nexym kent vier soorten toestemming: noodzakelijk (altijd toegestaan), statistieken, marketing en voorkeuren. Google Consent Mode wordt zo vertaald: analytics_storage is statistieken, ad_storage is marketing, functionality_storage en personalization_storage zijn voorkeuren.

Alleen een echt antwoord van de bezoeker telt. De standaardstand van een banner, voordat iemand iets kiest, geldt als nog niet beantwoord en nooit als toestemming. Verandert de bezoeker later van keuze of trekt hij toestemming in, dan werkt dat meteen.

Wat Waar Toestemming nodig
Context van dit bezoek (bekeken producten, waar een klik vandaan kwam, kortingscode) sessionStorage, weg met het tabblad Nee
Winkelwagen van een Nexym-knop, 14 dagen localStorage nexym:cart Voorkeuren
Bezoekersnummer, aantal bezoeken en het nummer van het huidige bezoek localStorage nexym:vid, nexym:visits Statistieken
Tabbladnummer (welk bezoek dit tabblad al meldde) sessionStorage nexym:tab, weg met het tabblad Statistieken
Welk GA4 client-ID dit tabblad al meldde sessionStorage nexym:gc, weg met het tabblad Statistieken
Groep in een A/B-test localStorage nexym:ab en cookie nx_ab Statistieken
Of er iemand in- of uitlogde (een controlegetal, nooit het klantnummer) sessionStorage nexym:cu, weg met het tabblad Statistieken
Debugmodus sessionStorage, en een debuglink in localStorage tot hij verloopt Nee (alleen in jouw browser)

De modules bewaren daarnaast dit:

Wat Waar Toestemming nodig
Popups: gesloten, één keer getoond, bevestigd, aftellen, afkoelperiode localStorage nx-pop:…, nx-pop-cooldown Nee
Popups: dat deze browser zich aanmeldde (de popup en een token, nooit het e-mailadres) localStorage nx-pop-signed Voorkeuren
Popups: welke popup een aankoop krijgt, en welke A/B-variant de bezoeker ziet localStorage nx-pop-attribution, nx-ab:<groep> Statistieken
Websitechat: het gesprek (alleen het adres ervan, nooit wat er gezegd is) en hoe het paneel stond localStorage nx-chat:<sleutel> Nee
Websitechat: nee op de nieuwsbrief localStorage nx-nl-off:<sleutel> Voorkeuren
Zoeken: recente zoekopdrachten localStorage nexym:recentq Voorkeuren
Keuzehulp: waar de bezoeker gebleven was localStorage nexym:advisor:<id> Voorkeuren
Reviews: op welke reviews de bezoeker al stemde localStorage nexym:reviews:voted Voorkeuren
Maatadvies: de kalibratie van het scherm localStorage nexym:ring-ppm Voorkeuren

Staat er een soort toestemming bij, dan geldt voor elke regel hetzelfde. Zonder een ja in die soort (ook als de bezoeker nog niets koos) bewaart het script het alleen in sessionStorage, voor dit bezoek: de module werkt gewoon, maar morgen is het weg. Een blijvende kopie van een eerder bezoek gaat dan meteen uit localStorage. Geeft de bezoeker later alsnog toestemming, dan gaat wat dit bezoek bewaarde mee naar localStorage. Trekt hij toestemming in, dan verdwijnt de blijvende kopie direct. Je hoeft hier zelf niets voor in te stellen.

Het script leest ook één cookie die niet van Nexym is: het GA4 client-ID uit de _ga-cookie van je eigen Google Analytics, alleen met toestemming voor statistieken, om een bezoek te kunnen koppelen aan je eigen Google Analytics-data. Alleen het client-ID gaat mee (nooit de cookie zelf) en het staat bij het bezoek. Je ziet het in de lade van een anonieme bezoeker als GA4 client-ID.

Standaard is een bezoeker een berekening uit IP-adres, browser en taal, met een geheime sleutel die elke dag verandert. Er staat niets op het apparaat van je bezoeker, en morgen is diezelfde persoon onherkenbaar. Dat is bewust, en het vraagt geen toestemming.

Wil je weten of iemand terugkwam, zet dan Klanten herkennen aan onder Beheer → Bezoekers & toestemming. De browser bewaart dan een willekeurig nummer. Het zegt welke browser, nooit wie. Dat nummer wordt pas opgeslagen als de bezoeker toestemming voor statistieken gaf, en het wordt gewist zodra die wordt ingetrokken. Dat geldt ook voor projecten die eerder Altijd herkennen kozen: die keuze herkent niemand meer zonder toestemming en werkt nu precies als Statistieken. Bij Geavanceerd → Hoe lang kies je hoe lang het nummer geldig blijft: standaard 365 dagen, hoogstens 730.

Onder dezelfde voorwaarde telt de browser ook het hoeveelste bezoek het is, en houdt hij een eigen bezoek bij: één browser, tot 30 minuten zonder activiteit of middernacht. Dat bezoeknummer gaat mee met de meting en met de verzoeken van de modules naar Nexym (zoeken, chat, popups, reviews), zodat een zoekopdracht, de winkelwagen erna en de bestelling één bezoek zijn — ook als tien mensen achter hetzelfde adres winkelen. Zonder toestemming blijft het de dagelijkse berekening. Zie Wat telt als één bezoek.

Een bezoeker koppelen aan een klant (met naam en e-mail in de hub) is een aparte stap. Zie Klant herkennen. Die werkt alleen met Dezelfde bezoeker op een latere dag herkennen aan. Zet je dat uit terwijl klantherkenning aan staat, dan vraagt Nexym eerst of dat mag: klantherkenning gaat dan ook uit.

Onder Beheer → Bezoekers & toestemming → Geavanceerd → Wie hij niet te woord staat kun je het script laten zwijgen voor crawlers en bots, voor bepaalde landen en voor bepaalde user agents. Standaard staat dit allemaal uit.

In dezelfde kaart staat Do Not Track respecteren. Staat dat aan, dan krijgt een browser die “Do Not Track” meestuurt geen enkele module die iets laat zien of iets doet op de pagina: geen UI-elementen, geen chat, geen zoekoverlay. Het passieve meten (paginasnelheid, paginasignalen en de meting van de basis) volgt gewoon zijn eigen toestemmingsregels. Standaard staat het uit. Had je Respecteer Do Not Track bij UI-elementen aan, dan staat deze instelling ook aan; die gold toen alleen voor popups, nu voor elke module.

Daaronder staat Intern verkeer (IP): adressen van je eigen team die niet meetellen in zoekcijfers, A/B-tests, Impact en Web Vitals. Het script draait voor hen gewoon. Een adres komt er vanzelf op als er een debuglink vanaf wordt geopend (30 dagen na de laatste keer, uit te zetten), en je kunt er zelf adressen of reeksen bij zetten. Wie de debugger mag openen (Debugger-toegang (IP) of een debuglink) telt sowieso al niet mee; andersom opent een adres op deze lijst de debugger nooit.

Op Beheer → Bezoekers & toestemming staat de kaart Nieuwsbriefaanmeldingen (#aanmelden). Wat je hier zet, geldt voor elke module waar een bezoeker zich voor je nieuwsbrief aanmeldt, zoals UI-elementen en de chat.

Instelling Wat het doet
Privacypagina De pagina die onder elke aanmelding gelinkt staat. Heeft de module Consent (je cookiemelding) een privacypagina, dan gaat die voor; deze wordt alleen gebruikt als die er geen heeft. Kan per winkel of taal verschillen.
Toestemmingsregel De zin waar een nieuw aanmeldformulier mee begint. Wat een bezoeker precies zag en aanvinkte, wordt bij elke aanmelding bewaard en nooit achteraf herschreven.
Standaardlijst Waar een aanmelding heen gaat als de module zelf geen lijst kiest. Je kunt alleen een segment kiezen dat naar een e-mailtool stuurt. Met Geen lijst — aanmeldingen blijven in Nexym gaat er niets naar buiten.

Een nieuw UI-element begint met deze standaardlijst; bestaande elementen houden de lijst die ze al hadden. De chat volgt de standaardlijst, tenzij je daar zelf een andere kiest.

Een module die het bekeken product nodig heeft (de chat, een cross-sell-popup) zoekt de SKU in deze volgorde. De eerste die iets oplevert, wint:

Volgorde Waar Wat je zelf moet doen
1 window.nexymProduct = { sku: '…' } Eén regel in je producttemplate
2 Het laatste product in je dataLayer (view_item, item_id), als het script je dataLayer leest Niets, als je al GA4-events stuurt
3 data-nexym-sku="…" op een element in de pagina Eén attribuut in je producttemplate
4 Wat je shopplatform zelf op de pagina zet (Shopify, Magento, Shopware) Niets
5 Gestructureerde data op de pagina (JSON-LD Product.sku, microdata of product:retailer_item_id) Niets, de meeste shops hebben dit al

Welke van deze bronnen mee mogen doen, stel je in onder Beheer → Bezoekers & toestemming → Wat we meten. Vindt het script niets, dan laat een module die het product nodig heeft zich niet zien: liever geen aanbeveling dan de verkeerde.

Heb je al GA4 of Google Tag Manager? Dan zet je shop de belangrijke momenten al in een dataLayer: een productpagina die opent, iets dat in de winkelwagen gaat, een bestelling. Nexym kan die gebeurtenissen meelezen, in plaats van je te vragen alles nog een keer te taggen.

Zet het aan onder Beheer → Bezoekers & toestemming → Wat we meten met Lees de events die je site al pusht. Dat staat standaard uit. Staat het aan, dan worden de standaard e-commerce-events van GA4 meteen gelezen (Standaard GA4 e-commerce-events lezen staat dan standaard aan):

Op je site Wordt Onderwerp
view_item Product bekeken ecommerce.items.0.item_id
view_item_list Categorie bekeken ecommerce.item_list_name
add_to_cart In de winkelwagen ecommerce.items.0.item_id
remove_from_cart Uit de winkelwagen ecommerce.items.0.item_id
view_cart Winkelwagen getoond ecommerce.value, plus wat erin zit: tot twintig artikelnummers met aantallen
begin_checkout Afrekenen gestart ecommerce.items.0.item_id
add_shipping_info Verzendgegevens ingevuld ecommerce.items.0.item_id; de verzendmethode wordt bij het bezoek bewaard
add_payment_info Betaalgegevens ingevuld ecommerce.items.0.item_id; de betaalmethode wordt bij het bezoek bewaard
purchase Bestelling geplaatst ecommerce.transaction_id

Pusht je shop een event niet, dan komt het gewoon nooit binnen: er wordt niets verzonnen. Onder Gelezen op je site zie je per event of het de afgelopen dagen echt langskwam. Een standaard-event dat je shop niet heeft, staat daar als niet gepusht, niet als fout.

Gebruikt je shop andere namen, of staat het onderwerp ergens anders? Voeg dan zelf een rij toe onder Welk event wat betekent (hoogstens twintig). Een eigen rij met dezelfde eventnaam gaat altijd voor de standaard. search hoort niet bij de standaardset en lees je alleen met een eigen rij; de knop Vul de gebruikelijke GA4-events in zet die (en de rest) in één klik klaar. Heet je variabele anders dan dataLayer, vul die dan in bij Variabele om te lezen.

Product- en categorieweergaven heb je hier niet voor nodig: Nexym herkent een productpagina en een categoriepagina ook zelf, aan wat je shopplatform op de pagina zet en aan de gestructureerde data. Pusht je dataLayer ze wel, dan telt dat event en blijft de eigen meting stil: één weergave telt altijd één keer. Onder Gemeten door de pagina zelf zie je per soort welke bron telt.

Zet je Google Analytics 4 aan, dan zet Nexym ook zijn eigen events in je dataLayer, gemarkeerd, en leest die nooit terug als events van je shop. Zie GA4 & Nexym.

Onder Beheer → Setup → Hoe je bestand geleverd wordt zie je hoe groot je bestand is en hoeveel je bezoeker er echt van downloadt.

  • Stuur een kleiner bestand (standaard aan): commentaar en inspringing gaan eruit. De code zelf verandert niet.
  • Maak de broncode moeilijk leesbaar (standaard uit): namen worden ingekort en de structuur wordt samengepakt.

Het adres van het script blijft altijd hetzelfde. De inhoud verandert als je een module aan- of uitzet of een instelling opslaat. Browsers halen hoogstens vijf minuten later de nieuwe versie op.

Die vijf minuten zijn lastig als je iets aanpast en meteen wilt kijken. Zet daarom onder Je wijzigingen zien de optie Wijzigingen meteen toepassen aan. Elke pagina controleert dan bij het laden of er iets nieuws is. Het gaat na een uur vanzelf weer uit. Laat het niet onnodig aan: het kost je bezoekers een extra controle per pagina.

Onder Stoppen met leveren staat Lever niets aan mijn website. Dat is de ene schakelaar die alles in één keer stilzet: meten, klantherkenning en elke module. Modules uitzetten doet dat niet, want de basis blijft meten. Je tag blijft staan en antwoordt met een leeg bestand, dus er gaat niets stuk op je pagina’s. Binnen ongeveer een minuut is het overal stil, en na weer aanzetten is binnen ongeveer een minuut alles terug. Wat een pagina die van vóór het stoppen nog open stond daarna meet, neemt Nexym niet meer aan.

Dit is bedoeld voor het uur waarin er iets mis is op je site en het Nexym-deel er meteen af moet, zonder developer en zonder deploy.

  • De tag staat op elke pagina van je webshop (vlak voor </body>, of als eerste in <head> met Consent)
  • Al je domeinen staan onder Je websites, en er staat niets onder Gebruikte je tag zonder vermeld te staan
  • Wat zegt dat ze akkoord zijn past bij je cookiebanner
  • Je ziet je eigen bezoek in Operaties → Signalen → Live met ?nexym_debug=1
  • Je hebt een module in test bekeken via een debuglink