Commandes Récurrentes & Programmées — Documentation PrestaShop 8 & 9
Installer, planifier et exploiter les commandes récurrentes : du cron quotidien au lien panier envoyé au client.
Ce que fait le module
Le module permet à vos clients de programmer la répétition d’une commande depuis leur compte : toutes les semaines, tous les mois, tous les trimestres, tous les ans, ou selon un intervalle libre exprimé en jours.
Avant chaque échéance, un planificateur envoie au client un e-mail contenant un lien sécurisé. Quand le client clique sur ce lien, son panier est reconstruit à cet instant précis, puis il est redirigé vers le tunnel de commande habituel où il règle avec le moyen de paiement de son choix.
Aucun prélèvement automatique. Le module ne stocke aucun moyen de paiement et ne déclenche aucun débit. Il n’y a donc ni mandat récurrent à collecter, ni carte à tokeniser, ni authentification forte à rejouer. Le client valide et règle chaque commande lui-même.
Installation
- Depuis le back-office, ouvrez Modules — Gestionnaire de modules, puis Installer un module.
- Déposez le fichier ZIP fourni, ou copiez le dossier
dfrecurringorderdans le répertoiremodules/de votre boutique. - Cliquez sur Installer. Les tables, les onglets d’administration et les valeurs par défaut sont créés automatiquement.
- Configurez la tâche planifiée, décrite à la section suivante. Sans elle, aucun e-mail de rappel ne partira.
Le module ajoute un menu Commandes — Commandes programmées, composé de trois écrans : la liste des programmations, l’historique des envois et la configuration.
Configurer le planificateur
Le module doit être appelé une fois par jour. Une seule exécution quotidienne suffit : le planificateur traite en un passage toutes les programmations arrivées à échéance.
Par URL
La page de configuration du module affiche l’URL exacte, jeton inclus. Elle ressemble à ceci :
https://votre-boutique.tld/module/dfrecurringorder/cron?token=VOTRE_JETON
Cette URL est utilisable avec le module officiel Tâches cron de PrestaShop, avec un service de cron externe, ou depuis une crontab serveur :
0 6 * * * wget -q -O - "https://votre-boutique.tld/module/dfrecurringorder/cron?token=VOTRE_JETON"
En ligne de commande
C’est la méthode recommandée sur un serveur dédié : elle évite les délais d’exécution du serveur web.
0 6 * * * php /chemin/vers/boutique/modules/dfrecurringorder/cli/run.php --token=VOTRE_JETON
L’option --id_shop=N restreint l’exécution à une seule boutique en contexte multiboutique. Sans cette option, toutes les boutiques sont traitées.
Vérifier que tout fonctionne
La page de configuration propose un bouton Exécuter le planificateur maintenant. Il déclenche un passage immédiat et affiche un compte rendu : nombre de programmations traitées, e-mails envoyés et échecs éventuels. L’appel par URL renvoie le même compte rendu au format JSON.
Le jeton peut être régénéré à tout moment depuis la page de configuration. Pensez alors à mettre à jour votre crontab, sinon les appels suivants seront rejetés.
Configuration du module
Expérience client
- Autoriser les clients à créer leurs programmations — affiche le bouton « Programmer cette commande » sur le détail de commande et la page de confirmation. Désactivez cette option si vous préférez créer les programmations vous-même depuis le back-office.
- Nombre maximum de programmations par client — 0 pour illimité. La valeur par défaut est 20.
- Intervalle minimum en jours — empêche la création de programmations trop rapprochées.
Fréquences disponibles
Chaque fréquence s’active ou se désactive indépendamment : quotidienne, hebdomadaire, bimensuelle, mensuelle, bimestrielle, trimestrielle, semestrielle, annuelle et personnalisée en jours. Seules les fréquences activées apparaissent dans le formulaire du client.
Par défaut, les fréquences hebdomadaire, bimensuelle, mensuelle, bimestrielle, trimestrielle, semestrielle et annuelle sont actives. La fréquence quotidienne et l’intervalle personnalisé sont désactivés, car ils conviennent surtout à des cas B2B spécifiques.
E-mails et lien de paiement
- Envoyer l’e-mail X jours avant l’échéance — valeur par défaut appliquée aux nouvelles programmations. Le client peut ajuster ce délai pour la sienne. Trois jours est un bon point de départ : assez tôt pour laisser le temps de réagir, assez tard pour rester dans l’esprit du client.
- Durée de validité du lien de paiement — en jours, 14 par défaut. Passé ce délai, le lien affiche un message d’expiration et invite le client à en régénérer un depuis son compte.
- Ignorer les produits indisponibles — activé par défaut. Voir la section sur les cas particuliers.
- Envoyer une copie au marchand — utile pendant la phase de rodage pour vérifier le rendu réel des e-mails.
Planificateur
- Programmations traitées par exécution — 50 par défaut. Augmentez cette valeur si votre volume dépasse cette limite quotidienne, ou lancez le cron plusieurs fois par jour.
- Supprimer toutes les données à la désinstallation — désactivé par défaut. Voir la section Désinstallation.
Côté client : programmer une commande
Le parcours part toujours d’une commande déjà passée, ce qui garantit que les produits, l’adresse et le transporteur sont cohérents.
- Le client ouvre l’une de ses commandes depuis son historique, ou reste sur la page de confirmation juste après un achat.
- Il clique sur Programmer cette commande.
- Il ajuste les quantités si besoin. Une quantité fixée à 0 retire le produit de la programmation.
- Il choisit sa fréquence, la date de sa prochaine commande et, s’il le souhaite, une date de fin ou un nombre maximum de commandes.
- Il enregistre. Un e-mail de confirmation récapitule la programmation.
La programmation apparaît ensuite dans Mon compte — Mes commandes programmées. Depuis cet écran, le client peut à tout moment :
- modifier la fréquence, la date ou les quantités ;
- mettre en pause puis réactiver, la prochaine échéance étant alors recalculée dans le futur ;
- supprimer définitivement la programmation ;
- cliquer sur Commander maintenant pour déclencher immédiatement son panier sans attendre l’échéance.
Côté marchand : suivre les programmations
Liste des commandes programmées
Elle affiche pour chaque programmation le client, la fréquence, le nombre de produits, la prochaine échéance, le nombre d’e-mails déjà envoyés, le nombre de commandes réellement passées et le statut. La colonne des commandes est la mesure la plus utile : elle indique combien de programmations se transforment effectivement en chiffre d’affaires.
La fiche détaillée d’une programmation permet d’envoyer immédiatement le lien de paiement au client, ce qui est pratique en support quand un client signale ne pas avoir reçu son e-mail.
Historique des envois
Chaque lien généré donne lieu à une ligne d’historique dont le statut évolue au fil du parcours :
- Envoyé — l’e-mail est parti, le lien n’a pas encore été ouvert.
- Lien ouvert — le client a cliqué, un panier a été construit.
- Transformé en commande — le panier est devenu une commande. La référence de commande est rattachée automatiquement.
- Expiré — la durée de validité est dépassée sans commande.
- Erreur — l’envoi de l’e-mail a échoué. Vérifiez la configuration e-mail de la boutique.
Dans la fiche commande
Un panneau au bas de la fiche commande liste les programmations créées à partir de cette commande, avec un accès direct à leur détail.
Comment fonctionne le lien de paiement
Comprendre ce mécanisme aide à répondre aux questions de vos clients.
- À l’envoi de l’e-mail, le module ne crée aucun panier. Il génère uniquement un jeton aléatoire de 48 caractères, à usage unique et daté.
- Quand le client clique, le module vérifie le jeton et sa date d’expiration.
- Si le client n’est pas connecté, il est redirigé vers la page de connexion standard puis ramené automatiquement sur son lien. Le lien n’authentifie jamais le visiteur par lui-même.
- Une fois le client identifié, le panier est construit à partir de la programmation, avec les prix, promotions, règles panier et stocks du moment.
- Le client est redirigé vers le tunnel de commande. Un second clic sur le même lien réutilise le panier déjà créé tant qu’il n’a pas donné lieu à une commande.
C’est parce que le panier est construit au clic, et non à l’envoi, qu’il reste toujours juste. Un panier pré-généré au moment de l’e-mail deviendrait faux dès qu’un prix, une promotion ou un stock évolue entre l’envoi et le clic.
Cas particuliers
Produit indisponible à l’échéance
Avec l’option Ignorer les produits indisponibles activée, le produit concerné est simplement écarté et les autres articles restent commandables. Le panier n’est refusé que si aucun produit n’est disponible : le client voit alors un message l’invitant à vous contacter ou à modifier sa programmation.
Si vous désactivez cette option, une rupture bloque la reconstitution du panier. Ce comportement convient aux boutiques dont les commandes doivent partir complètes ou pas du tout.
Adresse supprimée entre deux échéances
Si l’adresse de livraison enregistrée dans la programmation a été supprimée par le client, le module bascule automatiquement sur sa première adresse disponible. L’adresse de facturation suit la même logique. Le client peut toujours changer d’adresse dans le tunnel de commande.
Fins de mois
Une programmation mensuelle démarrée un 31 janvier ne dérive pas. Le module ramène la date au dernier jour du mois quand celui-ci est plus court : le 28 ou 29 février, puis le 31 mars. Le jour d’origine est mémorisé, il n’est donc jamais perdu.
Multiboutique
Chaque programmation est rattachée à la boutique sur laquelle elle a été créée. Les e-mails partent avec l’identité de cette boutique, et le lien de paiement pointe vers son domaine.
Fin d’une programmation
Une programmation se termine automatiquement lorsque la date de fin est dépassée ou lorsque le nombre maximum de commandes est atteint. Elle passe alors au statut Terminée et cesse d’envoyer des e-mails, tout en restant consultable dans l’historique.
Personnaliser les e-mails
Le module fournit deux modèles, en français et en anglais, chacun décliné en version HTML et texte :
dfro_reminder— le rappel envoyé avant chaque échéance, avec le lien de paiement.dfro_created— la confirmation envoyée à la création d’une programmation.
Ils sont modifiables depuis Design — Thème et logo — E-mails, ou directement dans le dossier mails/ du module. Les variables disponibles dans le rappel sont : prénom et nom du client, libellé et fréquence de la programmation, date de la prochaine commande, tableau des produits, total estimé, lien de paiement, lien de gestion, durée de validité du lien et nom de la boutique.
Le total affiché dans l’e-mail est une estimation calculée à l’envoi, à titre indicatif. Le montant réellement facturé est celui du panier reconstruit au clic. Ne présentez donc jamais ce total comme un engagement de prix.
Dépannage
Aucun e-mail n’est envoyé
Vérifiez dans l’ordre : que la tâche planifiée s’exécute bien, que le jeton de la crontab correspond à celui affiché en configuration, qu’au moins une programmation est active avec une échéance atteinte, et que l’envoi d’e-mails de la boutique fonctionne. Le bouton Exécuter le planificateur maintenant permet d’isoler rapidement le problème : s’il envoie les e-mails, c’est la tâche planifiée qui est en cause.
Le lien affiche « Lien invalide »
Le jeton n’existe pas ou a été tronqué par le client de messagerie. Régénérez un lien depuis la fiche de la programmation en back-office.
Le client tourne en boucle sur la page de connexion
Cela se produit quand le lien est ouvert avec un compte différent de celui du destinataire. Le client doit se déconnecter, puis rouvrir le lien.
Le panier reconstruit est vide
Tous les produits de la programmation sont désactivés ou en rupture. Vérifiez leur état dans le catalogue, ou désactivez temporairement l’option d’exclusion des produits indisponibles pour rendre le diagnostic explicite.
Désinstallation
Par défaut, la désinstallation conserve les tables et les programmations. Une réinstallation ultérieure retrouve donc l’intégralité des données. Pour tout supprimer, activez l’option Supprimer toutes les données à la désinstallation avant de désinstaller le module.
Cette suppression est définitive et concerne les programmations, leurs lignes produits et l’historique complet des envois. Faites une sauvegarde de votre base avant de l’activer.