De webshop lag eruit na een mislukte update. Iemand heeft de back-up van gisteren teruggezet en de shop doet het weer. Opgelucht opent u het orderoverzicht, en dan valt het op: de bestellingen van vanochtend staan er niet meer. Uw mailbox heeft ze wel, Mollie heeft de betalingen, maar in WooCommerce zijn ze weg. De klant heeft betaald voor iets wat volgens uw shop nooit besteld is.

Bestellingen die verdwenen zijn na een terugzetactie zijn geen bug. Het is precies wat een back-up doet: hij zet de database terug naar het moment waarop hij is gemaakt. Alles wat daarna gebeurde, bestaat niet meer. In dit artikel leg ik uit waarom dit gebeurt, hoe u de ontbrekende bestellingen terughaalt en hoe u een herstel voortaan uitvoert zonder orders te verliezen.

Het symptoom herkennen

Meestal valt het niet meteen op. De shop werkt, de producten staan er, klanten kunnen bestellen. De eerste aanwijzing is vaak een klant die belt over een bestelling die u niet kunt vinden, of een betaalbevestiging in uw mail waarvan het ordernummer niet bestaat. Andere signalen:

  • Het hoogste ordernummer in WooCommerce is lager dan het nummer in uw laatste bevestigingsmail.
  • Nieuwe bestellingen krijgen een ordernummer dat u al eerder heeft gebruikt.
  • De voorraad staat hoger dan verwacht: verkochte producten zijn “terug”.
  • Kortingscodes die op waren, werken weer.
  • Klanten melden dat hun account niet meer bestaat.

Dat hergebruik van ordernummers is het meest verraderlijke. Als de shop na de terugzetactie bestelling 4512 opnieuw uitgeeft aan een nieuwe klant, terwijl de oorspronkelijke 4512 al is betaald en onderweg, heeft u twee klanten met hetzelfde nummer bij uw verzendpartij en uw betaalprovider.

Waarom het gebeurt

Een WooCommerce-back-up bestaat uit bestanden en een database. Bestellingen, klanten en voorraad staan in de database. Zet u een back-up van dinsdagnacht terug op woensdagmiddag, dan is de database weer die van dinsdagnacht. De bestellingen van woensdagochtend zijn niet “kwijtgeraakt”, ze zijn overschreven met een ouder beeld.

De betaalprovider, uw mailbox en de verzendkoppeling weten van niets; die hebben hun eigen administratie. Daarom is de informatie niet verloren, maar wel verspreid over drie systemen die niet meer met elkaar overeenkomen. Hoe langer de periode tussen de back-up en het terugzetten, hoe groter het gat. Dat is ook de reden waarom voor een webshop een dagelijks back-upritme het minimum is; de achtergrond daarvan staat in het artikel over dagelijkse back-ups voor webshops.

De ontbrekende bestellingen terughalen

Stop eerst met verder werken in de shop voordat u de zaak in kaart heeft. Elke nieuwe bestelling die nu binnenkomt, gebruikt een ordernummer dat mogelijk al bezet is. Zet de shop kort in onderhoudsmodus of pauzeer tijdelijk de betaalmethodes.

  1. Bepaal het gat. Noteer het tijdstip van de back-up en het tijdstip van de terugzetactie. Alles daartussen is verdwenen.
  2. Verzamel de bronnen. Log in bij uw betaalprovider (Mollie, Pay.nl, Klarna) en exporteer alle betalingen in dat tijdvak. Doorzoek de mailbox waar de orderbevestigingen naartoe gaan. Kijk in het dashboard van de verzendkoppeling welke etiketten in die periode zijn aangemaakt.
  3. Maak een lijst. Per betaling: ordernummer, klantnaam, mailadres, bedrag, producten (uit de bevestigingsmail), verzendadres. Meestal is dat een handvol regels; bij drukke shops tientallen.
  4. Corrigeer het ordernummer. WooCommerce baseert nieuwe ordernummers op het hoogste ID in de database. Laat iemand met databasetoegang het teller opschuiven tot voorbij het hoogste nummer dat u in uw mail heeft gezien, zodat nieuwe bestellingen geen oude nummers hergebruiken. Dit is een technische handeling; doe het niet zelf als u niet weet hoe.
  5. Voer de bestellingen opnieuw in. Via WooCommerce, Bestellingen, Nieuwe bestelling. Kies de klant of maak die aan, voeg de producten toe, zet de status op “in behandeling” of “afgerond” en noteer in de orderopmerking dat het een handmatige reconstructie is, met het oorspronkelijke ordernummer en de betaalreferentie.
  6. Corrigeer de voorraad. Bij handmatig aangemaakte bestellingen verlaagt WooCommerce de voorraad niet altijd automatisch. Controleer de aantallen van de betreffende producten.
  7. Zet de shop weer open en doe een testbestelling om te controleren dat het nieuwe ordernummer klopt.

Informeer klanten niet per se, tenzij ze een nieuw ordernummer krijgen dat afwijkt van hun bevestiging. Dan een korte mail: “Door een technisch herstel heeft uw bestelling een nieuw nummer gekregen, uw levering verandert niet.”

Hoe u het volgende keer voorkomt

De les is niet “geen back-ups terugzetten”, maar “eerst de bestellingen veiligstellen”. Een veilige terugzetprocedure voor een webshop ziet er zo uit:

  • Maak, vlak voordat u een oude back-up terugzet, een verse back-up van de huidige (kapotte) database. Daarin zitten de bestellingen van de tussenliggende periode nog.
  • Zet de oude back-up terug.
  • Exporteer uit de verse back-up alleen de ordergegevens en importeer die weer, of laat een specialist dat doen. Dat is preciezer dan handmatig overtypen.
  • Overweeg of u alleen de bestanden hoeft terug te zetten. Bij een kapotte plugin is de database vaak intact; dan is het terugzetten van alleen de pluginmap voldoende en raakt u geen enkele bestelling kwijt.

Dat laatste punt wordt vaak overgeslagen. Een volledige terugzetactie is de zwaarste ingreep, en bij een webshop bijna nooit de juiste eerste stap.

Wanneer u hulp inschakelt

Het handmatig invoeren van een paar bestellingen kunt u zelf. Schakel hulp in als het gat groter is dan een dag, als u de ordernummerteller moet corrigeren, of als u twijfelt of de teruggezette back-up zelf wel schoon is. Een sieradenwebshop uit Groningen belde ons nadat hun hostingpartij een back-up van drie dagen oud had teruggezet; 41 bestellingen waren verdwenen. Uit de databaseback-up die de host vlak vóór het terugzetten had bewaard, konden wij de ordertabellen isoleren en terugzetten. Vier uur werk in plaats van twee dagen overtypen. Dit soort herstelwerk valt onder het onderhoud van WooCommerce-webshops, waar ook de dagelijkse back-ups zitten die het gat klein houden.

Volgende stap: schrijf nu, in rustige tijden, uw eigen terugzetprocedure op. Wie doet wat, waar staat de back-up, en welke stap komt eerst. Dat A4’tje is op het moment dat het misgaat meer waard dan welke plugin ook.