Terugkerende & Geplande Bestellingen: volledige gids
Terugkerende bestellingen installeren, plannen en beheren: van de dagelijkse cron tot de winkelwagenlink die naar de klant wordt gestuurd.
Wat de module doet
Met de module kunnen uw klanten vanuit hun account de herhaling van een bestelling inplannen: elke week, elke maand, elk kwartaal, elk jaar, of volgens een vrij interval in dagen.
Vóór elke vervaldatum stuurt een planner de klant een e-mail met een beveiligde link. Wanneer de klant op deze link klikt, wordt zijn winkelwagen op dat exacte moment opnieuw opgebouwd, waarna hij wordt doorgestuurd naar het gebruikelijke bestelproces, waar hij betaalt met de betaalmethode van zijn keuze.
Geen automatische incasso. De module slaat geen enkele betaalmethode op en start geen enkele afschrijving. Er is dus geen doorlopende machtiging nodig, geen kaart om te tokeniseren en geen sterke authenticatie om opnieuw uit te voeren. De klant bevestigt en betaalt elke bestelling zelf.
Installatie
- Open in de backoffice Modules, Modulebeheer en vervolgens Een module installeren.
- Upload het meegeleverde ZIP-bestand, of kopieer de map
dfrecurringordernaar de mapmodules/van uw winkel. - Klik op Installeren. De tabellen, de beheertabbladen en de standaardwaarden worden automatisch aangemaakt.
- Stel de geplande taak in, beschreven in de volgende sectie. Zonder deze taak wordt er geen enkele herinneringsmail verzonden.
De module voegt een menu Bestellingen, Geplande bestellingen toe, bestaande uit drie schermen: de lijst met planningen, de verzendgeschiedenis en de configuratie.
De planner configureren
De module moet één keer per dag worden aangeroepen. Eén dagelijkse uitvoering volstaat: de planner verwerkt in één doorloop alle planningen die hun vervaldatum hebben bereikt.
Via URL
De configuratiepagina van de module toont de exacte URL, inclusief token. Deze ziet er zo uit:
https://uw-winkel.tld/module/dfrecurringorder/cron?token=UW_TOKEN
Deze URL is bruikbaar met de officiële module Cron-taken van PrestaShop, met een externe cron-dienst, of vanuit een server-crontab:
0 6 * * * wget -q -O - "https://uw-winkel.tld/module/dfrecurringorder/cron?token=UW_TOKEN"
Via de commandoregel
Dit is de aanbevolen methode op een dedicated server: ze vermijdt de uitvoeringslimieten van de webserver.
0 6 * * * php /pad/naar/winkel/modules/dfrecurringorder/cli/run.php --token=UW_TOKEN
De optie --id_shop=N beperkt de uitvoering tot één winkel in een multistore-context. Zonder deze optie worden alle winkels verwerkt.
Controleren of alles werkt
De configuratiepagina biedt een knop Planner nu uitvoeren. Deze start een onmiddellijke doorloop en toont een verslag: aantal verwerkte planningen, verzonden e-mails en eventuele fouten. De aanroep via URL geeft hetzelfde verslag terug in JSON-formaat.
Het token kan op elk moment opnieuw worden gegenereerd vanaf de configuratiepagina. Werk dan ook uw crontab bij, anders worden de volgende aanroepen geweigerd.
Configuratie van de module
Klantervaring
- Klanten toestaan hun eigen planningen aan te maken: toont de knop “Deze bestelling inplannen” op de besteldetails en de bevestigingspagina. Schakel deze optie uit als u de planningen liever zelf aanmaakt vanuit de backoffice.
- Maximum aantal planningen per klant: 0 voor onbeperkt. De standaardwaarde is 20.
- Minimuminterval in dagen: voorkomt het aanmaken van planningen die te dicht op elkaar liggen.
- Iconenset van het thema: de iconen die in de klantomgeving worden getoond. Het Classic-thema van PrestaShop gebruikt Material Icons, terwijl veel commerciële thema’s FontAwesome laden. Kies de set die uw thema daadwerkelijk laadt, of geen iconen. Een ontbrekend icoon of een icoon dat door een woord wordt vervangen in de klantomgeving betekent simpelweg dat deze instelling niet bij uw thema past.
- Producten uitgesloten van geplande bestellingen: een lijst met product-ID’s, gescheiden door komma’s. Deze producten worden nooit in een planning overgenomen en nooit aan een opnieuw opgebouwde winkelwagen toegevoegd. Zie de sectie over geschenken en winkelwagenregels.
Beschikbare frequenties
Elke frequentie kan onafhankelijk worden in- of uitgeschakeld: dagelijks, wekelijks, tweewekelijks, maandelijks, tweemaandelijks, driemaandelijks, halfjaarlijks, jaarlijks en aangepast in dagen. Alleen de ingeschakelde frequenties verschijnen in het formulier van de klant.
Standaard zijn de wekelijkse, tweewekelijkse, maandelijkse, tweemaandelijkse, driemaandelijkse, halfjaarlijkse en jaarlijkse frequenties actief. De dagelijkse frequentie en het aangepaste interval zijn uitgeschakeld, omdat ze vooral geschikt zijn voor specifieke B2B-situaties.
E-mails en betaallink
- E-mail X dagen vóór de vervaldatum versturen: standaardwaarde die op nieuwe planningen wordt toegepast. De klant kan deze termijn voor zijn eigen planning aanpassen. Drie dagen is een goed startpunt: vroeg genoeg om tijd te laten om te reageren, laat genoeg om in het geheugen van de klant te blijven.
- Geldigheidsduur van de betaallink: in dagen, standaard 14. Na deze termijn toont de link een verloopmelding en nodigt hij de klant uit om een nieuwe link te genereren vanuit zijn account.
- Niet-beschikbare producten negeren: standaard ingeschakeld. Zie de sectie over bijzondere gevallen.
- Een kopie naar de winkelier sturen: nuttig tijdens de inwerkfase om de weergave van de e-mails in de praktijk te controleren.
Planner
- Verwerkte planningen per uitvoering: standaard 50. Verhoog deze waarde als uw volume deze dagelijkse limiet overschrijdt, of voer de cron meerdere keren per dag uit.
- Alle gegevens verwijderen bij de-installatie: standaard uitgeschakeld. Zie de sectie De-installatie.
Herhaling aanbieden tijdens het bestellen
Standaard plant de klant zijn bestelling achteraf in, vanuit een al geplaatste bestelling. Twee optionele instellingen laten u de herhaling eerder aanbieden, op het moment van aankoop. Beide zijn bij installatie uitgeschakeld: ze inschakelen is een bewuste beslissing, geen neveneffect van een update.
Optie in het bestelproces
Een selectievakje “Deze aankoop omzetten in een terugkerende bestelling” verschijnt in de winkelwagen en bovenaan de betaalstap, gevolgd door een frequentiekiezer die alleen de door u ingeschakelde frequenties toont. De klant vinkt aan, kiest zijn ritme en zet zijn bestelling normaal voort.
De keuze wordt opgeslagen op de winkelwagen, niet in de sessie. Dat is belangrijk bij betaalmethoden die de klant naar een externe pagina doorsturen: de bestelling wordt daar vaak bevestigd in een betaalretour waarin de sessie van de klant niet meer bestaat, en een keuze die in de sessie werd bewaard zou zonder enige waarschuwing verloren gaan.
De planning wordt pas aangemaakt zodra de bestelling is bevestigd. Adressen, vervoerder en valuta komen dus uit een echte bestelling, en een nieuwe betaalpoging kan geen twee planningen aanmaken. De eerste vervaldatum wordt berekend vanaf de datum van de bestelling, volgens de gekozen frequentie.
De optie verschijnt alleen voor ingelogde klanten, aangezien een planning bij een klantaccount hoort. Ze respecteert ook het quotum aan planningen per klant en de lijst met uitgesloten producten.
Blok op de productpagina
Een kort blok laat de bezoeker weten dat het product terugkerend besteld kan worden en legt het principe in twee zinnen uit, zonder jargon. Producten op de uitsluitingslijst tonen dit blok nooit.
Als er niets wordt weergegeven
Deze twee weergaven steunen op standaard hooks van PrestaShop. Sommige thema’s, en vooral one-page-checkout-modules, bieden ze niet allemaal aan. De configuratiepagina van de module toont deze hooks met hun status en biedt een knop om ze opnieuw te registreren. Blijft een hook daarna inactief, dan stelt uw thema of uw checkout-module deze niet beschikbaar.
Aan klantzijde: een bestelling inplannen
Het traject vertrekt altijd vanuit een al geplaatste bestelling, wat garandeert dat de producten, het adres en de vervoerder consistent zijn.
- De klant opent een van zijn bestellingen vanuit zijn bestelgeschiedenis, of blijft op de bevestigingspagina direct na een aankoop.
- Hij klikt op Deze bestelling inplannen.
- Hij past indien nodig de aantallen aan. Een aantal van 0 verwijdert het product uit de planning.
- Hij kiest zijn frequentie, de datum van zijn volgende bestelling en, als hij dat wil, een einddatum of een maximum aantal bestellingen.
- Hij slaat op. Een bevestigingsmail vat de planning samen.
De planning verschijnt daarna in Mijn account, Mijn geplande bestellingen. Vanuit dit scherm kan de klant op elk moment:
- de frequentie, de datum of de aantallen wijzigen;
- pauzeren en weer activeren, waarbij de volgende vervaldatum opnieuw in de toekomst wordt berekend;
- de planning definitief verwijderen;
- op Nu bestellen klikken om zijn winkelwagen onmiddellijk te starten zonder de vervaldatum af te wachten.
Aan winkelierszijde: planningen opvolgen
Lijst met geplande bestellingen
Deze toont voor elke planning de klant, de frequentie, het aantal producten, de volgende vervaldatum, het aantal al verzonden e-mails, het aantal daadwerkelijk geplaatste bestellingen en de status. De kolom met bestellingen is de nuttigste indicator: ze laat zien hoeveel planningen concreet omzet opleveren.
De detailpagina van een planning laat u de betaallink onmiddellijk naar de klant sturen, wat handig is bij support wanneer een klant meldt zijn e-mail niet te hebben ontvangen.
Verzendgeschiedenis
Elke gegenereerde link krijgt een regel in de geschiedenis, waarvan de status meebeweegt met het traject:
- Verzonden: de e-mail is vertrokken, de link is nog niet geopend.
- Link geopend: de klant heeft geklikt, een winkelwagen is opgebouwd.
- Omgezet in bestelling: de winkelwagen is een bestelling geworden. De bestelreferentie wordt automatisch gekoppeld.
- Verlopen: de geldigheidsduur is verstreken zonder bestelling.
- Fout: het versturen van de e-mail is mislukt. Controleer de e-mailconfiguratie van de winkel.
In de besteldetails
Een paneel onderaan de bestelpagina toont de planningen die vanuit deze bestelling zijn aangemaakt, met directe toegang tot hun details.
Hoe de betaallink werkt
Inzicht in dit mechanisme helpt u de vragen van uw klanten te beantwoorden.
- Bij het versturen van de e-mail maakt de module geen enkele winkelwagen aan. Hij genereert alleen een willekeurig token van 48 tekens, voor eenmalig gebruik en met een datum.
- Wanneer de klant klikt, controleert de module het token en de vervaldatum ervan.
- Is de klant niet ingelogd, dan wordt hij doorgestuurd naar de standaard inlogpagina en daarna automatisch teruggebracht naar zijn link. De link zelf authenticeert de bezoeker nooit.
- Zodra de klant is geïdentificeerd, wordt de winkelwagen opgebouwd op basis van de planning, met de prijzen, promoties, winkelwagenregels en voorraden van dat moment.
- De klant wordt doorgestuurd naar het bestelproces. Een tweede klik op dezelfde link hergebruikt de al aangemaakte winkelwagen zolang die niet tot een bestelling heeft geleid.
Juist omdat de winkelwagen bij de klik wordt opgebouwd, en niet bij het versturen, blijft hij altijd correct. Een winkelwagen die al bij de e-mail zou zijn gegenereerd, zou fout worden zodra een prijs, een promotie of een voorraad verandert tussen verzending en klik.
Bijzondere gevallen
Product niet beschikbaar op de vervaldatum
Met de optie Niet-beschikbare producten negeren ingeschakeld, wordt het betreffende product simpelweg overgeslagen en blijven de andere artikelen bestelbaar. De winkelwagen wordt alleen geweigerd als geen enkel product beschikbaar is: de klant ziet dan een melding die hem uitnodigt contact met u op te nemen of zijn planning aan te passen.
Schakelt u deze optie uit, dan blokkeert een voorraadtekort de heropbouw van de winkelwagen. Dit gedrag past bij winkels waarvan de bestellingen compleet moeten vertrekken of helemaal niet.
Adres verwijderd tussen twee vervaldatums
Als het leveringsadres dat in de planning is opgeslagen door de klant is verwijderd, schakelt de module automatisch over op zijn eerste beschikbare adres. Het factuuradres volgt dezelfde logica. De klant kan in het bestelproces altijd van adres wisselen.
Geschenken en winkelwagenregels
Een product dat via een winkelwagenregel wordt geschonken, wordt nooit in de planning overgenomen. Dat is bewust: het geschenk is niet door de klant gekozen, en de winkelwagenregel voegt het zelf toe bij elke heropbouw van de winkelwagen zodra aan de voorwaarden is voldaan. Het in de planning bewaren zou het twee keer laten verschijnen.
Het geschenk wordt dus bij elke vervaldatum gewoon aangeboden, en het volgt de actuele staat van uw regel: wijzigt u de drempel of het geschonken product, dan houdt de geplande bestelling daar onmiddellijk rekening mee.
Wordt een geschenk toegevoegd door een module van derden in plaats van door een native winkelwagenregel, dan kan de automatische detectie het niet herkennen. Voeg dan het product-ID toe aan de instelling Producten uitgesloten van geplande bestellingen. Deze uitsluiting geldt ook voor bestaande planningen, zonder dat uw klanten ze opnieuw hoeven aan te maken.
Maandeinden
Een maandelijkse planning die op 31 januari start, verschuift niet. De module brengt de datum terug naar de laatste dag van de maand wanneer die korter is: 28 of 29 februari, daarna 31 maart. De oorspronkelijke dag wordt onthouden en gaat dus nooit verloren.
Multistore
Elke planning is gekoppeld aan de winkel waarin ze is aangemaakt. De e-mails vertrekken met de identiteit van die winkel, en de betaallink verwijst naar het domein ervan.
Einde van een planning
Een planning eindigt automatisch wanneer de einddatum is verstreken of wanneer het maximum aantal bestellingen is bereikt. Ze krijgt dan de status Voltooid en stopt met het versturen van e-mails, maar blijft raadpleegbaar in de geschiedenis.
De e-mails personaliseren
De module levert twee sjablonen, in HTML- en tekstversie, in zeven talen: Frans, Engels, Spaans, Italiaans, Portugees, Duits en Pools:
dfro_reminder: de herinnering die vóór elke vervaldatum wordt verzonden, met de betaallink.dfro_created: de bevestiging die bij het aanmaken van een planning wordt verzonden.
Ze zijn aanpasbaar via Design, Thema en logo, E-mails, of rechtstreeks in de map mails/ van de module. De beschikbare variabelen in de herinnering zijn: voornaam en achternaam van de klant, naam en frequentie van de planning, datum van de volgende bestelling, producttabel, geschat totaal, betaallink, beheerlink, geldigheidsduur van de link en naam van de winkel.
Het totaal in de e-mail is een schatting die bij verzending wordt berekend, ter indicatie. Het daadwerkelijk gefactureerde bedrag is dat van de winkelwagen die bij de klik wordt opgebouwd. Presenteer dit totaal dus nooit als een prijsgarantie.
Probleemoplossing
Er wordt geen enkele e-mail verzonden
Controleer in deze volgorde: dat de geplande taak daadwerkelijk draait, dat het token in de crontab overeenkomt met dat op de configuratiepagina, dat minstens één planning actief is met een bereikte vervaldatum, en dat het versturen van e-mails door de winkel werkt. De knop Planner nu uitvoeren isoleert het probleem snel: verstuurt hij de e-mails, dan ligt het aan de geplande taak.
De link toont “Ongeldige link”
Het token bestaat niet of is door het e-mailprogramma van de klant afgekapt. Genereer een nieuwe link vanaf de detailpagina van de planning in de backoffice.
De klant blijft in een lus op de inlogpagina
Dit gebeurt wanneer de link wordt geopend met een ander account dan dat van de ontvanger. De klant moet uitloggen en de link daarna opnieuw openen.
De opnieuw opgebouwde winkelwagen is leeg
Alle producten van de planning zijn gedeactiveerd of niet op voorraad. Controleer hun status in de catalogus, of schakel de optie voor het negeren van niet-beschikbare producten tijdelijk uit om de diagnose expliciet te maken.
De-installatie
Standaard behoudt de de-installatie de tabellen en de planningen. Een latere herinstallatie vindt dus alle gegevens terug. Om alles te verwijderen, schakelt u de optie Alle gegevens verwijderen bij de-installatie in voordat u de module de-installeert.
Deze verwijdering is definitief en betreft de planningen, hun productregels en de volledige verzendgeschiedenis. Maak een back-up van uw database voordat u deze optie inschakelt.