FeedMender/Wat we controleren
Dekking
Waar een feedbestand op gecontroleerd kan worden
Er zijn 225 afzonderlijke controles. Deze pagina groepeert ze zoals het scanrapport dat doet, en legt de redenering uit achter de controles die er het meest toe doen. Wil je de ruwe lijst, met elke code, het attribuut dat hij leest en de ernst ervan, dan is dat de volledige lijst met controles.
Google publiceert enkele honderden pagina's aan eisen voor productdata. Een bestand kan ze niet allemaal aantonen, en dat pretenderen we ook niet. Wat volgt is het deel dat uit het bestand zelf kan worden vastgesteld, plus de twee gebieden waarvoor één netwerkverzoek nodig is: de afbeeldingen en de robots-regels. Wat een bestand niet kan zeggen, staat bewust op een aparte pagina.
Kunnen we het bestand überhaupt lezen
Dit draait voordat er naar ook maar één waarde wordt gekeken, want een waardecontrole op een slecht geparsed bestand is erger dan geen controle: het is een stellig antwoord over de verkeerde data. Het scheidingsteken wordt gekozen op basis van welk teken een consistent aantal velden oplevert, niet op basis van welk teken het vaakst voorkomt. Andere coderingen dan UTF-8 worden gelezen en omgezet. Een byte order mark wordt verwijderd voordat iets verderop in de keten hem ziet. XML wordt getest op well-formedness, op de Google-namespace en op de aanwezigheid van item-elementen.
Waar een bestand dubbelzinnig is op een manier die data tussen kolommen zou verschuiven, stopt de scan in plaats van te gokken. Met het verkeerde scheidingsteken belanden prijzen in het availability-veld en is elke bevinding daarna fictie. Waar alleen rijen wegvallen, zegt de telling dat in duidelijke cijfers: een rapport over 48 van de 50 producten dat zich als volledig presenteert, is de ene fout die een klant niet kan opmerken, dus het is de ene die we weigeren te produceren.
Prijzen en valuta
Komma's als decimaalteken, een ontbrekende valutacode en door elkaar gebruikte duizendtal- en
decimaaltekens worden allemaal gevangen. Het echt dubbelzinnige geval wordt eerlijk benoemd in
plaats van gegokt: 1.234 is 1234 in continentale notatie en 1.234 in Engelse
notatie, en niets in het bestand bepaalt welke van de twee het is. We weigeren hem liever dan
een product met een factor duizend te herprijzen.
Naast het formaat leest de scan de relaties tussen prijsvelden: een sale_price in
een andere valuta dan price, een actieperiode zonder actieprijs erin, een leden- of
loyaliteitsprijs die in het gewone prijsveld staat, en eenheden voor unit pricing uit een andere
familie dan de basiseenheid, kilogrammen tegenover liters. Een prijs van nul wordt alleen
gemarkeerd buiten de gevallen waarin Google die daadwerkelijk toestaat, zoals een mobiel toestel
dat met een abonnement wordt verkocht.
De volledige redenering staat op de pagina over prijs en valuta.
Productidentifiers
Elke GTIN wordt getoetst aan het GS1 mod-10-controlecijfer, en de exemplaren die te herstellen
zijn, een ISBN-10 naar ISBN-13, een UPC-E naar UPC-A, worden hersteld. De controles die vrijwel
niemand anders doet, zijn die op de beperkte prefixen: een barcode met een correct controlecijfer
die Google toch afwijst omdat hij met 2, 02 of 04 begint,
of omdat het een couponprefix is, afgelezen van de met nullen aangevulde 13-cijferige vorm. Dat
onderscheid doet ertoe: een 12-cijferige UPC-A die met 98 begint, normaliseert naar
098, een volkomen legitieme bedrijfsprefix, dus de ruwe tekenreeks is het verkeerde
om te testen.
De wetenschappelijke notatie van Excel (8,71234E+12) wordt gevangen, een ontbrekend
merk wordt gescheiden gehouden van een ontbrekende MPN omdat ze aan verschillende regels moeten
voldoen, en een identifier_exists: no die een opgegeven GTIN of merk-plus-MPN
tegenspreekt, wordt gerapporteerd. De pagina over
identifiers loopt door waarom een geldig ogende barcode toch wordt geweigerd.
Titels en beschrijvingen
Promotietekst waarmee een product wordt afgekeurd, gratis verzending, het woord SALE, een percentage, een prijs in de titel, wordt gemarkeerd. Meer dan 150 tekens wordt gerapporteerd als waarschuwing en niet als afkeuring, omdat Google afkapt en het product met een afgekapte titel toont, en dat is een andere, stillere kostenpost. Schreeuwende hoofdletters worden genormaliseerd zonder echte acroniemen als USB, LED of XL plat te slaan. Beschrijvingen worden gecontroleerd op HTML, op de limiet van 5.000 tekens, en op te mager zijn om Google te laten begrijpen wat het product eigenlijk is.
Voorraad, datums en beschikbaarheid
Nederlandse, Franse en Duitse voorraadbewoordingen worden afgebeeld op de vier waarden die
Google accepteert, en limited_availability, dat in bestandsfeeds niet meer bestaat,
wordt uitgefaseerd. Beschikbaarheid wordt afgeleid uit een kolom met voorraadaantallen wanneer
het statusveld leeg is. Elk datumveld wordt gehouden aan ISO 8601, een
expiration_date die meer dan 30 dagen vooruit ligt wordt gevangen (de verwarring
tussen 30 en 365 dagen), en een sale_price_effective_date die niet uit precies twee
datums bestaat, of waarvan het einde vóór het begin valt, wordt gerapporteerd.
Voorraadtegenstrijdigheden, in_stock met een aantal van nul, worden gerapporteerd
in plaats van gerepareerd. Welk veld klopt, hangt ervan af of de shop of het magazijn de
autoriteit is, en dat kan een bestand niet zeggen. Gokken zou óf voorraad verbergen die de
verkoper heeft, óf voorraad adverteren die er niet is.
Varianten en attributen
Hexcodes en getallen in een kleurveld worden gevangen; aan elkaar geplakte kleuren,
ZwartWitGrijs, worden gesplitst, maar alleen wanneer elk segment een herkende kleur
is, dus MidnightBlue blijft één kleur. Een verpakkingsaantal in het maatveld
(6-pack) wordt gemarkeerd, gesloten waardelijsten voor size_system,
size_type, gender en age_group worden afgedwongen, en
kledingvarianten die alleen op maat of kleur verschillen zonder gedeeld
item_group_id worden gerapporteerd, zodat elke maat niet langer concurreert met
zijn eigen varianten. Op een claim over de staat van het product wordt alleen gehandeld wanneer
de eigen tekst van de verkoper die zonder ontkenning stelt: "geen tweedehands" betekent het
tegenovergestelde en telt niet.
Afbeeldingen, video en robots.txt
De hoofdafbeelding van elk product wordt daadwerkelijk opgehaald, zestien tegelijk. Een spreadsheet laat je nooit zien dat 212 van de 3.400 afbeeldingen een 404 teruggeven, en dat is de bevinding waar verkopers op reageren. Elke afbeelding wordt gecontroleerd op haar respons, haar pixelafmetingen tegen zowel het huidige minimum als de 500x500 die op 2027-01-31 verplicht wordt, haar werkelijke formaat tegen de extensie die ze claimt, en op megapixel- en byteplafonds. Videolinks worden gevalideerd op vorm, inclusief de veelgemaakte fout om naar een pagina met een videospeler te verwijzen in plaats van naar het ruwe videobestand.
Daarna wordt robots.txt gelezen, één verzoek per domein, met drie user agents die apart worden
gecontroleerd: Googlebot, Googlebot-image en AdsBot-Google.
Dit is een steekproef en geen uitputtende dekking: hooguit drie domeinen en vijf
landingspagina-paden per domein. De reden dat alle drie apart worden gecontroleerd, is dat
AdsBot-Google de wildcard-groep negeert, wat de
allerverwarrendste afkeuring die er bestaat oplevert.
Verzending, retouren en EU-naleving
Dit is het deel dat tools die voor de Amerikaanse markt zijn gebouwd, doorgaans weglaten. Verzending en retouren zijn samengestelde attributen waarvan de subattributen in de kolomkop staan en waarvan de waarden positioneel zijn, en beide worden gevalideerd tegen de syntaxis die Google daadwerkelijk documenteert. Eén verzendprijs op productniveau kan de verzendinstellingen van het account voor die locatie uitschakelen, dus de scan plaatst een notitie op bestandsniveau zodra er één opduikt. Retourwaarden zijn in hoofdletters en vormen een gesloten lijst, en een juiste waarde met verkeerd hoofdlettergebruik wordt gerapporteerd met dat hoofdlettergebruik als benoemde oorzaak.
Aan de EU-kant: unit pricing waar de prijsaanduidingsrichtlijn waarschijnlijk van toepassing
is, de vorm van EPREL-certificering, en energy_efficiency_class dat sinds april
2025 beperkt is tot CH, NO en GB. In totaal worden 15 samengestelde attributen ondersteund, met
inhoudsvalidatie op 11 ervan en 57 harde teken- en waardelimieten die uit de constanten worden
gedeclareerd in plaats van met de hand getypt.
Elk van deze controles is een regel in de volledige lijst met controles, en het getal bovenaan die pagina wordt bij het bouwen uit de code gelezen. Om te zien welke ervan je eigen bestand raakt, draai je een scan.