Un client remplit son panier, arrive à l’étape de la livraison et découvre un tarif que vous n’aviez pas prévu. Ou, plus déroutant encore, le message « Aucune méthode de livraison n’est disponible ». Ces deux situations ne s’expliquent pas toujours par le tarif lui-même : elles viennent souvent de la mécanique de sélection de WooCommerce. Voici comment les frais de port WooCommerce sont réellement calculés, et comment régler les vôtres sans tâtonner.

Ce que WooCommerce calcule quand le client arrive à la livraison
Avant de toucher au moindre réglage, il faut comprendre l’enchaînement que WooCommerce exécute à chaque fois qu’un panier arrive à l’étape de la livraison. Cet enchaînement explique la quasi-totalité des comportements surprenants. Cet article suppose la boutique déjà en place : si ce n’est pas encore le cas, notre article sur le fonctionnement général de WooCommerce pose le décor que nous approfondissons ici.
WooCommerce prend d’abord l’adresse de livraison du client, ou l’emplacement qu’il détermine tant que le client n’a rien saisi. Il cherche ensuite la zone de livraison qui correspond à cette adresse. Il ne retient qu’une seule zone, jamais deux, et n’affiche alors que les méthodes d’expédition rattachées à cette zone précise. Enfin, chaque méthode disponible calcule son propre tarif. Avec la méthode Forfait, ce calcul peut notamment intégrer les coûts associés aux classes d’expédition des produits présents dans le panier.
Trois objets, donc, qui s’articulent dans cet ordre : la zone décide de ce que le client peut voir, la méthode calcule le tarif, et la classe peut moduler le coût du forfait selon la nature des produits.
Retenez surtout le point le plus contre-intuitif : WooCommerce ne combine jamais plusieurs zones. Si une adresse correspond à deux zones que vous avez créées, une seule sera appliquée, et l’autre sera purement et simplement ignorée. C’est la source la plus fréquente des tarifs qui « ne s’appliquent pas ».
Les zones de livraison : découper la carte
Une zone de livraison est un territoire que vous définissez, auquel vous attachez les méthodes disponibles pour les clients qui s’y trouvent. Tout se passe dans WooCommerce, Réglages, onglet Expédition, sous-onglet « Zones d’expédition ».
Pour délimiter une zone, le champ « Composition de la zone » vous permet de sélectionner des continents, des pays et les subdivisions administratives des pays pour lesquels WooCommerce en propose. Les codes postaux, eux, se saisissent à part : un lien « Limiter à des codes postaux spécifiques », placé sous ce champ, ouvre la zone de saisie correspondante.
Ce point mérite une précision utile pour une boutique française : WooCommerce ne fournit nativement aucune liste de départements ou de régions pour la France. Sous le niveau « France », le seul découpage possible est donc le code postal. Le champ accepte des codes complets, des plages écrites avec trois points, par exemple 75001...75020, et des caractères génériques, par exemple 65* pour couvrir l’ensemble d’un département. C’est ainsi que l’on cible une agglomération ou un département, et non par une liste déroulante qu’on chercherait en vain.
L’ordre des zones décide de tout
C’est le point central de cet article, et celui qui est le plus souvent mal compris.
WooCommerce parcourt vos zones de haut en bas, dans l’ordre où elles apparaissent à l’écran, s’arrête à la première qui correspond à l’adresse du client, et ne regarde pas les suivantes. Le classement n’est donc pas un simple confort d’affichage : c’est une règle de priorité. Et il ne tient aucun compte de la précision géographique. Une zone très large placée en haut de liste l’emporte sur une zone très précise placée en dessous.
Prenons un cas concret. Vous créez deux zones :
- Hautes-Pyrénées (codes postaux
65*) : retrait sur place, et livraison à 8 €. - France : livraison à 12 €.
Si la zone France est positionnée au-dessus de la zone Hautes-Pyrénées, un client de Tarbes verra la livraison à 12 €, et n’aura jamais accès au retrait sur place ni au tarif à 8 €. Son adresse correspond bien à la zone France, qui est rencontrée en premier : WooCommerce s’arrête là. La zone Hautes-Pyrénées existe, elle est correctement configurée, et elle ne servira jamais.
La règle générale est donc simple : placez toujours les zones les plus précises au-dessus des zones les plus larges. Du plus petit territoire au plus grand, en descendant. Les zones se réordonnent par glisser-déposer, à l’aide de la poignée située à gauche de chaque ligne.
La zone « Reste du monde »
Sous vos zones figure une entrée particulière, que vous n’avez pas créée et que vous ne pouvez pas supprimer : « Reste du monde ». WooCommerce la décrit comme la zone à utiliser pour les modes de livraison destinés à toute région non citée au-dessus. Elle porte l’identifiant 0 dans le fonctionnement interne de WooCommerce, ce qui explique qu’on la trouve parfois appelée « zone 0 » dans la documentation technique.
C’est le filet de sécurité. Lorsqu’une adresse ne correspond à aucune de vos zones, c’est cette entrée qui est retenue. Si elle ne contient aucune méthode d’expédition, ce qui est le réglage par défaut, le client se retrouve devant un panier sans aucune option de livraison.
Deux usages sont possibles, et ce sont deux stratégies différentes. Vous pouvez la laisser vide volontairement, pour signifier que vous ne livrez pas au-delà des territoires que vous avez définis. Vous pouvez au contraire y placer une méthode, par exemple un tarif international forfaitaire, pour proposer une solution aux destinations restantes. Ce qu’il faut éviter, c’est de la laisser vide sans le savoir.
Aucune méthode de livraison n’est disponible : trouver la cause
Une précision avant de commencer, car elle évite de chercher au mauvais endroit : il faut distinguer un message d’indisponibilité d’une absence totale d’étape de livraison. Si la livraison ne s’affiche pas du tout, soit l’expédition est désactivée dans les réglages généraux, soit aucune méthode d’expédition n’a jamais été créée, dans aucune zone, soit le panier ne contient aucun produit nécessitant une expédition. Une méthode simplement désactivée ne produit pas cet effet : l’étape reste affichée, accompagnée d’un message d’indisponibilité. Un article marqué virtuel ne déclenche aucun calcul de livraison. En revanche, la seule option « Téléchargeable » ne suffit pas à supprimer l’expédition : le produit doit également être déclaré virtuel s’il n’existe sous aucune forme physique. Un panier contenant au moins un produit non virtuel déclenche bien le calcul de la livraison. Nous avons détaillé cette distinction dans notre article sur la vente de produits numériques avec WordPress.
Le message d’indisponibilité, lui, est le symptôme le plus courant, et il n’a pas une cause unique. Plutôt que de modifier des réglages au hasard, déroulez ces quatre vérifications dans l’ordre.
1. Vérifiez l’adresse utilisée pour le test. WooCommerce calcule à partir de l’adresse de livraison, ou de l’adresse qu’il estime tant que le client n’a rien saisi. Une adresse incomplète, un pays non renseigné ou un code postal mal formaté peuvent suffire à faire échouer la correspondance. Testez avec une adresse complète et réaliste avant toute autre chose.
2. Identifiez la zone réellement sélectionnée. C’est l’étape que l’on saute trop souvent, alors que WooCommerce sait vous donner la réponse. Dans Réglages, Expédition, sous-onglet « Réglages de livraison », activez le mode de débogage. WooCommerce affiche alors sur la page panier un message de la forme « Zone correspondant au client « France » », et cesse d’utiliser son cache de calcul des tarifs.

