Hoe je catalogi, interesses, transacties en gebruikerslijsten in Personyze laadt: de vier afleveringsmethoden, SFTP, de formaatregels, het koppelen van kolommen en problemen oplossen.
27 min readUpdated 35 minutes ago
Data in Personyze laden
Waar data nu staan. Elk soort data heeft een eigen scherm in het panel, en elk daarvan opent dezelfde wizard Data importeren uit een bestand of feed (op de catalogusschermen verschijnt die als een sectie Inbound pipelines). Ga naar het scherm voor wat je laadt:
Wat je uploadt
Waar je het uploadt
Productcatalogus (voor productaanbevelingen) — inclusief productinteresses / affiniteitstags als kolommen
De schermen onder Aanbevelingen verschijnen zodra je account producten of artikelen heeft ingeschakeld. De wizard, de afleveringsmethoden en de formaatregels zijn op elk scherm gelijk — deze pagina is de gedeelde referentie; alleen de kolommen verschillen.
De wizard Data importeren uit een bestand of feed (stap 1, Uploadbron): kies een bestand, een URL-feed, SFTP of de JSON API. Het is dezelfde wizard op elk datascherm. Klik om te vergroten.
Bijna alles waarop Personyze personaliseert, kun je als databestand aanleveren — een productcatalogus voor aanbevelingen, een contentcatalogus voor artikelaanbevelingen, productinteresses voor cross-sell en affiniteitstargeting, gebruikerslijsten uit je CRM, en meer. Ze gaan allemaal door dezelfde wizard Data importeren uit een bestand of feed; alleen de kolommen verschillen.
Deze pagina behandelt hoe je het bestand erin krijgt — de afleveringsmethoden, de formaatregels waarop mensen struikelen, en de koppelstap — met echte, in de praktijk geteste voorbeelden.
Download een voorbeeldfeed
Begin met een kant-en-klaar bestand in plaats van een lege pagina. Elke template heeft de juiste kolomkoppen, de juiste aanhalingstekens en een paar voorbeeldrijen in precies het formaat dat de importer verwacht — vervang de voorbeeldrijen door je eigen data en upload. Alle gebruiken als placeholder example.com -URL’s en algemene demoproducten.
Feed
Kolommen
Downloaden
Productcatalogus Voor productaanbevelingen — de kernkolommen.
Internal ID, SKU, Title, Product Page URL, Main Image URL, Price, Sale Price, Is in Stock, Rating, Category, Brand
De template .tsv wordt gedownload als .txt (tabs blijven behouden) — hernoem naar .tsv als je tools dat verwachten, of upload het zoals het is.
Liever doorklikken? Hier is de hele flow — kies een bron, maak het bestand op, koppel de kolommen, importeer. Uitgebreide referentie hieronder.
Een feed uploaden
Kies hoe de data binnenkomen
Ga naar het scherm voor wat je laadt — Instellingen → Aanbevelingen → Productcatalogus / Artikelcatalogus / Producttracking, of Instellingen → Bezoekersattributen — en open Data importeren uit een bestand of feed. Kies een bron: een bestand uploaden (eenmalig), een URL- / RSS- / Atom-feed of SFTP (blijft gesynchroniseerd), of de JSON API (realtime). Overal dezelfde wizard — alleen de velden verschillen.
💡 Een bestand is een momentopname; een URL-, SFTP- of API-feed blijft volgens een schema synchroniseren.
Maak het bestand op
De importer is gescheiden door komma’s. Elke cel die zelf een komma bevat — een lijst interesses, meerdere categorieën — moet tussen dubbele aanhalingstekens staan, anders wordt die in extra kolommen gesplitst. Al het andere is gewone CSV.
💡 Het aantal “N kolommen gevonden” in de volgende stap is je controle van het inlezen — vertrouw daarop meer dan op hoe het bestand er in Excel uitziet.
Koppel de kolommen
Koppel elke gevonden kolom aan een Personyze-veld. Eén sleutel is verplicht — een Intern ID (of SKU / URL productpagina). Koppel de rest aan hun velden; voeg eventueel Voorbewerking of een Masker toe om een waarde bij binnenkomst op te schonen.
💡 De sleutel moet overeenkomen met hoe je catalogus is gesleuteld. “Importeert prima, maar matcht niets” is bijna altijd een sleutel die niet overeenkomt.
Controleren & importeren
Bevestig de koppeling en start de import. Een bestand laadt één keer; een URL-, SFTP- of API-feed blijft vanaf hier synchroniseren — ongeveer elke paar minuten opnieuw gelezen, zodat voorraad, prijzen en nieuwe records actueel blijven.
Klaar ✓
Kies hoe de data binnenkomen
Ga naar het scherm voor wat je laadt — Instellingen → Aanbevelingen → Productcatalogus / Artikelcatalogus / Producttracking, of Instellingen → Bezoekersattributen — en open Data importeren uit een bestand of feed. Kies een bron: een bestand uploaden (eenmalig), een URL- / RSS- / Atom-feed of SFTP (blijft gesynchroniseerd), of de JSON API (realtime). Overal dezelfde wizard — alleen de velden verschillen.
💡 Een bestand is een momentopname; een URL-, SFTP- of API-feed blijft volgens een schema synchroniseren.
Maak het bestand op
De importer is gescheiden door komma’s. Elke cel die zelf een komma bevat — een lijst interesses, meerdere categorieën — moet tussen dubbele aanhalingstekens staan, anders wordt die in extra kolommen gesplitst. Al het andere is gewone CSV.
💡 Het aantal “N kolommen gevonden” in de volgende stap is je controle van het inlezen — vertrouw daarop meer dan op hoe het bestand er in Excel uitziet.
Koppel de kolommen
Koppel elke gevonden kolom aan een Personyze-veld. Eén sleutel is verplicht — een Intern ID (of SKU / URL productpagina). Koppel de rest aan hun velden; voeg eventueel Voorbewerking of een Masker toe om een waarde bij binnenkomst op te schonen.
💡 De sleutel moet overeenkomen met hoe je catalogus is gesleuteld. “Importeert prima, maar matcht niets” is bijna altijd een sleutel die niet overeenkomt.
Controleren & importeren
Bevestig de koppeling en start de import. Een bestand laadt één keer; een URL-, SFTP- of API-feed blijft vanaf hier synchroniseren — ongeveer elke paar minuten opnieuw gelezen, zodat voorraad, prijzen en nieuwe records actueel blijven.
Klaar ✓
Elke catalogus op één scherm, elk met een eigen status, een eigen laatste synchronisatie en een eigen manier om data erin te krijgen. Optionele catalogi zeggen dat ook. Klik om te vergroten.
Het catalogusscherm, en wat het je vertelt
Instellingen → Aanbevelingen → Productcatalogus (en Artikelcatalogus voor content) is geen enkel uploadformulier meer. Het is een overzicht van elke catalogus die de engine voedt, elk met een eigen status, zodat “zitten mijn data erin?” wordt beantwoord door te kijken in plaats van door opnieuw te importeren:
Rij
Wat die bevat
Actieve feeds
Wat de catalogus gesynchroniseerd houdt, en of die In orde is.
Productcatalogus
De items zelf, met Laatste synchronisatie.
Interesses
Producten groeperen op thema.
Categorieën
De bladerpaden die bezoekers volgen.
Handmatige cross-selllinks / upselllinks
Paren die je zelf vastlegt, per bestand of met de hand.
Systeemgegenereerde cross-sell
Seeddata die de engine op gang helpen totdat live aankoopdata het overnemen.
Elke rij heeft een eigen status — In orde, Geconfigureerd, Niet ingesteld, Niet geconfigureerd — en alles behalve de catalogus zelf is gemarkeerd als optioneel, zodat je bij een eerste installatie ziet wat echt verplicht is.
Data bereiken elk ervan op dezelfde vier manieren: een bestandsupload, een URL-feed, SFTP of de REST API. Elke rij biedt een eigen Upload file or set RSS/Atom feed, zodat je niet hoeft uit te zoeken bij welk scherm een bepaalde catalogus hoort.
Twee sleutels, niet één
Producten kunnen aan maximaal twee sleutels worden gekoppeld — Intern ID en SKU — zodat events op de site worden gekoppeld aan welke identifier je site ook toevallig uitstuurt. Eigen velden kun je op elk moment toevoegen; niets hoeft vooraf te worden gedeclareerd.
Welke kolom is je interne ID?
Dit fout doen is de duurste fout in een feed: de catalogus vult zich, de aanbevelingen worden weergegeven, en niets matcht met wat bezoekers echt bekeken. Daarom beantwoordt de importer dit met bewijs in plaats van met een gok.
Hij vergelijkt elke kandidaatkolom met de ID’s die je site al verstuurt en meldt wat hij heeft gemeten — “komt overeen met 96% van de ID’s die je site al verstuurt”, “geen van deze waarden komt voor in wat je site verstuurt”, “gecontroleerd over de eerste 500 rijen”. Kolommen die helemaal geen sleutel kunnen zijn — leeg in elke gecontroleerde rij, ontbrekend in sommige rijen, identiek aan een andere kolom — worden als zodanig gemarkeerd.
Zijn er nog geen events binnengekomen, dan valt hij terug, en zegt hij op welke trede hij staat:
Gemeten tegen echte events — het antwoord waarop je kunt vertrouwen.
Gevonden op de itempagina — “er zijn nog geen events binnengekomen, dus we hebben in plaats daarvan een van je itempagina’s gelezen”.
Beste gok alleen op basis van de vorm van het bestand — en dat zegt hij ook: “controleer het tegen wat je site verstuurt”.
{W}Koppel de URL én de ID. De adviseur raadt beide aan — “Koppel beide: deze als Intern ID en die als URL productpagina” — omdat ze verschillende taken hebben. De ID is wat events voor winkelwagen en aankoop meedragen; de URL is waardoor een landingspagina überhaupt als productpagina kan worden herkend. Koppel je alleen de ID, dan heeft targeting op productpagina’s niets om op te matchen.
Voorbeeld voordat je importeert
De samenvatting Klaar om te importeren heeft Wijzigingen vooraf bekijken — een proefrun die niets wegschrijft en je vertelt wat de echte run zou doen:
Hoeveel rijen nieuw, gewijzigd en ongewijzigd zijn. Deze aantallen gaan mee met elke run, niet alleen met het voorbeeld.
Welke kolommen zouden veranderen — zodat een koppelfout verschijnt als “de prijs van elke rij zou veranderen” in plaats van als een stille overschrijving.
Tot vijf voorbeelden van voor en na, en tot vijf van de nieuwe sleutels. Bewust begrensd: een voorbeeld van een hele catalogus moet geen megabyte aan waarden terug naar de browser sturen.
{I}Een hoog aantal “nieuw” bij een herimport is de waarschuwing. Een catalogus die je al hebt opnieuw importeren, zou vrijwel volledig ongewijzigd moeten zijn. Is bijna elke rij nieuw, dan is de sleutelkolom fout, en in het voorbeeld wordt dat duidelijk in plaats van nadat de catalogus is verdubbeld.
Vier manieren om een feed aan te leveren
In de eerste stap van de wizard (Uploadbron) kies je hoe de data Personyze bereiken. De keuze gaat eigenlijk over hoe vaak ze veranderen.
1 Bestand uploaden — CSV, TSV of XLSX vanaf je computer. Een momentopname; het best voor eenmalige lijsten en kleine exports. 2 URL- / RSS- / Atom-feed — plak een openbare URL; Personyze haalt die volgens een schema op (ongeveer elke 10 minuten). Het best voor een catalogus of lijst die door je platform of een feeddienst actueel wordt gehouden. 3 SFTP-push — je zet bestanden neer op een ingesteld SFTP-endpoint. Het best voor grote nachtelijke exports uit een datawarehouse. 4 Push via de JSON API — POST records in realtime vanuit je backend.
Eenmalig of klein → upload een bestand. De snelste manier om een lijst één keer te laden.
Automatisch actueel → URL-feed. Wijs Personyze op een live feed-URL — een Google Shopping-feed, een export van een feeddienst, de productfeed van je platform — en die wordt volgens een schema opnieuw gelezen, zodat voorraad, prijzen en nieuwe producten actueel blijven zonder dat je opnieuw uploadt. Dit is de gebruikelijke keuze voor een productcatalogus.
Groot & ingepland → SFTP. Voor grote nachtelijke dumps waarbij een openbare URL niet gepast is. Je kunt je eigen SFTP-account instellen in een paar klikken — je hoeft niemand iets te vragen.
Realtime & je beheert de backend zelf → API-push. POST records zodra ze veranderen.
Een live URL-, SFTP- of API-feed blijft na de eerste import synchroniseren; een bestandsupload is een momentopname die je opnieuw uploadt om te verversen.
SFTP-bestandsaanlevering — bestanden neerzetten en vergeten
SFTP is de optie waarbij je niets hoeft te doen. Je krijgt een privé-uploadaccount, je exportscript zet bestanden in de map /upload en elke nieuwe upload wordt automatisch geïmporteerd, een paar minuten nadat die klaar is. Niemand klikt iets in het panel.
Waar je het vindt: je SFTP-inloggegevens staan onder Instellingen → Siteprofiel, in de sectie SFTP-bestandsaanlevering — die pagina open je telkens als je de host, de gebruikersnaam of een nieuw wachtwoord nodig hebt. Dezelfde kaart met inloggegevens verschijnt ook overal waar de importwizard SFTP als bron aanbiedt: Product- en Artikeltracking, de schermen Productcatalogus en Artikelcatalogus, en Bezoekersattributen.
Instellingen → Siteprofiel → SFTP-bestandsaanlevering. Eén knop stelt het account in; de tabel eronder is de hele routeringsregel — de bestandsnaam bepaalt wat een upload wordt. Klik om te vergroten.
Het account instellen
Klik op SFTP-toegang instellen.
Personyze maakt een privéaccount voor je aan. Terwijl dat gebeurt, staat er “Je SFTP-account wordt ingesteld — meestal binnen 5 minuten”, en de kaart vult zichzelf in zodra het klaar is. Je kunt de pagina verlaten en terugkomen.
De kaart toont daarna je Host (sftp://upload.personyze.com), Gebruikersnaam en Wachtwoord — met de knoppen Tonen en Kopiëren.
Eén account dient elk bestandstype hieronder, en het hoort bij dit siteprofiel. Zet alle bestanden in de map /upload — niets daarbuiten wordt opgepikt.
Zodra het account bestaat, toont de kaart alles wat je nodig hebt om te verbinden. Het wachtwoord blijft gemaskeerd totdat je op Tonen of Kopiëren drukt. Klik om te vergroten.
Het wachtwoord wordt pas opgehaald als je op Tonen of Kopiëren drukt, nooit samen met de pagina zelf — zo blijft het buiten paginabronnen en logs. Wachtwoord roteren maakt een nieuw wachtwoord aan en het oude werkt binnen een paar minuten niet meer, dus verander het tegelijk in je exportjob. Is je account in het verleden handmatig door support ingesteld, dan is er geen opgeslagen wachtwoord om te tonen; roteer één keer en je hebt er een die je kunt zien.
De bestandsnaam bepaalt wat een upload is
Er is geen configuratie per upload. De importer routeert elk bestand op basis van de naam; de extensie vertelt alleen het formaat. Enkelvoud en meervoud werken allebei — product.csv is hetzelfde als products.csv.
Geaccepteerde extensies: .csv, .json, .xml, .xls, .xlsx. Een nieuwer bestand opnieuw uploaden importeert het opnieuw — het nieuwste bestand met een passende naam wint — dus een nachtelijke job kan gewoon elke keer dezelfde naam overschrijven.
De eerste upload: één keer koppelen
Een bestand moet worden gekoppeld voordat er iets uit wordt geïmporteerd — Personyze moet weten welke kolom wat bevat. Dat stel je niet vooraf in: zet eerst het bestand neer, en het panel komt naar jou toe.
Binnen een paar minuten nadat de upload klaar is, verschijnt er een banner op het doelscherm — voor users.csv is dat Instellingen → Bezoekersattributen, onder Geïmporteerde gebruikerslijsten:
In je SFTP-map: users.csv 1 KB · 36 min geleden geüpload Nog niet gekoppeld, dus er wordt niets uit geïmporteerd: Personyze weet nog niet welke kolom van het bestand wat bevat.
Ernaast staan twee knoppen: Opnieuw controleren, dat de map opnieuw scant, en Dit bestand koppelen, dat de koppeling opent.
Het koppelvenster
“users.csv” uit je SFTP-map koppelen toont alles wat het uit het bestand zelf heeft afgeleid:
Lijstnaam (alleen gebruikersfeeds) — iedereen in het bestand komt in deze lijst, en de lijst is waarop je campagnes targeten. Je hoeft die niet vooraf aan te maken; door hem hier een naam te geven, maak je hem aan.
Een rij per kolom, met de kolom in het bestand, het profielveld waaraan die wordt gekoppeld, en voorbeeldwaarden uit je echte bestand — zodat je in één oogopslag ziet dat CRM ID echt bij SFTP-TEST-1 terechtkwam en niet bij iets anders.
Een samenvattende regel: hoeveel kolommen er zijn gevonden, hoeveel er zijn gekoppeld, en hoeveel rijen het bestand bevat. Alles wat op Negeren blijft staan, wordt niet geïmporteerd.
Klik op De koppeling opslaan en het bestand wordt geïmporteerd. Dat is een eenmalige stap per bestandsnaam — vanaf dan wordt elke upload van users.csv vanzelf geïmporteerd met dezelfde koppeling.
Zolang een bestand niet is gekoppeld, gebeurt er niets — en niets vertelt dat aan je script. De upload zelf is gelukt, dus een exportjob ziet succes terwijl de data ongelezen blijven. Heb je een bestand neergezet en bewegen de cijfers niet, open dan het doelscherm en zoek naar de banner hierboven.
Zodra een feed draait, kun je op hetzelfde scherm Mail mij als deze feed stopt met synchroniseren aanzetten — de goedkoopste manier om te ontdekken dat de export van gisternacht nooit is aangekomen. De lijst met bronnen kun je ook filteren op herkomst: Geüpload, RSS / Atom, SFTP of API-push.
De formaatregel die het meest uitmaakt
De bestandsimporter van Personyze is gescheiden door komma’s, en dat kun je in de uploadstap niet veranderen. Dat ene feit stuurt elke opmaakbeslissing:
Kolommen worden gescheiden door komma’s. Geen puntkomma’s, geen verticale strepen, geen tabs (zie de opmerking over TSV hieronder voor een echte tabgescheiden feed).
Bevat een waarde in een cel een komma, dan moet die cel tussen dubbele aanhalingstekens staan, anders splitst de importer die in extra kolommen.
Dit is standaard-CSV, maar het is de allergrootste reden dat een import zich misdraagt, dus het is de moeite waard om het duidelijk te zeggen.
Uitgewerkt voorbeeld: productinteresses
Interesses zijn een lijst tags per product — gebruikt voor cross-sell, affiniteitssegmenten en aanbevelingen op basis van interesse. Het formaat dat werkt, is twee kolommen, Id en Interest, met de interesses gescheiden door komma’s in een cel tussen aanhalingstekens:
De cel Interest van elk product bevat een andere set tags. Door de aanhalingstekens overleven de komma’s binnenin. Zonder aanhalingstekens wordt NW-1001,"Sneakers,Footwear,Casual,Running"vijf kolommen in plaats van twee, en de import mislukt.
📥 Download het voorbeeldbestand met interesses — open het in een gewone teksteditor (geen spreadsheet) om de aanhalingstekens precies te zien zoals de importer ze nodig heeft.
Scheidingstekens — wat werkt en wat niet
Doel
Werkt het?
Hoe
Interesses gescheiden door komma’s in één cel
Ja
Zet de cel tussen aanhalingstekens: "Sneakers,Footwear,Running"
Interesses verdeeld over elk een eigen kolom
Ja
Koppel elke interessekolom aan hetzelfde veld Interesses
Verticale streep / schuine streep / puntkomma tussen interesses
Nee
Het veld Interesses accepteert alleen komma’s
Puntkomma als scheidingsteken voor kolommen
Nee
De uploadstap staat vast op komma
Komma’s zonder aanhalingstekens in een cel
Nee
De importer splitst ze in nieuwe kolommen
Opmerking over TSV: de wizard accepteert .tsv, en een echte tabgescheiden feed (zoals een Google Shopping-feed) wordt probleemloos geïmporteerd — tabs zijn het scheidingsteken, dus komma’s in beschrijvingen zijn gewoon tekst. De kommaregel hierboven gaat specifiek over kommagescheiden bestanden.
Hetzelfde idee voor een categorieveld
Het patroon van een komma in een cel tussen aanhalingstekens is niet alleen voor interesses — elk veld dat meer dan één waarde bevat, werkt op dezelfde manier. Een categorieveld is het gebruikelijke tweede geval. Twee manieren om het weer te geven, allebei geldig:
Een hiërarchisch pad in één cel — de conventie van Google-feeds, met > tussen de niveaus. Geen komma’s, dus geen aanhalingstekens nodig:
Meerdere categorieën in één cel — hoort een product bij meerdere, scheid ze dan met komma’s tussen aanhalingstekens, precies zoals interesses:
Category
"Sneakers,Footwear,Running"
De regel is altijd hetzelfde: een komma in een waarde betekent dat de cel tussen aanhalingstekens moet. Een door >gescheiden pad, of een door /gescheiden pad, heeft geen komma’s, dus het gaat zonder aanhalingstekens mee.
Extra velden in hetzelfde bestand meenemen
Je hebt geen apart bestand per attribuut nodig. Eén rij kan de sleutel plus interesses plus categorie plus alles wat je verder in het record wilt meenemen — merk, beschikbaarheid, een eigen tag — en je koppelt elke kolom in de stap Kolommen kiezen:
Alleen de cellen Interest bevatten komma’s, dus alleen die staan tussen aanhalingstekens; de rest gaat mee als gewone kolommen. Koppel Id → Internal ID, Interest → Interests, en elke overige kolom aan het bijbehorende Personyze-veld.
Elke import heeft één sleutelkolom nodig, anders blijft Volgende uitgeschakeld met een rode melding “Missing required mapping”:
Intern ID — de sleutel van het record (product-ID, gebruikers-ID).
URL productpagina — de volledige URL van de pagina, als alternatieve sleutel.
De sleutel moet overeenkomen met waarop de catalogus al is gesleuteld. Is je catalogus gesleuteld op SKU, dan moet de kolom Id van het bestand diezelfde SKU bevatten. Een import die voltooit maar “met geen enkel product matcht”, is bijna altijd een sleutel die niet overeenkomt — de ID’s zijn prima geladen, ze lijnen alleen niet uit.
De kolommen koppelen
In de stap Kolommen kiezen toont Personyze elke gevonden kolom en laat je die aan een Personyze-veld koppelen, met optionele Voorbewerking en Masker per kolom.
De stap voor het koppelen van kolommen. Personyze meldt hoeveel kolommen het heeft gevonden en toont voorbeeldrijen, zodat je kunt bevestigen dat het bestand goed is ingelezen voordat je koppelt.
Het aantal kolommen in deze stap is je controle van het inlezen. Voor het interessebestand met twee kolommen moet er 2 bronkolommen gevonden staan. Staat er 6, dan zijn de aanhalingstekens bij het exporteren verloren gegaan — los het op en upload opnieuw. Beoordeel op wat deze stap meldt, niet op hoe het bestand er in Excel of Numbers uitziet.
Voor interesses: koppel Id → Intern ID (dat haalt de rode fout weg), koppel Interest → Interesses, laat Voorbewerking = Ongewijzigd doorgeven en Masker = Alles doorgeven staan, en ga door naar Klaar voor import.
Het bestand bouwen (herhaalbaar recept)
Heb je een bronexport met één kolom interesses die met komma’s zijn samengevoegd, maak dan met een paar regels Python het bestand met twee kolommen en aanhalingstekens — csv.writer zet automatisch aanhalingstekens rond elk veld met een komma:
import csv
rows = list(csv.DictReader(open('source.csv', encoding='utf-8-sig')))
with open('Id_Interest.csv', 'w', newline='', encoding='utf-8-sig') as f:
w = csv.writer(f) # quotes cells with commas automatically
w.writerow(['Id', 'Interest'])
for r in rows:
ints = ','.join(x.strip() for x in r['Interests'].split(',') if x.strip())
w.writerow([r['Product ID'], ints])
Feeds voor de productcatalogus
Een productcatalogus is gesleuteld op een productidentifier — en je kunt Intern ID, SKU of beide aanleveren. Maar één sleutel is verplicht.
Als je geen product-ID hebt
Heeft je catalogus geen stabiele ID, dan kan Personyze er automatisch een genereren uit een hash van de URL van de productpagina. Dat is genoeg om een product te herkennen voor paginaweergaven en toevoegen aan de winkelwagen — de URL is elke keer hetzelfde, dus de hash is stabiel.
Bij het volgen van aankopen wordt een URL-hash lastig. Een bedank- of orderbevestigingspagina bevat meestal niet de product-URL’s van wat er is gekocht, dus er valt niets te hashen. Aankopen volgen tegen gehashte ID’s kan, maar de installatie is priegelig. Het is veel eenvoudiger als je een echte product-ID hebt die Personyze automatisch uit een paginavariabele kan halen — een waarde in de datalayer, een variabele van een tagmanager of een veld in de DOM — omdat dezelfde ID dan de catalogus, het gedrag op de site en de aankoop aan elkaar koppelt. Verkoop je iets, gebruik dan een echte ID. De terugval op een URL-hash is bedoeld voor personalisatie op weergaven en klikken als er geen ID bestaat.
Het catalogusbestand
Een productcatalogus gebruikt meer kolommen, maar dezelfde regels. Een typische indeling:
Internal ID, SKU, Title, Product Page URL, Main Image URL,
Price, Sale Price, Is in Stock, Rating
Koppel Intern ID als sleutel, URL hoofdafbeelding en URL productpagina zodat kaarten worden weergegeven en linken, en Price / Sale Price / Is in Stock zodat widgets prijzen, kortingen en voorraadbadges kunnen tonen. Lege cellen zijn prima — een lege Sale Price betekent gewoon geen korting.
📥 Download het voorbeeldbestand voor de productcatalogus — de echte kolomindeling van een live winkel.
Voor een live catalogus is de praktische opzet een URL-feed: wijs Personyze op een feed die je platform of een feeddienst al maakt. Een standaard Google Shopping- / Merchant-feed (TSV, met id, title, link, price, availability, image_link, product_type, enz.) werkt direct — Personyze leest die kolommen en haalt de URL opnieuw op, zodat voorraad en prijzen actueel blijven. Heb je nog geen feed, dan maken tools zoals Feedoptimise, DataFeedWatch of de eigen export van je platform er een.
De aanbevelingslogica — bestsellers, samen bekeken, op basis van de winkelwagen, op basis van interesse — stel je in bij de algoritmeconfiguratie van de actie, en die leest uit de catalogus die je hier aanlevert. Zie De product-/contentfeed instellen en Algoritmen voor productaanbevelingen.
Afbeeldingen: één verplicht, meer optioneel
Elk product heeft één hoofdafbeelding nodig, zodat aanbevelingskaarten kunnen worden weergegeven. Je kunt daarnaast meer afbeeldingskolommen toevoegen — de extra afbeeldingen voeden widgets die de foto laten rouleren of bij hover met de muis wisselen. Koppel de eerste aan URL hoofdafbeelding en de rest aan de extra afbeeldingsvelden.
Neem zoveel eigen velden mee als je wilt
Naast de standaardkolommen kan een feedrij alle extra data bevatten die je hebt — verzendkosten, staffelprijzen, prijzen per klanttype, tags, merk, kleur, alles. Drie dingen die je met een eigen veld kunt doen:
Tonen — zet het op de aanbevelingskaart (een vlag “Gratis verzending”, een ledenprijs).
Erop filteren — beperk een aanbeveling tot een merk, kleur of categorie.
De AI erop trainen — geef het aanbevelingsmodel meer signaal over elk product, zodat het beter rangschikt.
Meestal zijn het eenvoudige attributen zoals merk of kleur; er is geen limiet, en niet-gekoppelde kolommen worden gewoon genegeerd.
Samen kopen / voorwaardelijke prijzen
Je kunt in de feed ook een prijs per combinatie meenemen — een afgeprijsde prijs die geldt als specifieke producten samen worden gekocht — zodat de prijs van een bundel direct uit de catalogus komt in plaats van te worden berekend. Het concept en de installatie staan in Korting bij samen kopen voor e-commerceaanbevelingen. (De exacte kolomindeling voor combinatieprijzen wordt hier nog toegevoegd.)
Feeds voor de contentcatalogus
Een contentcatalogus (artikelen, video’s, gidsen) drijft contentaanbevelingen aan. De lichtste versie is alleen de content-URL — Personyze genereert automatisch een ID en volgt betrokkenheid via de URL of het URL-pad, zodat weergaven en leesacties correct worden toegeschreven zonder dat je een sleutel aanlevert. Heb je er een, dan kun je ook je eigen Intern ID opgeven.
Al het andere werkt zoals bij de productcatalogus: één hoofdafbeelding (meer optioneel voor hoverwidgets), plus alle eigen kolommen die je wilt tonen, waarop je wilt filteren of waarop je wilt trainen — contenttype, categorie, auteur, publicatiedatum, tags.
Feeds met gebruikerslijsten (CRM-verrijking voor targeting)
Een gebruikerslijst koppelt CRM-data aan je bezoekers. Het minimum is een sleutel plus één attribuut:
E-mailadres (of een intern ID / CRM-ID) als sleutel, en
minstens één extra kolom — voornaam, accounttype, wat dan ook.
Je kunt zoveel attribuutkolommen toevoegen als je wilt. Het belangrijke deel: alles wat je hier vult, wordt beschikbaar in targeting, niet alleen in de actie die de lijst gebruikt. Laad de voornaam of het accounttype van een bezoeker en je kunt later een doelgroep bouwen die daarop target — “Accounttype is VIP”, “Branche is Retail” — precies zoals bij elk ander profielveld. Lever het aan als bestand, of houd het gesynchroniseerd via SFTP of een feed-URL.
Cross-sell- & upsellparen (in de productcatalogus)
Waar:Instellingen → Aanbevelingen → Productcatalogus. Onder de feeds en velden heeft het catalogusscherm twee optionele secties om Personyze te vertellen welke producten bij elkaar horen. Beide zijn optioneel — de engine leert combinaties ook zelf uit live gedrag — maar ze zijn handig om te lanceren voordat je data hebt, of voor combinaties die je met de hand wilt beheren.
Het scherm Productcatalogus (Instellingen → Aanbevelingen → Productcatalogus): je catalogus, plus de optionele secties Handmatige cross-selllinks, Handmatige upselllinks en Systeemgegenereerde cross-sell (seeddata). Klik om te vergroten.
Handmatige cross-sell- / upselllinks (optioneel)
Expliciete combinaties die je zelf vastlegt — de links “vaak samen gekocht” of “misschien wil je ook”. Ze worden gebruikt als het algoritme van een aanbevelingscampagne op “Cross-sell (handmatig)” of “Up-sell (handmatig)” staat:
Cross-sell koppelt een basisproduct aan een aanbevolen item.
Upsell koppelt een basisproduct aan een item met een hogere waarde.
Voeg paren met de hand toe, of importeer een bestand — één link per rij, met onderwerp en gekoppeld product allebei op intern ID. Links hebben een richting, dus wil je in beide richtingen aanbevelen, voeg dan beide rijen toe:
Subject Internal ID,Linked Internal ID
AQB14X,AQB15X
AQB15X,AQB14X
BARR4FJ3,LABAR4114
Een manier om de aanbevelingsengine op gang te helpen voordat die echte aankopen heeft gezien. Je voegt seedsets toe: vertel Personyze dat een paar producten samen is gekocht, en het beveelt ze aan elkaar aan totdat live aankoopdata het overnemen. Elke seedset is een item Onderwerp, een item Aanbevolen, en welke interactie het nabootst — “Gekocht → Gekocht” helpt samen-gekocht-cross-sell op gang. Ideaal voor een gloednieuwe catalogus zonder gedragsdata; zodra echte aankopen binnenkomen, wegen die vanzelf zwaarder dan de seeds.
1. Maak een seedset. Klik op de kaart Systeemgegenereerde cross-sell op Nieuwe seedset. Elke seed koppelt een product Onderwerp aan een product Aanbevolen; kies welke Interactie het nabootst (“Gekocht → Gekocht” helpt samen-gekocht-cross-sell op gang), en stel eventueel het percentage, het aantal gebruikers en de transacties in. Klik om te vergroten.2. Kies de producten. Kies de producten Onderwerp en Aanbevolen uit de doorzoekbare lijst (beide moeten al in de catalogus staan) — elke combinatie wordt een seedset — en klik daarna op Seedset toevoegen. Klik om te vergroten.3. Het verschijnt in de lijst — de kaart springt op Geconfigureerd en elke seedset toont het paar (met miniaturen), de interactie, het percentage en het aantal gebruikers / transacties. De engine beveelt het paar nu aan totdat live aankoopdata het overnemen. Klik om te vergroten.
Door eerdere aankopen te uploaden, kan Personyze aanbevelingen trainen op echt koopgedrag en vanaf dag één targeten op aankoopgeschiedenis, voordat het die aankopen live heeft gezien. Elke rij is sober — net genoeg om te zeggen wie wat wanneer kocht:
een klantsleutel — e-mailadres of CRM-ID;
de product-ID of SKU die is gekocht;
het tijdstip van de transactie.
Titel, aantal, prijs en valuta zijn niet nodig — Personyze leest die uit de catalogus. Gebruik voor het tijdstip een standaard datum-tijd zoals 2026-07-21 14:30:00 of een Unix-epoch zoals 1751389200. (Controleer bij twijfel het exact geaccepteerde formaat bij je accountmanager.)
Naast de typen hierboven laadt dezelfde wizard alle tabeldata — affiniteitstabellen, segmentlijsten, sets met eigen attributen. Kies de afleveringsmethode, zorg dat het formaat klopt, koppel een sleutel, koppel de rest.
Een contentcatalogus (artikelen, video’s, gidsen) werkt precies hetzelfde — de sleutelkolommen worden de content-ID en URL, met titel, afbeelding en alle attributen waarop je wilt aanbevelen of targeten. Hetzelfde geldt voor cross-selltabellen, affiniteitsdata en CRM-gebruikerslijsten: kies de afleveringsmethode, zorg dat het formaat klopt, koppel een sleutel, koppel de rest.
De import afronden
De laatste stap: controleer de koppeling en start de import. Een bestand is een eenmalige lading; een URL-, SFTP- of API-feed blijft vanaf hier volgens zijn schema synchroniseren.
Problemen oplossen
Symptoom
Oorzaak
Oplossing
“6 bronkolommen gevonden” (2 verwacht)
De cel met interesses stond niet tussen aanhalingstekens, of de aanhalingstekens zijn bij het exporteren verwijderd
Exporteer opnieuw met de cel tussen aanhalingstekens; controleer dat het ruwe bestand dit toont: "Sneakers,Footwear,..."
De hele rij komt in één kolom terecht
Je beoordeelt op een spreadsheet, niet op de importer
Ga uit van wat stap 2/3 meldt, niet van Excel of Numbers
“Missing required mapping” (rood)
Er is geen Intern ID / URL productpagina gekoppeld
Koppel je sleutelkolom aan Intern ID (of URL productpagina)
Interesses worden als één lange tekenreeks geïmporteerd
Het scheidingsteken is geen komma
Gebruik komma’s tussen interesses, niets anders
Importeert prima, maar matcht met geen enkel product
De Id komt niet overeen met de catalogussleutel
Gebruik de identifier waarop de catalogus is gesleuteld (vaak SKU)
In plaats daarvan een waarde live van de pagina lezen
Los van het importeren van bestanden kan Personyze ook een waarde live van een productpagina lezen terwijl bezoekers surfen — handig als de data niet in een feed staan. Die route gebruikt een CSS-selector of JavaScript in plaats van een bestand, en wordt behandeld in Data van je site vastleggen. Twee praktijknotities die het meenemen waard zijn:
Metatags kun je niet aanklikken met de kiezer op de pagina — ze staan in <head> en worden niet weergegeven. Typ de selector met de hand, bijv. meta[property="og:type"].
In winkels die met JS worden weergegeven (VTEX, React), kunnen meta-/og-tags bij het laden van de pagina leeg zijn en pas na hydratatie worden gevuld, of alleen via prerender aan zoekmachinebots worden geserveerd. Een selector die niets oplevert, is meestal dit gat in timing of prerender, geen verkeerde selector. Een element dat op de server wordt weergegeven, is betrouwbaarder. De dataLayer van GTM bevat de referentie ook — maar lees die in winkels met één pagina zorgvuldig, want de dataLayer stapelt zich op over producten heen en een vroege invoer kan het eerder bekeken item zijn.
De korte versie
Kommagescheiden bestand; zet elke cel met een komma tussen aanhalingstekens; koppel één sleutelkolom (Intern ID of URL productpagina) die overeenkomt met hoe je catalogus is gesleuteld; koppel de rest. Upload een bestand voor eenmalig gebruik, of wijs Personyze op een URL-, SFTP- of API-feed om het gesynchroniseerd te houden.