COS WP Woo
Retour au blog
Marchés

Téléchargement vers Yandex.Market : flux automatique avec catégories et filtres

Yandex.Market est le plus grand agrégateur de prix en Russie, mais la mise en place d'un flux YML se transforme en un casse-tête technique. Nous analysons la génération automatique de flux avec mappage de catégories, filtrage, validation et intégration avec 1C.

J'ai reçu un appel d'un client qui possède une entreprise de vente en gros d'huiles et de lubrifiants industriels. Catalogue sur WooCommerce - près de dix-sept mille postes. "Oleg", dit-il, "nous essayons de télécharger normalement sur Yandex.Market depuis six mois. Nous avons essayé trois plugins, embauché un pigiste, il a fait du codage à genoux, mais le flux plante constamment, la modération n'accepte pas, la moitié des produits n'ont pas de catégories et les prix de 1C arrivent avec un retard d'une journée. Nous perdons de l'argent chaque jour." J'ai écouté et réfléchi : ce n'est pas une situation unique. J'entends cela régulièrement, de la part de différents clients, de différentes niches. Yandex.Market est le plus grand agrégateur de prix en Russie, et le téléchargement vers celui-ci est depuis longtemps devenu l'une de ces tâches qui semblent simples sur le papier, mais qui se transforment en cauchemar en pratique.

Apparemment, qu'est-ce qui est si compliqué ? Vous générez un fichier XML au format YML, téléchargez l'URL sur votre compte Market et les produits apparaissent dans les résultats de recherche. En réalité, tout est complètement différent. La spécification YML de Yandex se compose de dizaines de champs obligatoires et recommandés, chacun ayant ses propres restrictions. Les catégories doivent suivre l’arborescence du marché, et non votre structure interne WooCommerce. Les variantes de produits doivent être soumises dans un format spécial avec group_id. Les prix doivent être actuels et non ceux d'hier. Les images sont disponibles via une URL directe sans redirection. Livraison et retrait – avec conditions et coûts spécifiques par région. Et si quelque chose ne va pas, la modération rejette le flux ou, pire encore, l’accepte partiellement, et vous ne savez même pas lesquels de vos dix-sept mille produits sont réellement présentés aux clients et lesquels sont discrètement tombés.

Je développe le plugin COS WP Woo pour WooCommerce, et le module de téléchargement vers Yandex.Market était l'un de ceux que nous avons commencé à créer à la demande directe des clients. Non pas parce que nous voulions un autre plugin générateur de flux YML – il y en a déjà suffisamment sur le marché. Mais parce qu'aucun de ceux existants n'a résolu l'ensemble des problèmes en même temps : filtrage flexible, mappage des catégories, prise en charge des variantes, mise à jour automatique selon un calendrier, intégration avec 1C et, surtout, validation du flux avant de le télécharger sur le Market et de recevoir un refus de modération. Examinons comment tout cela fonctionne et pourquoi les solutions existantes échouent le plus souvent.

Qu'est-ce qu'un flux YML et pourquoi y a-t-il tant de problèmes avec celui-ci

Le format YML - Yandex Market Language - est une extension XML développée par Yandex spécifiquement pour le chargement d'offres de produits. Cela semble technique, mais en substance, il s'agit simplement d'un fichier qui décrit votre catalogue : nom du magasin, devise, arborescence des catégories et un ensemble d'offres de produits (offres). Chaque offre est une fiche produit avec un nom, un prix, une description, une URL, des images et un tas de paramètres supplémentaires tels que le fabricant, le pays d'origine, le code-barres et les caractéristiques.

Le problème est qu'il y a un énorme écart entre « voici ma boutique WooCommerce avec des produits » et « voici un flux YML valide pour le marché ». WooCommerce stocke les données dans sa propre structure : type de publication de produit, champs méta, taxonomies, attributs, variations en tant que publications enfants. Aucun de ces concepts n'est mappé un à un sur YML. Le nom du produit dans WooCommerce peut contenir des balises HTML ou des caractères spéciaux qui ne sont pas valides en XML. Les catégories dans WooCommerce sont une arborescence arbitraire qui ne coïncide pas avec l'arborescence des catégories Yandex.Market. Le prix peut être vide (produit « sur demande »), avec une remise (prix soldé), avec ou sans taxe - et YML attend un numéro spécifique. Les images sont stockées en tant qu'ID de pièce jointe et l'URL complète doit être insérée dans le flux - et l'URL doit fonctionner, sans liens rompus, et de préférence sans paramètres de requête avec dimensions.

J'ai vu des flux générés par d'autres plugins où dans un fichier il y avait des produits sans catégorie, des produits avec un prix nul, des produits sans une seule image et des produits avec une description de quinze mille caractères - malgré le fait que Market coupe la description après trois mille. Formellement, il s'agit d'un XML valide, et même le marché l'acceptera. Mais la moitié des produits ne passeront pas la modération et le propriétaire du magasin passera des semaines à comprendre pourquoi sur dix-sept mille positions, seules deux mille sont affichées dans les résultats de recherche. C'est pourquoi la génération de flux ne consiste pas simplement à « convertir des données d'un format à un autre ». Il s'agit de filtrer, nettoyer, valider et enrichir les données avant qu'elles ne soient transmises à Yandex.