➔ Pensez à désactiver ce mode une fois le diagnostic terminé : il est visible par tous les internautes, y compris non connectés, et il contourne un cache utile aux performances.
3. Vérifiez que cette zone contient bien une méthode active. Une zone peut être correctement reconnue et rester muette si aucune méthode n’y a été ajoutée, ou si les méthodes présentes ont été désactivées. Le tableau des zones affiche cette information directement dans la colonne des méthodes.
4. Contrôlez les conditions propres à la méthode. Une méthode active peut ne pas s’afficher parce que ses conditions ne sont pas remplies. C’est typiquement le cas de la livraison gratuite conditionnée à un montant minimum : si le panier est en dessous du seuil et qu’aucune autre méthode n’existe dans la zone, le client ne voit rien.
Si ces quatre points sont vérifiés et que le problème persiste, regardez du côté des extensions. Certaines extensions de transporteur ou de règles conditionnelles masquent des méthodes selon leurs propres critères. La méthode manquante existe alors bien, mais elle est retirée en cours de calcul.
Les méthodes natives de WooCommerce
Dans les zones de livraison, WooCommerce propose trois méthodes d’expédition sans rien installer. Elles se paramètrent zone par zone : la même méthode peut donc avoir un tarif différent selon la zone, et c’est même l’usage normal.
Le retrait sur place permet au client de venir chercher sa commande. Dans sa version classique, liée aux zones de livraison, il est gratuit par défaut, mais vous pouvez modifier son nom, lui attribuer un coût et définir son statut fiscal.
➔ Le cas particulier du retrait sur place avec le bloc Commande. Lorsque la page de commande utilise les blocs WooCommerce, un système de retrait plus récent devient disponible et un sous-onglet « Retrait sur place » apparaît dans WooCommerce, Réglages, Expédition. Il permet de déclarer plusieurs points de retrait avec leurs adresses et leurs consignes. Contrairement à la méthode classique, il n’est pas rattaché aux zones et est proposé à tous les clients, indépendamment de leur adresse. Pour limiter le retrait à certaines zones, utilisez la méthode classique. Les deux systèmes ne doivent pas être confondus ni activés ensemble sans vérifier l’expérience obtenue.
La livraison gratuite s’affiche selon une condition que vous choisissez dans une liste : aucune condition, un coupon de livraison gratuite valide, un montant minimum de commande, un montant minimum ou un coupon, ou encore un montant minimum et un coupon. Une case supplémentaire détermine si le montant minimum s’apprécie avant l’application des réductions apportées par les coupons, ce qui évite qu’une remise fasse repasser le panier sous le seuil.
Par défaut, lorsque la livraison gratuite devient accessible, WooCommerce continue d’afficher les autres méthodes disponibles dans la zone. Une option des réglages de livraison, « Masquer les tarifs d’expédition lorsque la livraison gratuite est disponible », permet de ne conserver que la gratuité. Le client n’a alors plus à choisir entre une livraison gratuite et un forfait payant.
Le forfait, nommé « prix fixe » selon les versions, est la méthode la plus employée. C’est aussi celle dont le vocabulaire mérite d’être clarifié, car trois choses différentes se règlent au même endroit.
Le champ « Coût » porte le montant appliqué au panier pour cette méthode. C’est le champ principal, celui que l’on appelle couramment le coût de base.
Les formules permettent de faire varier ce coût. La valeur [qty] représente le nombre d’articles du panier : une expression comme 5 + ( 2 * [qty] ) facture ainsi 5 € de prise en charge, plus 2 € par article. La formule [fee percent="10"] permet quant à elle d’ajouter 10 % du montant des produits expédiés. Elle accepte aussi les paramètres min_fee et max_fee, pour encadrer le supplément calculé avec un montant minimum ou maximum.
Les coûts par classe d’expédition sont des montants supplémentaires, définis pour chaque classe que vous avez créée. Ils font l’objet de la section suivante, car leur comportement est plus subtil qu’il n’y paraît.

