Guide · PrestaShop
Suivre les ventes PrestaShop canal par canal
Une boutique PrestaShop sait tout de ses commandes et rien de leur origine. La bonne nouvelle : le crochet qui annonce un paiement existe depuis toujours. La moins bonne : personne ne l'appelle pour vous.
Les deux routes possibles, et il n'y en a pas de troisième
Le webservice
- Une API que l'on interroge, jamais qui prévient
- Aucun webhook natif dans PrestaShop
- Un intermédiaire vient lire les commandes
- Rien à développer sur la boutique
- Mais un décalage : on lit toutes les x minutes
Un petit module
- Le crochet actionOrderStatusPostUpdate
- L'appel part à l'instant où l'état change
- L'en-tête d'autorisation est posé par votre code
- La référence de commande sert de clé d'idempotence
- Et l'identifiant de clic peut voyager
PrestaShop n'a pas de case à cocher pour appeler une adresse : la documentation officielle renvoie au PHP d'un module pour tout appel sortant. Ce n'est pas un manque de Subtraq, c'est la façon dont PrestaShop est fait — et ça tient en un crochet et un appel HTTP.
À savoir avant de chercher
Ce que le webservice fait, et ce qu'il ne fera jamais
Conséquence pratique : sans module, la seule voie est qu'un intermédiaire vienne demander à la boutique ce qui est nouveau, à intervalle régulier. Ça marche, et c'est même confortable — mais les ventes arrivent avec un décalage, et il faut que l'intermédiaire se souvienne de ce qu'il a déjà envoyé.
L'identifiant de facture vous sauve là aussi : si l'intermédiaire relit deux fois la même commande, la référence est la même et Subtraq ne compte pas deux fois. Une relecture de tout l'historique ne fabrique donc pas de faux chiffre.
Sources : le webservice et les appels vers des services externes, documentation PrestaShop.
Une API qui répond, pas une API qui appelle
La documentation PrestaShop décrit son webservice comme une API CRUD : elle permet à un outil tiers d'accéder aux données de la boutique. Elle ne notifie rien. Et pour les appels sortants vers un service externe, la documentation renvoie au développement d'un module.
La route du module, 7 étapes
Du changement d'état à la vente attribuée
Rien à installer depuis une place de marché, rien à acheter : un dossier, une classe, un crochet. Le module ne fait qu'une chose, et il se retire aussi vite qu'il s'installe.
Dans Subtraq, créez une clé serveur
Installation → Clés d'API. Elle commence par stq_sk_, porte le droit events:write, et ne s'affiche qu'une fois. Relevez aussi le slug de l'espace client.
Créez un module minimal
Un module PrestaShop n'est pas une application : c'est un dossier, une classe, et une méthode d'installation qui déclare le crochet. Le vôtre n'aura qu'une seule responsabilité, ce qui le rend facile à relire et à retirer.
Déclarez le crochet actionOrderStatusPostUpdate
Il est appelé après le changement d'état d'une commande et reçoit le nouvel état, l'ancien, et l'identifiant de la commande. C'est le bon endroit : il parle après coup, donc sur un fait accompli, pas sur une intention.
Ne réagissez qu'aux états qui valent de l'argent
Testez le nouvel état sur son drapeau de paiement plutôt que sur son libellé : un libellé se traduit et se renomme dans le back-office, un drapeau non. Sans ce test, chaque passage en « en cours de préparation » enverrait une vente.
Composez le corps et faites l'appel
Cinq champs : space, amount en centimes, currency, invoiceId, email. Le total payé et l'adresse de facturation se lisent sur l'objet commande et son client. L'en-tête Authorization prend Bearer suivi de la clé.
Multipliez par cent, et arrondissez explicitement
Subtraq compte en centimes et refuse les nombres à virgule sur de l'argent. Un total de 43,90 € doit partir en 4390 : un arrondi explicite évite que les flottants de PHP en fassent 4389.
Mettez la référence de commande dans invoiceId
Elle est stable et unique. Une commande dont l'état va et vient renvoie la même référence : Subtraq reconnaît le doublon, répond 200 et n'ajoute rien. C'est la seule protection contre un chiffre d'affaires gonflé.
Nom et paramètres du crochet relevés dans la documentation PrestaShop le 12 septembre 2026 — actionOrderStatusPostUpdate et la liste complète des crochets. Une version change : si ce que vous voyez ne correspond plus, la source fait foi.
Le point délicat
Faire voyager le clic jusqu'à la commande
Dans une boutique PrestaShop, le trajet suppose de garder cette valeur entre l'arrivée du visiteur et la validation de sa commande. C'est du ressort du module, et c'est ce qui rend l'attribution exacte plutôt que probable.
Sans cela, la voie reste l'adresse email du client : Subtraq cherche la personne dans la fenêtre d'attribution de l'espace, trente jours par défaut. C'est exactement ce que fait déjà l'intégration Stripe, et c'est suffisant dans la grande majorité des cas.
Un mot sur les UTM : elles racontent la campagne à votre outil de mesure d'audience, elles ne rattachent pas une commande à un clic. Les deux mécanismes cohabitent sans se remplacer.
Un paramètre nommé st_id
Un lien Subtraq ajoute à sa destination un paramètre st_id, de la forme clk_ suivi de vingt-quatre caractères pris dans un alphabet sans caractères ambigus. C'est ce paramètre que le champ clickId de la requête attend.
Les cas pénibles, traités franchement
Une boutique a des paniers qui n'aboutissent pas, des chèques qui arrivent en retard, des états renommés.
Et les paniers abandonnés ?
Un panier abandonné n'est ni un prospect, ni une vente : le faire entrer comme tel corromprait précisément le chiffre pour lequel une agence est payée. Si vous voulez mesurer les mises en route de commande, c'est un événement personnalisé qu'il faut envoyer — sans montant, depuis le navigateur, avec un nom comme « commande_commencee ». Le rapport les comptera à part, à leur juste place.
Un client paie par virement, deux semaines plus tard.
Le crochet se déclenche au changement d'état, donc le jour où vous marquez la commande payée. Ce qui devient décisif, c'est la fenêtre d'attribution : un clic plus ancien qu'elle ne rattache plus. Sur une boutique aux paiements lents, allongez-la avant de brancher — elle ne rattrape pas le passé.
Nous avons renommé nos états de commande.
C'est pour cela que le test porte sur le drapeau de paiement de l'état, pas sur son libellé. Un libellé se traduit, se renomme, se duplique ; un état marqué comme payé reste marqué comme payé. Un module qui comparerait des chaînes de caractères casserait au premier renommage, sans rien dire.
Un remboursement, ou une commande annulée ?
Subtraq n'accepte pas de montant négatif et n'a pas d'appel qui annule une vente écrite. Une commande annulée ne s'envoie simplement pas ; un remboursement se trace par un événement à montant nul et se corrige à la main dans le rapport. C'est une limite, elle est dite.
Questions fréquentes
Faut-il un module payant sur la place de marché ?
Non, et il n'en existe pas de notre côté. Le module dont parle cette page est le vôtre : un dossier, une classe, un crochet. Si vous préférez ne rien développer, la route par intermédiaire lit la boutique par son webservice.
Faut-il modifier le thème de la boutique ?
Non pour la vente : c'est le serveur qui parle au serveur. Oui, légèrement, si vous voulez faire voyager l'identifiant de clic de l'arrivée du visiteur jusqu'à sa commande.
Le webservice suffit-il vraiment, sans module ?
Oui, avec un décalage et à une condition : que l'intermédiaire garde la trace de ce qu'il a déjà envoyé. La référence de commande dans le champ d'identifiant de facture vous protège de toute façon des doublons.
Faut-il un pixel sur la boutique ?
Non. Aucune ligne n'est ajoutée au rendu des pages pour enregistrer une vente. Le mouchard de page ne sert qu'aux prospects et aux événements, et il n'accepte jamais de montant.
Où ranger la clé serveur ?
Dans la configuration du module ou une variable d'environnement du serveur, jamais dans un fichier de thème. Elle ne doit jamais atteindre un navigateur.
Vos paiements passent par Stripe ?
Alors la route la plus courte ne passe pas par PrestaShop : l'intégration Stripe enregistre chaque paiement toute seule, signature obligatoire, rien à développer.
Le guide StripeSavoir quel canal a vendu quoi, enfin
Créez le compte, prenez une clé serveur, accrochez le crochet. La boutique répond à la question qu'elle ne savait pas poser.
Créer un compte gratuit