Lorsque nous avons conçu le module Yandex Feed dans COS WP Woo, nous avons immédiatement décidé que l'approche serait différente. Non pas « décharger tout et prier », mais « décharger seulement ce qui est prêt pour le marché et montrer ce qui doit être amélioré ». Il s’agit d’une différence fondamentale qui affecte toute l’architecture.

Examinons les tâches spécifiques qui doivent être effectuées lors du déchargement et comment nous avons abordé chacune d'elles.

La génération du fichier YML commence par les paramètres du magasin : nom, URL, devise, entreprise. Ce sont des paramètres de premier niveau qui changent rarement, mais qui doivent figurer dans le flux. Vient ensuite un bloc de catégories. C'est là que commence le premier problème sérieux : mapper les catégories WooCommerce sur l'arborescence Yandex.Market. Le marché a sa propre taxonomie de plusieurs milliers de catégories, et vos catégories internes telles que « Huiles industrielles → Hydraulique → HLP » ne correspondent pas à ce que Yandex attend. Sur le marché, il peut s'agir de « Huiles et lubrifiants → Huiles hydrauliques », et l'ID de catégorie sera complètement différent.

Honnêtement, de nombreux plugins vident simplement votre arborescence de catégories WooCommerce telle quelle. Et cela fonctionne - Yandex acceptera vos catégories. Mais les produits ne seront pas distribués de manière optimale, leur recherche sera pire et vous perdrez en conversion. Notre approche est de permettre de mapper chaque catégorie WooCommerce à la catégorie Yandex correspondante. Dans les paramètres du module, il y a une section de cartographie où vous voyez deux arbres côte à côte - le vôtre et celui de Yandex - et vous les connectez simplement. Les catégories que vous n'avez pas mappées sont téléchargées avec votre nom d'origine et le module les marque avec un avertissement : "Non mappé à une catégorie Yandex - les produits peuvent ne pas être classés avec précision." Ce n'est pas un bug, le flux fonctionnera, mais au moins vous savez ce qui peut être amélioré.

Vient ensuite l'essentiel : les offres de produits. Chaque produit WooCommerce est transformé en un ou plusieurs éléments d'offre en YML. Un produit simple - une offre. Produit variable - une offre distincte pour chaque variante, réunie via group_id. C’est là que commence le deuxième gros problème que je rencontre régulièrement avec les clients.

WooCommerce stocke les variantes en tant que publications enfants (post_type = product_variation) et elles ont leur propre logique d'héritage. Une variante peut avoir son propre prix ou hériter de son prix parent. Il peut avoir sa propre description, ou non - alors la description du parent est prise en compte. Images - si la variante a sa propre galerie, prenez-la, sinon prenez la galerie du parent. SKU - similaire. Le poids et les dimensions sont les mêmes. Chaque champ doit être vérifié tout au long de la chaîne d'héritage, et ce n'est pas une tâche triviale.

De nombreux générateurs de flux prennent simplement les données de variation directement et ne vérifient pas la solution de secours par rapport au parent. En conséquence, les offres apparaissent dans le flux sans description, sans images ou sans prix - car pour une variante particulière ces données ne sont pas renseignées, elles sont héritées du parent, mais le plugin n'en est pas informé. Nous traitons correctement toute la chaîne d'héritage et chaque offre du flux est garantie qu'elle comporte tous les champs obligatoires.

Il existe une autre nuance avec des variations que peu de gens prennent en compte. Yandex.Market s'attend à ce que les variations d'un produit diffèrent selon des paramètres spécifiques - couleur, taille, volume. Et ces paramètres doivent être spécifiés en tant qu'éléments de paramètre dans l'offre. Il ne suffit pas de générer simplement des URL différentes pour chaque variante : vous devez montrer clairement en quoi elles diffèrent. Notre module détecte automatiquement les attributs qui différencient les variations et les ajoute comme paramètres au flux. Si vous avez un produit « Huile hydraulique HLP 46 » avec des variations de volume - 5 litres, 20 litres, 200 litres - alors dans le flux il y aura trois offres avec group_id et le paramètre « Volume » avec les valeurs 5, 20 et 200, respectivement. Le marché comprendra qu’il s’agit d’un seul produit dans des emballages différents et les affichera correctement.

Filtrage : pourquoi vous ne devriez pas télécharger l'intégralité du catalogue

Parlons maintenant du filtrage - et c'est peut-être l'aspect qui distingue un module de déchargement sérieux d'un script amateur. Le premier réflexe de tout propriétaire de magasin est de tout décharger. Dix-sept mille produits ? Amenons les dix-sept mille au marché ! Plus on est de fous, non ?