Les classes d’expédition
Une classe d’expédition est une catégorie logistique que vous attribuez à un produit pour regrouper les articles soumis à des contraintes d’envoi similaires. Elle ne modifie aucun tarif par elle-même : son coût doit être défini dans les réglages d’une méthode, notamment le forfait. Les classes se créent dans Réglages, Expédition, sous-onglet « Classes », puis s’attribuent produit par produit, dans l’onglet Expédition de la fiche produit.
Les cas d’usage sont concrets : un objet volumineux, un article fragile qui demande un emballage renforcé, un produit lourd, ou au contraire un article plat qui part en enveloppe. Vous ne créez pas une méthode d’expédition par cas de figure, vous créez une classe et vous lui associez un supplément dans les réglages du forfait.
Un champ est facile à oublier, et il vaut la peine d’être signalé : « Coût pour aucune classe d’expédition ». Il s’applique aux produits auxquels vous n’avez attribué aucune classe. Si vous le laissez vide, ces produits n’ajoutent simplement aucun supplément, et seul le coût du forfait s’applique. Ce n’est pas une erreur en soi, mais c’est un oubli fréquent lorsqu’on ajoute des classes après coup, sur un catalogue déjà en ligne.
Calcul par classe ou par commande
Sous les coûts de classe se trouve un réglage discret, le type de calcul, qui change radicalement le montant facturé. Il propose deux options.
Par classe : les coûts de chaque classe présente dans le panier s’additionnent.
Par commande : seul le coût de la classe la plus chère présente dans le panier est retenu.
➔ Un coût de classe fixe n’est jamais multiplié automatiquement par le nombre de produits. Avec le calcul par classe, il s’applique une seule fois pour chaque classe présente dans le panier. Avec le calcul par commande, seul le coût de la classe la plus chère est retenu. Si deux articles « Volumineux » sont ajoutés, un coût de classe fixé à 10 € reste donc de 10 €. Pour facturer 10 € par article de cette classe, saisissez
10 * [qty]dans son champ de coût. Dans ce contexte,[qty]représente la quantité de produits appartenant à la classe concernée.
La différence entre les deux types de calcul n’apparaît que sur un panier mixte, et c’est précisément là qu’elle surprend. Prenons un forfait dont le coût est de 5 €, avec une classe « Volumineux » à 10 € et une classe « Fragile » à 4 €. Un client commande un article de chaque.
En calcul par classe, il paiera 5 + 10 + 4, soit 19 €. En calcul par commande, il paiera 5 + 10, soit 15 €, le supplément « Fragile » étant absorbé par le plus élevé.
Aucune des deux options n’est meilleure dans l’absolu. Le calcul par classe reflète mieux la réalité si les articles partent dans des colis séparés. Le calcul par commande est plus juste si tout part dans un même envoi, où le contenant est dicté par l’article le plus contraignant. C’est votre logistique réelle qui tranche, pas une règle générale.
Ce que WooCommerce ne gère pas nativement
Les méthodes livrées d’origine couvrent beaucoup de situations, mais elles ont des limites qu’il vaut mieux connaître avant de chercher un réglage qui n’existe pas.
Le poids. WooCommerce sait parfaitement enregistrer le poids d’un produit, dans l’onglet Expédition de sa fiche, et ce champ fait partie des informations à renseigner dès la création d’une fiche produit soignée. En revanche, la méthode native « Forfait » ne construit pas automatiquement des tranches tarifaires selon le poids total du panier : ses formules raisonnent en quantité d’articles et en pourcentage du montant des produits, pas en kilogrammes. Une tarification au poids demande donc une extension dédiée ou un développement spécifique. C’est une configuration courante et parfaitement fiable, simplement elle ne s’obtient pas d’origine.
Les dimensions et le volume. Même logique : les champs existent sur la fiche produit, mais aucune méthode native ne calcule un tarif à partir d’eux.
Les transporteurs. WooCommerce n’interroge nativement aucun transporteur. Récupérer un tarif en temps réel ou proposer un choix de point relais suppose l’extension fournie ou recommandée par le transporteur concerné. Une intégration est également nécessaire pour générer les étiquettes directement depuis WooCommerce, même si celles-ci peuvent naturellement être créées séparément depuis l’interface du transporteur. Chaque extension apporte sa propre logique de configuration, qui se superpose au modèle des zones.
Les règles conditionnelles fines. Afficher ou masquer une méthode selon le contenu du panier, la catégorie des produits ou le profil du client relève également des extensions.
Dans tous ces cas, le choix de l’extension mérite la même attention que le reste du paramétrage : une extension d’expédition s’installe au cœur du tunnel de commande, et une extension abandonnée par son auteur y devient vite un problème. Les critères à examiner sont les mêmes que pour n’importe quel ajout, et nous les avons détaillés dans notre guide sur le fonctionnement et les bonnes pratiques des extensions WordPress.
➔ Avant d’installer quoi que ce soit, vérifiez que le besoin ne se traite pas avec les classes d’expédition. Beaucoup de boutiques installent une extension de tarification avancée pour un cas que deux classes bien pensées auraient couvert.
Quel modèle de frais de port choisir
Le choix se fait moins sur la technique que sur la nature du catalogue et sur ce que vous voulez que le client comprenne au moment de payer.
Le tarif unique convient aux catalogues homogènes, où les articles se ressemblent en poids et en volume. C’est le modèle le plus lisible pour le client, et le plus simple à maintenir. Un forfait par zone, et rien d’autre.
Le tarif par article convient lorsque le nombre d’articles commande réellement le coût d’envoi. Il se construit avec une formule mêlant une part fixe et une part proportionnelle à [qty]. Surveillez le montant obtenu sur les gros paniers, où ce modèle peut atteindre des sommes dissuasives.
Le tarif par classe convient aux catalogues hétérogènes, où quelques familles de produits coûtent visiblement plus cher à expédier. C’est le modèle le plus fin sans extension.
La livraison offerte au-delà d’un seuil se combine avec les précédents, et relève autant du commerce que de la logistique. Elle répond à un problème mesuré : les frais supplémentaires jugés trop élevés, dont la livraison, les taxes et les autres frais, figurent en tête des causes évitables d’abandon de panier. Le sujet dépasse le paramétrage, et nous l’avons traité en détail dans notre article sur les causes de l’abandon de panier et les moyens d’y remédier.
Quel que soit le modèle retenu, une règle vaut pour tous : annoncez les frais le plus tôt possible. Un tarif juste, découvert au dernier moment, est vécu comme un mauvais tarif. Ce n’est d’ailleurs pas qu’une question de confort : les frais de livraison doivent être annoncés avant la validation de la commande, tandis que les modalités et les délais de livraison font partie des informations à préciser dans les conditions générales de vente. Nous avons détaillé ces obligations dans notre article sur le contenu attendu des CGV et des CGU.
La TVA sur les frais de livraison
Deux réglages principaux déterminent la TVA appliquée à vos frais de livraison. Ils sont faciles à trouver une fois qu’on sait où regarder.
Le premier est le champ « État de la TVA », qui se règle dans la méthode elle-même. Il propose « Taxable » ou « Aucune ». Il détermine simplement si les frais d’expédition sont soumis à la taxe.
Le second est la classe de TVA d’expédition, dans Réglages, onglet TVA. Vous pouvez y forcer une classe précise, ou conserver le réglage par défaut, « Classe de TVA d’expédition basée sur les articles du panier ». Avec ce réglage, WooCommerce ne se réfère pas à un taux fixe : il déduit le taux applicable aux frais de port du contenu du panier.
Ce comportement mérite une explication, car il devient moins évident sur un panier mixte. Lorsque le panier contient des produits relevant de plusieurs classes de TVA, WooCommerce applique la règle suivante : si la classe standard est présente dans le panier, elle l’emporte ; sinon, il retient la première classe rencontrée dans l’ordre où vos classes sont déclarées dans les réglages. L’ordre de cette liste a donc un effet réel sur la facturation.
Si votre catalogue mélange des taux différents et que les frais de port représentent des montants significatifs, ce point mérite une vérification avec votre comptable plutôt qu’un arbitrage improvisé. Le paramétrage est simple, sa portée fiscale ne l’est pas.
À retenir
- WooCommerce lit l’adresse, retient une seule zone, puis affiche les méthodes qui lui sont rattachées. Chaque méthode calcule ensuite son propre tarif.
- Deux zones ne se combinent jamais. La première rencontrée de haut en bas l’emporte, quelle que soit sa précision géographique.
- Rangez donc vos zones de la plus précise à la plus large, sans quoi vos zones fines resteront inertes.
- Pour la France, le seul découpage natif sous le niveau du pays est le code postal, avec plages et caractères génériques, via le lien « Limiter à des codes postaux spécifiques ».
- La zone « Reste du monde » est votre filet de sécurité : laissez-la vide en connaissance de cause, ou donnez-lui une méthode.
- Une absence totale d’étape de livraison n’est pas un message d’indisponibilité : vérifiez d’abord l’expédition dans les réglages généraux, l’existence d’au moins une méthode, et la présence d’un produit non virtuel dans le panier.
- Devant « Aucune méthode disponible », déroulez les quatre vérifications : adresse, zone reconnue, méthode active, conditions de la méthode. Le mode de débogage affiche la zone retenue sur la page panier.
- Dans le forfait, distinguez bien le champ « Coût », les formules fondées sur la quantité avec
[qty]ou sur un pourcentage avec[fee percent="10"], et les coûts par classe. - Le type de calcul par classe additionne les suppléments, par commande ne retient que le plus élevé. Réglez-le selon votre façon réelle d’expédier.
- Un coût de classe fixe n’est pas multiplié automatiquement par le nombre de produits. Utilisez
[qty]dans ce coût si vous souhaitez le multiplier par la quantité de produits appartenant à la classe. - Le champ « Coût pour aucune classe d’expédition » concerne les produits sans classe : ne l’oubliez pas en ajoutant des classes à un catalogue existant.
- La tarification au poids demande une extension : le champ poids existe, la méthode native ne s’en sert pas pour construire des tranches.
- Le retrait sur place du bloc Commande fonctionne indépendamment des zones et ne doit pas être confondu avec la méthode de retrait classique.
- Côté TVA, tout tient principalement dans l’état de la TVA de la méthode et la classe de TVA d’expédition, dont le réglage par défaut suit le contenu du panier.













