Exporter des produits WooCommerce : 3 méthodes comparées
L'outil d'export intégré, l'API REST et le catalogue public, essayés sur la même boutique WooCommerce 11.2 : ce que chaque voie demande et ce qu'elle a fourni.

Exporter les produits d'une boutique WooCommerce semble tenir en un bouton et un fichier. La bonne méthode dépend pourtant de ce que vous avez en main : l'administration de la boutique, des clés API, ou seulement son adresse.
Nous avons exporté la même petite boutique de trois façons, le même jour. L'outil d'export intégré a fourni ses 7 produits et ses 6 variations. L'API REST aussi. Le catalogue public, celui que le navigateur de n'importe quel visiteur peut lire, a fourni les 5 produits publiés et les mêmes 6 variations. Les deux absents étaient un brouillon et un produit privé, qu'aucun visiteur ne voit non plus. Ces deux produits, et quelques champs de gestion comme le coût ou la note de commande, font la différence entre les trois méthodes.
Votre niveau d'accès désigne la bonne méthode :
- Vous pouvez vous connecter à l'administration de la boutique : utilisez l'outil d'export intégré de WooCommerce, sous Produits → Tous les produits → Exporter. Il donne la copie complète, au format CSV de WooCommerce.
- Vous disposez de clés API, ou quelqu'un peut vous en créer : passez par l'API REST. Elle renvoie le catalogue complet, champs de gestion compris, en JSON, à lire par un programme.
- Vous n'avez que l'adresse de la boutique, ou il vous faut le fichier au format d'une autre plateforme : utilisez ScrapeWoo. Il lit le catalogue publié et prépare un CSV WooCommerce, un CSV Shopify, un CSV standard ou un JSON.
La boutique exportée de trois façons
Le catalogue a été composé pour que les trois voies ne donnent pas le même résultat. Il contenait une veste de pluie en quatre variations, dont une en promotion et une en rupture, un bonnet en deux variations et un sac en toile. La tasse émaillée avait un stock de 12, un coût d'achat, une note de commande et un champ personnalisé pour sa référence fournisseur. S'y ajoutaient une option d'emballage cadeau masquée des pages de la boutique, un produit privé et un brouillon.
Conditions du test
WooCommerce 11.2.1 sur WordPress 7.1.3, sans extension, une boutique en français et une en anglais, avec le compte administrateur. L'outil d'export a tourné avec ses options par défaut, puis avec les métas personnalisées. L'API REST a été lue avec une clé en lecture seule. Les quatre fichiers de ScrapeWoo ont été générés à partir du catalogue public de la boutique. La fonctionnalité « Coût des marchandises vendues » de WooCommerce, inactive sur une installation neuve, était activée.
| Voie | Ce qu'il vous faut | Produits obtenus | Ce que vous obtenez |
|---|---|---|---|
| Outil d'export intégré | Un accès à l'administration | 7 sur 7, avec 6 variations | Un CSV de 54 colonnes et 13 lignes |
| API REST | Une paire de clés avec le droit Lecture | 7 sur 7, avec 6 variations | Du JSON en 3 requêtes : 72 champs par produit, 47 par variation |
| Catalogue public, avec ScrapeWoo | L'adresse de la boutique | Les 5 produits publiés, avec 6 variations | Un CSV WooCommerce, un CSV Shopify, un CSV standard ou un JSON |
Avec un accès à l'administration : l'outil d'export intégré
Ouvrez Produits → Tous les produits, puis cliquez sur Exporter. L'écran « Exporter les produits » demande quelles colonnes, quels types de produits et quelle catégorie exporter, et s'il faut joindre les métas personnalisées. Sans rien toucher, il exporte toutes les colonnes, tous les types et toutes les catégories. Le bouton « Générer le CSV » télécharge ensuite un seul fichier. WooCommerce décrit cet écran dans son guide Product CSV Importer and Exporter (en anglais).
Notre fichier comptait 54 colonnes et 13 lignes, une par produit et une par variation. Rien de ce que contenait la boutique n'a été écarté. Le brouillon y figurait avec -1 dans la colonne Publié, le produit privé avec 0, et l'emballage cadeau avec hidden dans Visibilité dans le catalogue. La ligne de la tasse portait son stock de 12, son montant de stock faible, sa note de commande et son coût. Cette dernière colonne, Coût des marchandises vendues, apparaît une fois la fonctionnalité du même nom activée.
Les champs personnalisés demandent une case de plus. Avec « Oui, exporter toutes les métas personnalisées » cochée, le fichier a gagné une 55e colonne, Méta : supplier_ref, qui contenait la référence fournisseur de la tasse. Sans la case, cette valeur reste dans la boutique.
Des en-têtes dans la langue de l'administration
Sur notre boutique en français, la ligne d'en-têtes était en français : UGS, Nom, Publié, Tarif régulier, Tarif promo. Notre boutique en anglais a écrit SKU, Name, Published, Regular price, Sale price. L'importeur de WooCommerce reconnaît ces noms. Nous avons réimporté l'export de la boutique française dans la même boutique, par Produits → Importer, en mise à jour. Nous avons gardé la correspondance de colonnes que l'écran présélectionne. L'import s'est terminé sur « Importation terminée ! 13 produits ont été mis à jour. », sans aucune ligne ignorée. Si le fichier part vers un autre outil, vérifiez les noms de colonnes qu'il attend.
Deux autres points comptent quand le fichier quitte l'administration. Chaque ligne garde l'identifiant du produit, et chaque variation indique le SKU de son parent dans Parent. D'après le même guide, l'importeur de WooCommerce rapproche les lignes par ID ou par SKU lorsqu'il met à jour des produits existants. C'est donc le fichier à modifier dans un tableur puis à réimporter dans la même boutique. Quant aux cellules d'images, elles contiennent l'adresse des fichiers dans la médiathèque de la boutique, et non les fichiers.
L'outil écrit un seul format, le CSV de WooCommerce. Si la boutique est à vous et que les produits restent dans WooCommerce, c'est par cet export qu'il faut commencer. Pour Shopify ou pour un script, c'est une source à convertir.
Avec des clés API : l'API REST
L'API REST est l'entrée que WooCommerce réserve aux programmes. Un administrateur crée une paire de clés dans WooCommerce → Réglages → Avancé → Clés de l’API REST, choisit un droit (Lecture, Écriture ou Lecture/Écriture) et vous la transmet. Le secret ne s'affiche qu'une fois ; l'écran le précise au moment où il génère la clé. Un export ne fait que lire : demandez le droit Lecture. La documentation de l'API REST (en anglais) détaille la mise en place.
Sans clé, notre demande de la liste des produits a été refusée : « Désolé, vous ne pouvez pas lister les ressources. » Avec une clé en lecture seule, elle a renvoyé les 7 produits, brouillon et produit privé compris, chacun avec 72 champs. En plus du contenu du CSV, chaque produit arrivait avec sa date de création, son nombre de ventes et ses champs personnalisés, sans case à cocher.
Les variations demandent une étape de plus. La liste des produits, à l'adresse /wp-json/wc/v3/products, renvoie un produit variable avec les identifiants de ses variations. Les variations elles-mêmes sont servies par /wp-json/wc/v3/products/<id>/variations, une requête par produit parent. Notre catalogue a demandé trois requêtes : une pour les produits, une pour les quatre variations de la veste, une pour les deux du bonnet. La référence de l'API REST de WooCommerce (en anglais) indique 10 produits par page par défaut. Elle prévoit l'authentification HTTP Basic avec la paire de clés lorsque la boutique est servie en HTTPS.
Nous avons aussi tenté de créer un produit avec la clé en lecture seule. La boutique a refusé : « La clé de l’API fournie ne dispose pas des droits d’écriture. » Une clé Lecture suffit donc à un export et ne peut pas modifier le catalogue.
Ce que l'API renvoie est du JSON, pas un fichier qu'un importeur ou un tableur ouvre comme une table de produits. Il faut écrire le programme qui parcourt les pages, rattache chaque variation à son parent et écrit les colonnes attendues par la destination. Pour une synchronisation régulière ou une intégration, ce programme est le bon investissement. Pour un export ponctuel, c'est plus de travail que les deux autres voies.
Avec la seule adresse de la boutique : ScrapeWoo
ScrapeWoo exporte un catalogue à partir de l'adresse de la boutique. Vous la collez, vous vérifiez les produits détectés, vous gardez ceux qui vous intéressent et vous choisissez le fichier : CSV WooCommerce, CSV Shopify, CSV standard ou JSON. Il ne demande ni accès à l'administration de la boutique ni clé API.
C'est possible parce qu'une boutique WooCommerce publie par défaut son catalogue deux fois : en pages pour les visiteurs, et en données pour sa propre vitrine. WooCommerce documente cette seconde forme, la Store API, comme une interface sans authentification, qui ne demande aucune clé et ne donne pas accès aux données sensibles de la boutique. Le point d'accès produits de la Store API sert des données produit publiques, pour que les listes de produits s'affichent dans le navigateur du client.
Sur notre boutique, ScrapeWoo a lu les 5 produits publiés et leurs 6 variations, puis écrit ces fichiers :
| Export | Contenu du fichier |
|---|---|
| CSV WooCommerce | 38 colonnes et 11 lignes : chaque produit, suivi de ses variations avec le SKU du parent dans Parent |
| CSV Shopify | 34 colonnes et 10 lignes : les quatre variantes de la veste sous un même handle, le nom par lequel Shopify regroupe les lignes d'un produit, celle en promotion avec Price à 99.00 et Compare-at price à 129.00 |
| CSV standard | 27 colonnes et 11 lignes, avec la devise et l'adresse publique de chaque produit |
| JSON | 5 produits, leurs 6 variantes imbriquées |
Chaque variation a conservé ce dont une destination a besoin : son SKU, son tarif régulier, le tarif promo pour celle en promotion, et son stock. Les noms, les descriptions, les catégories, les étiquettes, les adresses d'images et les attributs de la veste ont suivi.
Nous avons posé le CSV WooCommerce de ScrapeWoo à côté de l'export intégré. Sur les 11 lignes que les deux fichiers ont en commun, l'état du stock, la quantité en stock, le poids et les adresses d'images sont identiques. Les quantités : 4, 7, 3 et 0 unités pour les variations de la veste, 20 pour le sac, 12 pour la tasse. Le tarif régulier et le tarif promo sont les mêmes sur chaque variation et chaque produit simple.
Les deux autres voies vous remettent les données de la boutique dans la forme de la boutique, et la conversion vous revient. ScrapeWoo écrit le fichier que lit la destination. C'est utile aussi quand vous avez un accès : l'outil intégré écrit le CSV de WooCommerce, ScrapeWoo écrit celui de Shopify. Son CSV WooCommerce porte des en-têtes en anglais ; notre guide sur l'import de produits variables en CSV montre ce qu'en fait un WooCommerce en français.
Les fichiers contiennent le catalogue que la boutique publie. Sur la nôtre, il s'agissait de la veste, du bonnet, du sac, de la tasse et de l'emballage cadeau. L'administration marque ce dernier comme masqué du catalogue, mais il est publié et possède une adresse publique. Pour le produit privé et le brouillon, la boutique a répondu « ID de produit non valide. » à une requête anonyme. Les coûts, les notes de commande et les champs personnalisés ne figuraient pas dans les données publiques. Tout cela sort par les deux voies précédentes.
Les quantités en stock figurent dans les fichiers lorsque la boutique les publie, comme la nôtre : 12 pour la tasse. Lorsqu'une boutique publie seulement qu'un produit est disponible, comme la nôtre pour le bonnet, les fichiers portent la disponibilité. Pour essayer sur une boutique, collez son adresse dans ScrapeWoo : les produits détectés s'affichent avant tout export.
Champ par champ : ce que chaque voie a fourni
Le tableau reprend les données d'un produit une à une. Pour chacune, il indique ce que les trois voies ont fourni sur la même boutique :
| Donnée | Outil d'export intégré | API REST avec une clé | ScrapeWoo, depuis le catalogue public |
|---|---|---|---|
| Nom, SKU, descriptions, catégories, étiquettes, attributs | Oui | Oui | Oui |
| Tarif régulier et tarif promo | Oui | Oui | Oui |
| Poids | Oui, avec l'unité dans le nom de la colonne | Oui | Oui, le chiffre que la boutique publie ; le CSV Shopify laisse le poids à saisir en grammes |
| Variations | Une ligne chacune, reliée au parent par son SKU | Une requête de plus par produit variable | Une ligne chacune, reliée au parent par son SKU ; imbriquées dans le JSON |
| Images | Adresses dans la médiathèque de la boutique | Adresses, avec un champ de texte alternatif | Adresses des images publiées |
| Stock | État et quantité | État et quantité | État, et la quantité lorsque la boutique la publie |
| Montant de stock faible, note de commande, coût | Oui | Oui | Non public |
| Champs personnalisés | Avec la case des métas cochée | Oui | Non public |
| Brouillons et produits privés | Oui, codés dans Publié |
Oui, avec leur état | Non public |
| Produit masqué du catalogue | Oui, marqué hidden |
Oui, marqué hidden |
Présent ; ce réglage n'est pas public, repassez le produit en masqué après l'import |
| Date de création, nombre de ventes | Non | Oui | Non public |
Quand l'accès ne suffit pas à trancher
L'accès réduit le choix, et la destination des produits départage ce qui reste.
La boutique est à vous et vous partez vers Shopify : l'export intégré est un fichier WooCommerce, qu'il reste à transformer en fichier Shopify. ScrapeWoo écrit le CSV Shopify à partir de votre catalogue publié. Le guide pour migrer des produits WooCommerce vers Shopify avec un CSV traite l'import.
Pour une copie de votre propre catalogue, à conserver ou à modifier en masse puis à réimporter, prenez l'outil intégré avec les métas personnalisées cochées. Son fichier porte les brouillons, les identifiants et les champs de gestion dans les colonnes que l'importeur de WooCommerce relit.
Des clés sans personne pour écrire le programme ne produisent pas de fichier. Si les produits qu'il vous faut sont publiés, le catalogue public vous en donne un, sans écrire de code.
Quand la boutique n'est pas la vôtre, partez de son adresse. C'est le cas d'un client qui n'a pas encore transmis ses accès, ou d'un fournisseur qui vous autorise à reprendre ses produits et n'a pas d'export à envoyer. Le guide pour extraire des produits WooCommerce sans accès admin déroule une extraction complète, étape par étape.
Et si un autre système a besoin du catalogue tous les jours, c'est le rôle de l'API REST, avec une clé Lecture.
Pour partir d'une adresse, collez-la dans ScrapeWoo et vérifiez les produits détectés avant d'exporter quoi que ce soit. Si vous hésitez entre les quatre fichiers, le comparatif des formats d'export les met côte à côte.
Sources
- WooCommerce : importer et exporter des produits en CSVwoocommerce.com
- WooCommerce : documentation de l'API RESTwoocommerce.com
- WooCommerce : référence de l'API RESTwoocommerce.github.io
- WooCommerce : documentation de la Store APIdeveloper.woocommerce.com
- Store API : point d'accès des produitsdeveloper.woocommerce.com