Non. Ce n'est pas vrai. Et je vais vous expliquer pourquoi. Yandex.Market n'est pas une vitrine, c'est un agrégateur concurrentiel. Vous payez pour chaque clic sur votre produit. S'il y a un article dans le flux qui est en rupture de stock, l'acheteur cliquera, se rendra sur votre site, verra « en rupture de stock » et partira. Vous avez payé pour le clic mais n'avez pas obtenu la vente. S'il y a un produit dans le flux avec un prix de 150 roubles par bidon d'huile, il s'agit clairement d'une erreur, mais l'acheteur cliquera puis laissera un avis négatif. S'il y a un produit dans le flux sans description et sans image, il ne sera tout simplement pas converti, mais il prendra de la place dans le flux et peut affecter la qualité globale de votre magasin aux yeux de Yandex.

Par conséquent, le filtrage n’est pas un avantage, mais un incontournable. Dans notre module, vous pouvez configurer des filtres basés sur plusieurs paramètres, et je parlerai de chacun d'eux en détail.

Le filtrage par catégorie est le plus évident. Vous choisissez les catégories WooCommerce à inclure dans votre flux et celles à exclure. Scénario typique : vous avez une catégorie « Services » ou « Utilisés » - ils ne peuvent pas être téléchargés sur le marché ou ce n'est pas pratique. Ou vous avez une catégorie « Nouveaux articles » qui duplique des produits d'autres catégories et vous ne voulez pas de doublons dans votre flux. Vous pouvez inclure des catégories spécifiques (liste blanche) ou exclure des catégories spécifiques (liste noire), ce qui est plus pratique pour la taille de votre catalogue.

Le filtrage par balises fonctionne de la même manière. En pratique, nos clients utilisent souvent les balises WooCommerce pour le marquage interne : « not for Market », « saisonnier », « liquidation », « premium ». Si vous ajoutez une balise aux exclusions, tous les produits portant cette balise ne seront pas inclus dans le flux. C'est plus pratique que de déplacer des produits entre catégories, surtout lorsqu'un même produit doit être temporairement retiré du Market sans affecter sa position dans le catalogue du site.

Le filtrage par statut de disponibilité est peut-être le plus important. Il y a trois options ici. Vous ne pouvez télécharger que des produits en stock. C'est le mode le plus sûr, vous ne payez que pour les clics sur les produits que vous pouvez réellement vendre. Vous pouvez télécharger des produits en stock et « sur commande » (commande en souffrance) - si vous savez comment livrer rapidement des marchandises sur commande et que vous souhaitez répondre à davantage de demandes. Et vous pouvez tout télécharger, y compris ceux qui manquent, mais le flux aura alors l'attribut available="false" et le marché les affichera comme "en rupture de stock", ce qui peut être utile pour maintenir une position dans les résultats de recherche pour les requêtes concurrentes.

Le filtrage par tranche de prix vous évite de télécharger des données erronées. Vous fixez le prix minimum et maximum. Un produit dont le prix est de 0 rouble ou 1 rouble constitue une erreur de données évidente et ne sera pas inclus dans le flux. Un produit dont le prix est de 10 millions de roubles est également très probablement une erreur. J'ai vu un catalogue où, en raison d'un échec d'importation de 1C, les prix de plusieurs produits étaient indiqués en kopecks au lieu de roubles - huile pour 1 rouble 50 kopecks par bidon. Sans filtre de prix, ces biens iraient sur le marché et les conséquences seraient désagréables.

Il existe également un filtrage basé sur la présence de données obligatoires - il ne s'agit pas d'un paramètre distinct, mais d'une partie de la logique de validation. Un produit sans nom, sans prix, ou sans au moins une image est automatiquement exclu du flux et se retrouve dans la liste des « produits problématiques » sur le tableau de bord du module. Nous en reparlerons un peu plus tard, lorsque nous arriverons à la validation.

Tous ces filtres sont combinés. Vous pouvez dire : « Prenez les catégories A, B et C, excluez les produits avec l'étiquette « pas pour le marché », uniquement les produits en stock, avec un prix de 100 à 500 000 roubles. Et sur vos dix-sept mille positions, disons, douze mille finiront dans le flux – exactement celles qui sont prêtes à être placées sur le marché et qui seront réellement converties.

Livraison, planification et intégration avec 1C

Un autre grand sujet concerne les paramètres de livraison et de retrait dans le flux. Yandex.Market vous permet de spécifier les conditions de livraison directement dans YML, ce qui influence grandement le positionnement de vos produits dans les résultats de recherche. Les acheteurs filtrent par mode de livraison, par heure, par coût - et si vous ne remplissez pas ces données, vous perdez tout simplement une partie importante des requêtes de recherche.

Dans notre module, les paramètres de livraison fonctionnent à deux niveaux. Le niveau global correspond aux conditions par défaut pour l'ensemble du magasin. Vous spécifiez les frais de livraison, le délai en jours, la région - et ces paramètres s'appliquent à tous les produits, sauf dérogation. Il s'agit de l'élément d'options de livraison dans la section boutique. Le deuxième niveau concerne les conditions individuelles pour des produits ou des catégories spécifiques. Un produit lourd - un baril de pétrole de 200 litres - a un coût de livraison différent de celui d'un bidon de 5 litres. Vous pouvez définir des règles par catégories ou par tranches de poids, et le module définira automatiquement les conditions correctes pour chaque offre.

