Pourquoi le prix de votre offre sur un comparateur est en retard sur celui de votre site
L'écart entre le prix du flux et celui du site s'explique par des causes prévisibles : fréquence de génération, cache, arrondis de TVA et promotions qui démarrent à minuit. Voici d'où vient le décalage et comment le résorber.
Un acheteur arrive depuis un comparateur en s'attendant à payer 149. La fiche produit affiche 164. Il revient en arrière, clique sur la boutique suivante, et vous avez payé un clic qui n'allait jamais se transformer en vente. Si cela arrive assez souvent, le comparateur signalera votre flux, masquera les offres auxquelles il ne peut plus se fier, ou vous demandera de corriger le problème avant de vous référencer de nouveau.
Un écart de prix vient rarement d'un chiffre saisi par erreur. Il s'agit presque toujours d'un problème de timing ou de définition : le flux a été généré à un moment et lu à un autre, ou bien le chiffre du flux ne signifie pas tout à fait la même chose que celui de la page. Les deux se corrigent, mais seulement une fois que vous voyez où se situe réellement le délai.
Les quatre horloges entre votre base de données et le comparateur
Il n'existe pas un seul moment où votre prix devient visible sur un comparateur. Il y en a au moins quatre, et chacun ajoute du retard.
La génération. La plupart des boutiques produisent le XML à intervalles réguliers (une tâche cron à 03:00, par exemple) et l'écrivent dans un fichier statique. Tout ce qui change après 03:00 reste invisible jusqu'à l'exécution suivante. Si vous ne générez le flux qu'une fois par jour, votre ancienneté maximale est de 24 heures avant même de tenir compte du reste.
La récupération. Le comparateur lit le fichier selon son propre calendrier, qui peut coïncider ou non avec le vôtre. Si vous générez à 03:00 et que la récupération a lieu à 02:30, vos offres affichent une journée complète de retard sur votre fichier, et non quelques minutes.
Le cache. C'est celui qui surprend le plus. Un CDN ou un reverse proxy placé devant l'URL de votre flux servira volontiers une copie en cache pendant des heures après que vous avez écrit un nouveau fichier. Le fichier sur le disque est correct, celui que votre navigateur affiche l'est aussi parce que vous interrogez le serveur d'origine, et la version reçue par le robot date d'hier. Vérifiez les en-têtes de réponse de l'URL de votre flux depuis l'extérieur de votre réseau : Cache-Control, Age et Last-Modified vous diront tout de suite si un intermédiaire garde une copie.
Le traitement à l'import. Les gros flux demandent du temps pour être analysés, rapprochés et indexés. Cela se compte généralement en minutes plutôt qu'en heures, mais ce n'est pas zéro.
Faites l'addition honnêtement. Une boutique qui génère son flux chaque jour et qui est lue chaque jour a, en pratique, une fenêtre d'obsolescence pouvant atteindre deux jours, pas « environ une journée ». Une boutique qui génère son flux toutes les heures, le sert sans cache et est lue toutes les quelques heures reste à quelques heures du temps réel.
Fixez votre tolérance, puis choisissez une fréquence
La bonne fréquence de génération dépend de la vitesse à laquelle vos prix bougent. Si vous faites du repricing automatique par rapport à vos concurrents, un flux quotidien n'est pas défendable : vous afficherez un prix que vous avez abandonné avant midi. Si vous fixez vos prix à la main et les modifiez quelques fois par mois, une génération toutes les heures ne vous apporte rien.
Une règle pratique : votre intervalle de génération doit être plus court que le temps au bout duquel une modification de prix compte commercialement. Pour la plupart des boutiques, cela signifie une génération horaire pour le prix et le stock, les champs descriptifs plus lourds étant reconstruits moins souvent.
Si générer tout le catalogue chaque heure coûte trop cher, scindez la tâche. Construisez le flux complet une fois par jour, et mettez à jour les champs de prix et de disponibilité selon une boucle plus serrée : soit en ne régénérant que ces champs dans le même fichier, soit en publiant un flux léger distinct si le comparateur le permet. Vérifiez ce que le canal accepte avant de développer quoi que ce soit : tous n'acceptent pas les mises à jour partielles (delta).
Veillez à ce que le chiffre signifie la même chose aux deux endroits
Le timing mis à part, une seconde catégorie d'écarts vient d'un prix calculé différemment dans le flux et sur la page.
- TVA. Le flux doit contenir le prix payé par le consommateur, TVA comprise. L'erreur classique : un export qui lit le prix HT dans la base de données et applique la TVA avec un arrondi différent de celui de la boutique, ce qui donne une offre à 82,64 face à une page affichant 82,65. Un centime suffit à déclencher un contrôle de prix automatique.
- Arrondis et format. Utilisez le point comme séparateur décimal, deux décimales, aucun séparateur de milliers, aucun symbole monétaire dans le nombre sauf si la spécification l'exige.
1,299.00et1 299,00 €provoquent des erreurs d'analyse ou, pire, des lectures erronées silencieuses. - Prix par groupe de clients. Si votre boutique affiche des prix différents aux clients connectés, aux comptes professionnels ou aux abonnés à la newsletter, le flux doit contenir le prix que voit un visiteur anonyme. Les exports exécutés avec une session administrateur récupèrent parfois un palier de remise réservé au personnel.
- Codes de réduction. Un prix qui ne s'applique qu'avec un code au moment du paiement n'est pas le prix du flux. Le publier est le moyen le plus rapide de perdre la confiance des acheteurs comme celle du canal.
- Prix des variantes. Si la fiche produit affiche par défaut la variante la moins chère alors que votre flux exporte le produit parent à un prix moyen ou au plus élevé, les deux ne concorderont jamais. Exportez chaque variante comme un article distinct, avec son propre prix et son propre identifiant.
- Livraison. Gardez les frais de livraison dans le champ dédié, et non intégrés au prix. Les acheteurs trient souvent par coût total, et le comparateur a besoin des deux montants séparés pour le calculer.
Les promotions sont à l'origine de la plupart des écarts
Une promotion qui démarre à minuit avec un flux régénéré à 03:00, cela fait trois heures d'offres à l'ancien prix : tolérable. Une promotion qui se termine à minuit avec le même calendrier, cela fait trois heures à annoncer un prix que vous ne respectez plus, et c'est cette version qui génère des réclamations.
Deux habitudes aident. Première chose : programmez une régénération du flux immédiatement après chaque borne de promotion, et pas seulement à l'intervalle habituel. Deuxième chose : méfiez-vous des fuseaux horaires des serveurs. Si votre boutique tourne en UTC et que vos campagnes sont définies en heure locale, votre promotion démarre une heure trop tôt ou trop tard deux fois par an. Vérifiez le fuseau horaire que croit avoir le serveur cron, pas celui dans lequel vous vous trouvez.
Si le format du flux prend en charge un prix soldé avec une fenêtre de validité, utilisez-le. Indiquer au canal qu'un prix est valable d'une date à une autre est plus fiable que de courir pour régénérer le fichier au bon moment.
Le statut du stock mérite le même soin que le prix
Un clic sur un produit en rupture de stock est gaspillé exactement comme un clic sur un prix erroné. La disponibilité change généralement plus vite que le prix : si vous mettez à jour fréquemment un seul champ, que ce soit celui-là.
Soyez précis plutôt qu'optimiste. « En stock » doit signifier que vous pouvez expédier ; un délai d'approvisionnement fournisseur de deux semaines est un autre état, et doit être déclaré comme tel si la spécification le permet. Lorsqu'un flux n'accepte que « en stock » ou « rupture », fixez la règle de façon délibérée : la plupart des boutiques ont intérêt à marquer les longs délais comme indisponibles plutôt que de décevoir un acheteur qui attendait une livraison le lendemain.
L'autre moitié du travail, c'est le retrait. Les produits supprimés du catalogue doivent disparaître complètement du flux plutôt que de traîner avec un stock à zéro, et l'URL de tout produit retiré doit renvoyer un vrai 404 ou rediriger vers une page pertinente, pas un gabarit vide.
Une routine de contrôle qui prend dix minutes par semaine
Vous ne pouvez pas corriger une dérive que vous ne voyez pas. Mettez en place une comparaison simple entre le flux et le site en ligne :
- Récupérez l'URL de votre propre flux depuis l'extérieur de votre réseau, comme le ferait un robot, et notez l'en-tête
Age. - Choisissez un échantillon, disons cinquante articles, pondéré vers vos meilleures ventes et tout ce qui a été récemment repricé.
- Pour chacun, extrayez ou vérifiez manuellement le prix et le statut de stock de la page en ligne, puis comparez-les aux valeurs du flux.
- Examinez tout ce qui diffère de plus qu'un arrondi, et tout ce dont l'horodatage dans le flux est plus ancien que votre intervalle de génération annoncé.
Automatisez-la sous forme de script planifié si possible, et déclenchez l'alerte sur un seuil plutôt que sur chaque différence : quelques articles en cours de mise à jour, c'est normal, cinquante pour cent du catalogue ne l'est pas. Surveillez aussi le nombre total d'articles d'une exécution à l'autre : un flux qui perd soudain un tiers de ses produits signifie généralement qu'une tâche de génération a échoué en cours de route, et non que le catalogue a réellement changé.
Les boutiques qui ont le moins de problèmes sur les comparateurs ne sont pas celles qui ont les flux les plus élaborés. Ce sont celles où le chiffre du fichier est le chiffre de la page, à toute heure du jour.