Afhaaltijdsloten in WooCommerce voorkom je alleen betrouwbaar te dubbelboeken als de server capaciteit atomair reserveert. Een browser die eerst “nog één plek” ziet en pas later een order opslaat, is niet genoeg: twee klanten kunnen dezelfde laatste plek tegelijk kiezen. Gebruik tijdelijke checkoutreserveringen, een vaste capaciteit per venster en een gecontroleerde omzetting naar de definitieve order.
Daarmee wordt een tijdslot geen decoratief orderveld, maar een beheerde operationele afspraak.
Definieer eerst het afhaalmodel
Leg vast wat capaciteit betekent. Is één reservering gelijk aan één order, één klant, een aantal producten of verwachte afhandeltijd? Voor veel processen is capaciteit per order voldoende, maar grote of samengestelde bestellingen kunnen meer ruimte vragen. Kies een model dat medewerkers kunnen uitleggen en beheren.
Beschrijf daarnaast:
- welke afhaallocaties bestaan;
- op welke weekdagen en tijden ieder punt open is;
- hoe lang een venster duurt;
- hoeveel reserveringen per venster zijn toegestaan;
- hoeveel voorbereidingstijd nodig is;
- wanneer een dag of venster handmatig mag worden gesloten.
Maak locatie onderdeel van de sleutel. “Vrijdag 14:00” kan op twee locaties tegelijk bestaan en mag technisch niet hetzelfde tijdslot zijn.
Gebruik tijdelijke reserveringen in checkout
Zodra een klant een beschikbaar venster kiest, reserveert de server tijdelijk een plek. Die reservering telt mee voor andere klanten. Rondt de klant de order af, dan wordt zij definitief gekoppeld aan de bestelling. Verlaat de klant checkout, dan vervalt de reservering na een passende periode.
Een goede hold heeft vier eigenschappen:
- zij is gekoppeld aan een niet-radenbare checkoutidentiteit;
- zij heeft een duidelijke vervaltijd;
- dezelfde checkout kan haar eigen reservering verlengen of vervangen;
- vrijgeven is veilig wanneer het verzoek tweemaal wordt uitgevoerd.
Bij het wisselen van venster moet de volgorde zorgvuldig zijn. Reserveer niet onbeperkt meerdere plekken voor dezelfde checkout, maar voorkom ook dat de oude plek verdwijnt voordat duidelijk is dat de nieuwe beschikbaar is.
Los gelijktijdigheid op in de database
Stel dat een venster nog één plek heeft en drie klanten tegelijk boeken. Alle drie kunnen op basis van een losse leestest “beschikbaar” zien. De daadwerkelijke reservering moet daarom binnen een transactie opnieuw tellen en de relevante capaciteit vergrendelen. Slechts één transactie mag slagen.
Test dit expliciet met gelijktijdige aanvragen. Een opeenvolgende functionele test vindt het probleem niet, omdat er steeds keurig één klant tegelijk boekt.
Bereken beschikbaarheid opnieuw bij orderwijziging
Een klant of medewerker kan na aankoop om een ander afhaalmoment vragen. Controleer dan opnieuw of het nieuwe venster bestaat, niet gesloten is, na de cut-off valt en capaciteit heeft. Leg de wijziging pas vast wanneer de nieuwe reservering is bevestigd en geef daarna de oude capaciteit vrij.
Sta wijzigingen alleen toe zolang de operationele status dat toelaat. Een order die al is klaargezet of onderdeel is van een definitieve werkplanning vraagt mogelijk handmatige beoordeling. De server blijft daarin leidend; een verborgen knop in de interface is geen toegangscontrole.
Houd uitzonderingen zichtbaar
Als de planningsfunctie tijdelijk niet bereikbaar is, kan checkout blokkeren of de order aannemen zonder definitief venster. Kies bewust op basis van de dienstverlening. Bij een fallback moet een duidelijke taak ontstaan voor handmatige planning, met klantcommunicatie die geen tijdslot belooft dat nog niet is bevestigd.
Ook verlopen of conflicterende reserveringen verdienen een begrijpelijke reactie. Laat de klant actuele alternatieven kiezen in plaats van een algemene foutmelding te tonen.
Checklist voor een afhaalstroom
- Locatie, datum en venster vormen samen een unieke afspraak.
- Capaciteit is een expliciete bedrijfsregel.
- Checkout maakt een korte server-side reservering.
- Verlaten checkouts geven capaciteit automatisch terug.
- Gelijktijdige boekingen kunnen de limiet niet overschrijden.
- Cut-offs en gesloten dagen gelden ook bij wijzigingen.
- Een definitieve order neemt de checkoutreservering aantoonbaar over.
- Beheerders zien volle vensters, open holds en uitzonderingen.
- Fallbackorders worden als concrete opvolgtaak gemarkeerd.
Verbind het venster met de rest van het proces
De gekozen tijd moet niet alleen op de WooCommerce-bedankpagina verschijnen. AFAS, magazijn of een operationeel planningssysteem moet dezelfde afspraak ontvangen. Klantenservice moet de actuele status kunnen zien en een toegestane wijziging gecontroleerd kunnen starten.
Gebruik één gezaghebbende representatie en schrijf afgeleide ordervelden consequent mee. Match afhalen op de technische verzendmethode, niet op een zichtbare tekst die later kan worden vertaald of aangepast.
De ForaVida-case behandelt de samenhang tussen verkoop, administratie en planning. Yindle Connect verzorgt validatie en overdracht tussen betrokken systemen. Meer over herstelbare integraties lees je in webshop en ERP betrouwbaar koppelen.
Veelgestelde vragen over capaciteit
Kan WooCommerce-voorraad het aantal tijdsloten beheren?
Productvoorraad en operationele capaciteit zijn verschillende begrippen. Een order kan meerdere producten bevatten maar één afhaalmoment gebruiken. Modelleer capaciteit daarom per locatie en venster. Verbind haar wel met de order, zodat annulering of wijziging de juiste plek vrijgeeft.
Hoe lang moet een checkoutreservering blijven staan?
Lang genoeg voor een realistisch afrekenproces, maar niet zo lang dat verlaten checkouts de planning blokkeren. Baseer de duur op het feitelijke betaalpad en monitor hoeveel holds verlopen. Laat een terugkerende klant niet ongemerkt meerdere actieve reserveringen stapelen.
Wat als een medewerker capaciteit verlaagt?
Controleer eerst hoeveel definitieve orders en actieve holds al bestaan. Een lagere limiet mag bestaande afspraken niet onzichtbaar ongeldig maken. Toon het conflict, blokkeer nieuwe boekingen en laat een bevoegde medewerker bepalen welke bestaande orders eventueel opnieuw gepland moeten worden.
Maak de planning toetsbaar
Voer naast functionele tests een gelijktijdigheidstest uit waarbij meer klanten hetzelfde laatste venster vragen dan de resterende capaciteit toestaat. Controleer dat precies het toegestane aantal slaagt, de overige klant actuele alternatieven krijgt en geen spookreserveringen achterblijven. Herhaal de test rond vervaltijd en een handmatig gesloten venster.
Bewaar voor beheer alleen de noodzakelijke reserveringsidentiteit, locatie, het venster, de status en relevante tijden. Zo blijft het proces onderzoekbaar zonder checkoutgegevens onnodig te kopiëren.
Wil je afhalen aanbieden zonder dat medewerkers overboekingen achteraf moeten oplossen? Laat Yindle jouw tijdslot- en capaciteitsproces uitwerken.