La même chose avec le micro - le micro. Si vous disposez de plusieurs points de retrait, vous les indiquez tous, et chaque point peut avoir ses propres horaires d'ouverture. Le flux contiendra des éléments de sortie avec des données correctes pour chaque point. Ceci est particulièrement important pour les entreprises régionales disposant de plusieurs entrepôts : l'acheteur voit qu'il peut récupérer les marchandises dans sa ville et le taux de conversion augmente.

Je sais que beaucoup de gens pensent : « Eh bien, alors je vais configurer la livraison dans le compte Market ». Oui, vous pouvez. Mais si les conditions de livraison sont précisées directement dans le flux, elles sont mises à jour automatiquement avec le reste des données. Il n'est pas nécessaire d'accéder à votre compte et de modifier les tarifs manuellement. Nous avons augmenté les frais de port - les avons modifiés dans les paramètres du module - la prochaine génération du flux contient déjà de nouveaux prix. Pour une entreprise aux tarifs dynamiques, cela permet d’économiser des heures de travail manuel chaque mois.

Parlons maintenant du calendrier de mise à jour - et c'est ce qui distingue « définir et oublier » de « je surveille et régénère constamment à la main ». Yandex.Market recommande de mettre à jour votre flux au moins une fois par jour, et si vos prix ou votre disponibilité changent fréquemment, toutes les quelques heures. Si le flux est obsolète, le Market peut afficher des prix obsolètes ou des produits en rupture de stock. Cela entraîne des critiques négatives et une diminution de la note du magasin.

Notre module utilise Action Scheduler, le même moteur de tâches en arrière-plan que WooCommerce utilise pour ses propres besoins. Vous définissez un planning : toutes les heures, toutes les deux heures, toutes les six heures, une fois par jour - et le module régénère automatiquement le flux en arrière-plan. Sans bloquer le site ni le ralentir pour les visiteurs. Pour un catalogue de dix-sept mille articles, la génération prend de trente secondes à quelques minutes - selon le serveur et le nombre de variantes. Action Scheduler traite cela de manière asynchrone, et même si la génération prend plus de temps, le site continue de fonctionner comme d'habitude.

Et nous arrivons ici à l'intégration avec 1C - et c'est, à mon avis, le principal avantage d'un seul plugin par rapport à un ensemble de solutions distinctes. Si vous utilisez notre module d'intégration avec 1C (qui fonctionne via l'API OData, et non via le CommerceML obsolète), alors les prix et les soldes de 1C vont automatiquement à WooCommerce - et de là au flux YML. La chaîne ressemble à ceci : le manager modifie le prix dans 1C → le connecteur OData capte le changement via un webhook ou selon un planning → met à jour le prix du produit dans WooCommerce → la prochaine génération du flux inclut le prix actuel. Tout cela se produit sans intervention humaine.

Pourquoi est-ce important ? Parce que l'alternative est deux plugins distincts (un pour 1C, l'autre pour Market) qui ne se connaissent pas. Le plugin 1C a mis à jour les prix à deux heures du matin et le plugin Market a régénéré le flux à six heures du matin - mais quatre heures se sont écoulées entre ces événements, et si quelqu'un a acheté un produit à ce moment-là à l'ancien prix sur le marché, vous avez un problème. Avec un seul plugin, vous pouvez configurer la génération de flux immédiatement après la synchronisation avec 1C - une action en lance une autre via le planificateur d'actions. La chaîne est fermée et le flux contient toujours les dernières données.

Je me souviens d'un cas avec un client qui vend des huiles moteur. Il disposait de deux plugins distincts - l'un pour l'intégration avec 1C, l'autre pour générer un flux. Ils étaient en conflit au niveau des tâches cron car ils utilisaient tous les deux wp_cron et WordPress essayait d'exécuter les deux tâches en même temps. En conséquence, le flux a été généré avec la moitié des données mises à jour - certains produits avaient déjà de nouveaux prix de 1C, et d'autres avaient encore les anciens. Le marché a montré des prix différents pour le même produit dans différentes offres. Le client a reçu des plaintes de clients et n'a pas pu comprendre ce qui n'allait pas jusqu'à ce que nous ayons réglé la chaîne. Avec un seul module, de tels conflits ne se produisent tout simplement pas : toutes les tâches sont coordonnées via un seul planificateur d'actions.

Séparément, je veux parler des restes. Il est extrêmement important pour le marché qu’un produit marqué comme « en stock » soit réellement en stock. Si un acheteur commande un produit et que vous ne pouvez pas l’expédier, Market réduit la note du magasin, voire le bloque. Lorsque les soldes sont synchronisés depuis 1C, le module d'alimentation les prend automatiquement en compte lors de la génération. Un produit avec un solde nul peut être soit complètement exclu du flux (si le filtrage par disponibilité est configuré), soit marqué comme indisponible. Et si vous disposez de plusieurs entrepôts dans 1C - Basic, Marketing, Katana - le module résume les soldes de tous les entrepôts que vous avez spécifiés dans les paramètres de synchronisation et utilise le chiffre final. Pas seulement « oui/non », mais un nombre réel que Market peut également utiliser pour le classement.

La tarification est une autre chose qui tombe souvent en panne lors de l'utilisation de différents plugins. En 1C il peut y avoir plusieurs types de prix : « Détail », « Vente en gros », « SITE de vente au détail », « Achat ». Pour le marché, vous en avez besoin d'un spécifique - celui pour lequel vous vendez aux clients de détail via le site Web. Notre module 1C vous permet de spécifier quel type de prix mapper sur le prix régulier de WooCommerce, et le même prix est ajouté au flux. Si vous avez un prix réduit (prix de vente), il est également intégré au flux et le marché affichera l'ancien prix barré à côté de l'actuel. Cela attire visuellement les acheteurs et augmente le CTR de vos offres.

Validation : détecter les problèmes avant Yandex

Passons maintenant à ce que je pense être l'une des fonctionnalités les plus sous-estimées : la validation du flux avant l'envoi. La plupart des plugins génèrent un flux et c'est tout. Ensuite, vous le téléchargez sur le marché et attendez les résultats de la modération. Si quelque chose ne va pas, vous obtenez des erreurs après quelques heures ou jours, corrigez-le, régénérez-le, téléchargez-le à nouveau, attendez à nouveau. Un cycle « corrigé - vérifié » peut prendre une semaine si vous disposez d'un catalogue volumineux et que la modération du marché est occupée.

Nous avons intégré la validation directement dans le module. Après chaque génération de flux, le module examine toutes les offres et vérifie leur conformité aux exigences de Yandex.Market. Il ne s'agit pas seulement de « le XML est-il valide », mais également d'une vérification significative de chaque offre de produits. Ce qui est vérifié c'est que le titre n'est pas vide ou trop long, le prix est positif et dans une fourchette raisonnable, il y a au moins une image et l'URL de l'image est disponible, la description ne dépasse pas la limite de caractères, la catégorie est précisée, l'URL du produit est valide et mène vers une page existante. Pour les variantes, la présence de group_id et de paramètres distinctifs est vérifiée. Pour les marchandises avec livraison - que les conditions et les coûts soient indiqués.

Les résultats de la validation sont affichés sur le tableau de bord du module Yandex Feed directement dans le panneau d'administration de WooCommerce. Vous voyez trois groupes : validé avec succès (vert), avec avertissements (jaune) et avec erreurs (rouge). Pour chaque produit problématique, une raison spécifique est affichée : "Pas d'image", "Le prix est nul", "La description dépasse 3 000 caractères", "Il n'y a pas un seul attribut que le marché puisse utiliser comme paramètre". Vous pouvez cliquer sur un produit, accéder à sa fiche dans WooCommerce et résoudre le problème maintenant, pas après que Market ait rejeté votre flux.

Savez-vous quel est l'avertissement le plus courant ? "Il n'y a pas de texte alternatif pour l'image." Yandex.Market ne nécessite pas de texte alternatif pour les images du flux, mais le recommande. Et si sur dix-sept mille produits que vous possédez, douze mille n'ont pas de texte alternatif, c'est une raison de penser non seulement au flux, mais aussi au référencement du site dans son ensemble. À propos, COS WP Woo dispose d'un module de génération par lots de textes alternatifs à l'aide de l'IA - vous pouvez résoudre ce problème en un seul lancement.

Un autre problème courant concerne les doublons. Le même produit peut apparaître deux fois dans le flux s’il se trouve dans deux catégories et que les deux sont incluses dans le filtre. Notre module suit l'unicité par ID de produit et garantit que chaque produit (ou variante) est présenté exactement une fois dans le flux. Les doublons sont une voie directe vers des problèmes de modération et une diminution de la qualité du flux aux yeux de Yandex.

Une autre chose que je n’ai vue nulle part ailleurs est l’aperçu du flux. Avant de copier l'URL du flux et de la coller dans le tableau de bord Market, vous pouvez visualiser les N premières offres de produits directement dans le navigateur, dans un format lisible. Pas de XML brut, mais un tableau structuré : titre, prix, catégorie, nombre d'images, disponibilité, paramètres. Cela vous permet de vérifier rapidement que votre flux ressemble à ce que vous attendez, sans avoir à analyser le fichier XML en tête ou dans un validateur tiers.

Il convient de mentionner séparément la taille du flux. Pour un catalogue de dix-sept mille positions avec variantes, le fichier YML peut peser plusieurs dizaines de mégaoctets. Yandex.Market accepte des fichiers jusqu'à cinq cents mégaoctets, ce n'est donc généralement pas un problème, mais le temps de téléchargement est important. Le marché récupère périodiquement le flux à l'URL spécifiée - et si votre serveur sert le fichier lentement ou avec un délai d'attente, la mise à jour des données sera retardée. Notre module génère un fichier statique et le sert directement via Nginx/Apache, sans passer par PHP - c'est le plus rapide possible et ne charge pas le serveur.

Je me rends compte que tout cela peut ressembler à un tas de détails techniques dont seuls les développeurs ont besoin. Mais en fait, ce sont ces détails qui déterminent si votre téléchargement sur le Market fonctionnera de manière stable pendant des mois sans votre intervention ou nécessitera un contrôle manuel constant. Nous avons opté pour la première option : configurez-la une fois et cela fonctionne. Le flux est mis à jour, les prix sont à jour, de nouveaux produits sont ajoutés, ceux retirés de la vente disparaissent, la validation détecte les problèmes avant qu'ils n'atteignent le marché.

Paramètres du produit et structure de l'offre

Un sujet distinct qui mérite notre attention concerne l'utilisation des paramètres de produit dans le flux. Yandex.Market utilise activement des paramètres (éléments de paramètre) pour le filtrage à facettes et la comparaison de produits. Si votre huile a une viscosité, un point d'éclair et un type de base spécifiés (minéral, synthétique, semi-synthétique), l'acheteur peut filtrer les produits selon ces paramètres directement dans les résultats du marché. Cela affecte considérablement la conversion, car l'acheteur voit exactement ce dont il a besoin, et non l'intégralité de votre catalogue de dix-sept mille articles.

Dans WooCommerce, les paramètres du produit sont stockés sous forme d'attributs (taxonomies comme pa_viscosity, pa_base-type) ou sous forme de méta-champs (si vous utilisez des champs personnalisés). Notre module mappe automatiquement les attributs WooCommerce aux éléments de paramètres YML. Vous pouvez personnaliser les attributs à inclure dans votre flux et ceux à ne pas inclure. Par exemple, l'acheteur n'a pas besoin de l'attribut interne « Code 1C » - il peut être exclu. Et "Viscosité", "Volume", "Fabricant" - allumez.

Pour chaque attribut, vous pouvez spécifier un nom qui sera affiché dans le Market. Si dans WooCommerce l'attribut s'appelle pa_viscosity-class, et pour l'acheteur il s'agit de « Classe de viscosité SAE » - vous définissez un nom lisible par l'homme dans le mappage, et il apparaîtra dans le flux exactement sous cette forme. Le marché affichera « Classe de viscosité SAE : 5W-30 » - c'est clair à la fois pour l'acheteur et pour les filtres de recherche.

Si vous utilisez notre module de champs personnalisés (remplacement d'ACF), les données des champs personnalisés peuvent également être incluses dans le flux en tant que paramètres. Disons que vous disposez d'un champ personnalisé "Certificat GOST" avec un numéro GOST - il peut devenir un paramètre dans YML. Ou "Plage de température d'application" - de moins quarante à plus cent vingt. Tout cela enrichit la fiche produit sur le Marché et augmente la confiance des acheteurs.

J'ai remarqué une tendance intéressante dans la pratique : les produits avec cinq paramètres ou plus dans le flux reçoivent beaucoup plus de clics que les produits avec un ou deux paramètres. Le marché adore les cartes détaillées - elles offrent plus d'options de filtrage et Yandex les classe plus haut. Donc si vous avez des données, utilisez-les. Remplissez les attributs dans WooCommerce (ou dans 1C, d'où ils sont synchronisés), et le module les téléchargera automatiquement dans le flux. Chaque paramètre renseigné est un petit plus pour la visibilité de vos produits.

Parlons maintenant de la structure de l'offre dans son ensemble. YML prend en charge plusieurs types d'offres : standard (type=vendor.model), simplifiée et personnalisée. Nous utilisons le type simplifié par défaut car il est le plus flexible et s'adapte à la plupart des produits. Mais si vous avez des produits avec une division claire en fabricant (fournisseur) et en modèle - par exemple, « Shell Helix Ultra 5W-40 » où Shell est le fournisseur et Helix Ultra 5W-40 est le modèle - vous pouvez passer au type de fournisseur. Le marché structurera mieux l'information et pourra regrouper les produits d'un même fabricant.

Le fournisseur est extrait de l'attribut WooCommerce ou d'un champ personnalisé - vous spécifiez d'où il vient exactement dans les paramètres de mappage. Pays d'origine (country_of_origin) - similaire. Code-barres - à partir d'un champ méta ou d'un attribut. Notre module ne vous oblige pas à stocker des données dans un domaine spécifique : il s'adapte à votre structure de données, et non l'inverse.

Il y a un autre point qui est souvent manqué : l'URL du produit dans le flux. Il semblerait que nous prenions simplement le permalien et l'insérons. Mais l’URL doit être absolue, avec le protocole https, sans paramètres de requête inutiles, et elle doit conduire vers une véritable page. Pour les variantes, l'URL doit inclure des paramètres qui sélectionnent la variante spécifique. Notre module génère des URL correctes pour chaque cas, y compris la gestion des sites multilingues (si vous utilisez WPML ou Polylang) et des domaines IDN (comme butter.site, qui se transforme en xn--80aa6ac0a.xn--80aswg dans l'URL).

En parlant d'images. Le marché accepte jusqu'à dix images par offre. Nous téléchargeons l'image principale du produit et toutes les images de la galerie, mais pas plus de dix. Si l'URL de l'image mène à une image avec des paramètres de requête de redimensionnement (comme le font souvent les plugins CDN), nous prenons l'URL d'origine sans paramètres - c'est plus fiable. Et nous vérifions que l'URL renvoie HTTP 200 et non 404 - les liens rompus vers des images sont l'une des raisons les plus courantes de rejet de produits par modération.

Parlons de ce qui se passe une fois le flux opérationnel. Parce que la personnalisation représente cinquante pour cent de l’activité. Les cinquante secondes concernent le suivi et l’adaptation. Le marché change constamment ses exigences, ajoute de nouveaux champs obligatoires et renforce les contrôles. Votre catalogue vit également : de nouveaux produits apparaissent, les anciens sont supprimés, les prix et les descriptions changent. Le flux doit refléter tous ces changements automatiquement, sans intervention manuelle.

Sur le tableau de bord du module Yandex Feed, nous affichons des indicateurs clés : combien de produits se trouvent dans le flux, à quand remonte la dernière génération, combien de temps cela a-t-il pris, y a-t-il des erreurs ou des avertissements, quelle est la taille du fichier. Si quelque chose s'est mal passé - par exemple, la génération a échoué avec une erreur ou le nombre de produits dans le flux a fortement diminué - vous verrez un avertissement. Une forte réduction du nombre de produits signifie généralement que quelque chose est cassé dans les données : réinitialisation massive des prix, suppression de catégorie, problème de synchronisation 1C. Il est préférable de s’informer à ce sujet depuis le tableau de bord du plugin plutôt que auprès d’un acheteur qui ne trouve pas votre produit sur le Market.

J'ai longtemps réfléchi à la nécessité d'ajouter des notifications par email - du type "votre flux a été généré, voici les statistiques". Nous avons décidé de ne pas l'ajouter pour l'instant, car il se transforme rapidement en spam, que tout le monde ignore. Au lieu de cela, un indicateur visuel sur le tableau de bord dans le panneau d'administration WooCommerce. Si vous vous connectez à la zone d'administration au moins une fois par jour (et qui ne le fait pas ?), vous verrez l'état du flux.

Je veux vous parler d'une autre situation qui se produit plus souvent que nous le souhaiterions : un conflit de données entre WooCommerce et Market. Vous avez téléchargé le flux, le Market l'a accepté et les produits sont apparus dans les résultats de recherche. Et une semaine plus tard, vous avez mis à jour la description du produit dans WooCommerce, la rendant plus longue et plus détaillée. Le flux a été régénéré, le Market a mis à jour les données - et tout à coup, le produit a cessé d'être modéré car la nouvelle description contenait des mots interdits ou dépassait la limite de caractères. Le produit disparaît de l’écran et vous ne comprenez pas ce qui s’est passé. Notre validation détecte ces changements lors de la génération et affiche un avertissement : « Produit X : la description est passée de 2 800 à 3 500 caractères, dépasse la limite du marché. » Vous pouvez raccourcir la description avant que le problème n'atteigne la modération.

Voici une autre histoire amusante tirée de la pratique. Pour un client, un fabricant de produits chimiques automobiles, l’alimentation a parfaitement fonctionné pendant trois mois. Et puis huit cents marchandises « sont tombées » d’un coup. Nous avons commencé à nous pencher sur la question - il s'est avéré que le spécialiste du marketing avait massivement mis à jour les descriptions de produits via WP All Import, et que les descriptions incluaient des balises HTML qui brisaient la structure XML du flux. Pas l'intégralité du flux, mais des offres spécifiques - celles dont la description contenait, par exemple, une balise non fermée ou une esperluette sans s'échapper. L'analyseur XML du marché a tout simplement tout ignoré après la première offre rompue, et les produits ont discrètement disparu. Nous avons ajouté la désinfection des descriptions - strip_tags, nettoyage des caractères spéciaux, normalisation des espaces - dans le pipeline de génération de flux, et depuis lors, de tels problèmes ne sont plus survenus. Mais sans validation, ce bug pourrait vivre des mois sans être détecté.

Vous savez, au fil des années de travail avec le téléchargement sur le marché, je suis arrivé à une conclusion importante : la qualité du flux est plus importante que le nombre de produits qu'il contient. Il vaut mieux télécharger trois mille produits parfaitement préparés - avec des paramètres remplis, des images de haute qualité, des prix et des descriptions corrects - que dix-sept mille, dont la moitié ont des problèmes. Le marché prend en compte la qualité du magasin lors du classement, et un magasin avec un pourcentage élevé de produits rejetés est classé moins bien qu'un magasin où tous les produits sont modérés du premier coup. Le filtrage et la validation dans notre module visent exactement cela : vous aider à télécharger le flux de la plus haute qualité, et non le plus volumineux.

Que choisir et par où commencer

J'entends souvent la question : en quoi votre module diffère-t-il des plugins existants pour générer du YML ? Sur le marché, il existe YML pour Yandex Market, WP All Export avec un modèle YML, plusieurs solutions payantes de CodeCanyon. La réponse honnête est que sur le plan fonctionnel, beaucoup d’entre eux résolvent un problème fondamental : générer un fichier XML au format YML à partir des données WooCommerce. La différence réside dans les détails.

Le premier est l'intégration. Un plugin distinct pour générer un flux ne sait rien de votre intégration avec 1C, de vos prix B2B, des champs personnalisés ou du système de modération de contenu. COS WP Woo est un écosystème unique où tous les modules fonctionnent ensemble. Les prix de 1C apparaissent automatiquement dans le flux. Les champs personnalisés du module CF deviennent automatiquement des paramètres. Les contrôles SEO du module d'audit complètent la validation du flux. Ce n’est pas du blabla marketing, mais une différence pratique : moins de conflits, moins de travail manuel, moins de risques de casse.

La seconde est la validation. Je n'ai pas vu un seul plugin qui vérifie la conformité de chaque produit aux exigences du marché avant de générer un flux et affiche une liste de problèmes dans une interface conviviale. Habituellement, vous êtes informé des problèmes grâce au rapport de modération du marché, après quelques heures ou quelques jours. Et puis commence la quête « trouver le produit problématique parmi dix-sept mille ». Notre tableau de bord affiche immédiatement les problèmes.

Troisième - Planificateur d'actions au lieu de wp_cron. Le cron WordPress n'est pas un vrai cron, il s'exécute lorsque vous visitez un site. Si votre site a peu de trafic (ce qui arrive avec les magasins B2B en dehors des heures de bureau), le cron risque de ne pas se lancer à temps et le flux ne sera pas mis à jour. Action Scheduler fonctionne différemment : il garantit que les tâches sont terminées à un intervalle donné, même si personne ne visite le site. Pour une tâche critique comme la mise à jour d’un flux, cela est essentiel.

Quatrièmement, prise en charge des variantes avec héritage de données correct. Cela semble anodin, mais dans la pratique, une mauvaise gestion des variations est la source la plus courante de problèmes d'alimentation. Un produit sans prix, sans description, sans image - tout cela est une conséquence du fait que le plugin ne sait pas suivre la chaîne d'héritage de la variation au parent.

Si vous utilisez actuellement un autre plugin pour générer du YML et que cela fonctionne, je ne dis pas qu'il faut tout changer de toute urgence. Mais si vous rencontrez des problèmes de modération, si le flux est mis à jour de manière irrégulière, si les prix de 1C arrivent avec du retard, si vous passez du temps à vérifier manuellement les produits avant de les télécharger, jetez un œil à notre module. Il résout tous ces problèmes de manière globale, au sein d’un seul plugin, sans avoir à regrouper différentes solutions et en espérant qu’elles ne s’effondreront pas la prochaine fois que vous mettrez à jour WordPress.

La configuration du module Yandex Feed dans COS WP Woo prend de quinze minutes à une heure, selon le degré de détail avec lequel vous souhaitez configurer le mappage des catégories et des paramètres. Paramètres de base - nom du magasin, sélection des catégories, calendrier de mise à jour - quinze minutes. Configuration complète avec mappage de toutes les catégories sur l'arborescence Yandex, configuration des paramètres, règles de livraison et filtrage - une heure. Ensuite, le flux vit sa propre vie : il est mis à jour, validé et affiche son statut sur le tableau de bord. Vous dirigez une entreprise et vous ne jouez pas avec les fichiers XML.

J'entends souvent l'objection : « Pourquoi ai-je besoin du module Yandex.Market dans un plugin pour WooCommerce, si je peux simplement installer un plugin séparé pour exactement cette tâche ? Bonne question. Un plugin séparé convient si vous n'avez besoin que de la génération de flux et de rien d'autre. Mais en réalité, la mise en ligne sur le Market n’est pas une tâche isolée. Cela est lié aux prix, à la disponibilité dans les entrepôts, aux données produits et à la qualité SEO des descriptions. Et quand toutes ces choses vivent dans différents plugins qui ne connaissent rien les uns des autres, vous passez du temps à les coller, à les synchroniser manuellement et à trier les conflits. Une plateforme unique supprime ce casse-tête. Le module de flux « voit » directement les données 1C, connaît les prix et les groupes B2B et utilise la validation du module SEO. Tout cela fonctionne sans configuration supplémentaire, sans intégrations tierces, sans risque que la prochaine mise à jour de WordPress brise la structure fragile de cinq plugins d'auteurs différents.

Essayez COS WP Woo - c'est le seul plugin WooCommerce qui couvre le téléchargement sur Yandex.Market ainsi que l'intégration 1C, les champs personnalisés, les prix B2B et les contrôles SEO dans une seule solution. Installez, configurez votre flux en une demi-heure et oubliez le travail manuel avec les listes de prix.