Créer un configurateur de produits sur mesure sur Shopify

Dernière mise à jour
Revu par un expert
5 min de lecture
Jacques Blom
Jacques Blom
CTO chez Fudge.

Points clés

  • Un configurateur de produits Shopify permet aux acheteurs de créer un produit sur mesure sur la page produit (PDP) - choisir un bois, une taille, une gravure - et d’envoyer ces choix au panier.
  • Les variantes gèrent les combinaisons tarifées et en stock. La limite est désormais de 2 048 variantes par produit et toujours 3 options par produit. Au-delà, il faut une autre approche.
  • Les propriétés d’article capturent les choix en texte libre et non tarifés (texte de gravure, mots cadeaux) et accompagnent la commande. Elles ne modifient pas le prix et ne suivent pas les stocks par elles-mêmes.
  • Les méta-champs (metafields) stockent les données fixes du produit (matériaux, délais de livraison, listes d’options). Ils sont définis par le marchand, et non par le client.
  • Le constat honnête : les applications sont rapides à installer mais ajoutent des scripts et des frais mensuels ; le code natif vous offre un configurateur léger, intégré au thème, sans dépendance tierce. C’est cette voie native que Fudge construit.

Un configurateur de produits Shopify est l’interface sur une page produit où un acheteur assemble un article sur mesure avant de l’ajouter au panier. Pensez aux meubles configurables, aux bijoux personnalisés, aux lots à composer soi-même ou aux kits sur mesure. L’acheteur choisit ses options, le prix se met à jour, et les sélections sont associées à la commande pour que votre équipe puisse la traiter correctement.

Ce guide couvre les véritables éléments de base : les variantes, les propriétés d’article, les options de produit, les méta-champs, ainsi que le code Liquid et JavaScript sur mesure. Il compare l’approche par code natif avec les applications de configuration sans prétendre qu’aucune des deux n’est exempte de compromis. Chaque limite ci-dessous a été vérifiée dans la documentation officielle de Shopify.


Pourquoi vous pouvez nous faire confiance

Jacques a plus de 15 ans d’expérience en développement et a travaillé avec des centaines de boutiques Shopify. Nous avons créé Fudge - un constructeur de pages et éditeur de boutique Shopify natif en IA, avec une note de 4.8 et détenteur du badge Built for Shopify. Nous écrivons du Liquid, du JavaScript et du CSS directement dans les thèmes tous les jours. Les compromis présentés dans ce guide proviennent donc de la mise en ligne de vrais configurateurs, et non de la théorie.


Ce que doit faire un configurateur de produits

Un configurateur a quatre missions. Chacune d’elles correspond à un élément de base spécifique (ou “primitive”) de Shopify, et c’est en se trompant d’élément que la plupart des développements échouent.

  1. Présenter les options - swatches, menus déroulants, boutons, champs texte, upload de fichiers.
  2. Réagir aux sélections - afficher ou masquer des options secondaires, mettre le prix à jour en direct, bloquer les combinaisons invalides.
  3. Tarifer le résultat - certains choix font évoluer le prix (une taille supérieure), d’autres non (un message cadeau).
  4. Transmettre les choix à la commande - pour que l’entrepôt et l’équipe logistique sachent exactement quoi produire.

La suite de ce guide passe en revue chaque fonctionnalité Shopify pour vous montrer pour quelle mission elle est faite.


Approche 1 : les variantes

Les variantes sont la façon native pour Shopify de modéliser les combinaisons d’un produit avec leur propre prix et stock. Une option “Taille” croisée à une option “Couleur” donne une grille de variantes, chacune ayant son propre prix, SKU, et niveau de stock.

Les limites des variantes à connaître

Shopify a relevé le plafond de ses variantes en octobre 2025. Les chiffres actuels :

C’est la deuxième limite qui piège souvent les configurateurs. Avoir plus de variantes ne veut pas dire avoir plus d’options. Si votre produit sur mesure requiert cinq ou six choix indépendants, les variantes seules ne pourront pas faire l’affaire, peu importe à quel point le plafond de variantes grimpe.

Côté développement, une requête GraphQL sur un produit unique (product ou productByHandle) peut maintenant renvoyer jusqu’à 2 000 variantes, et la mutation productSet permet de créer ou mettre à jour jusqu’à 2 000 variantes de manière asynchrone en un seul call.3

Quand les variantes sont le bon outil

Utilisez les variantes lorsque chaque combinaison a un vrai prix et un vrai stock, et que vous avez trois options ou moins. Un t-shirt en trois tailles et quatre couleurs = 12 variantes. C’est le cas d’usage parfait pour les variantes.

Les variantes sont aussi le seul mécanisme via lequel Shopify gère le prix et le suivi de stock de manière native. Si un choix doit déduire du stock, ça doit obligatoirement être une variante.

Les limites des variantes

Les variantes montrent leurs faiblesses pour les véritables produits sur mesure :

C’est là que les autres approches entrent en jeu.


Approche 2 : les propriétés de ligne (line item properties)

Les propriétés de ligne (line item properties) sont des paires clé-valeur attachées à un article spécifique dans une commande spécifique. C’est le pilier des configurateurs. Contrairement aux variantes, elles n’ont pas besoin d’exister à l’avance et ne gèrent pas le stock.

Vous les passez via des inputs de formulaire nommés properties[...] à l’intérieur du formulaire produit :

<form action="/cart/add" method="post" enctype="multipart/form-data">
  <input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}">

  <label for="engraving">Texte à graver</label>
  <input type="text" id="engraving" name="properties[Engraving]" maxlength="20">

  <label for="wrap">Emballage cadeau</label>
  <select id="wrap" name="properties[Gift wrap]">
    <option value="None">Aucun</option>
    <option value="Standard">Standard</option>
  </select>

  <button type="submit">Ajouter au panier</button>
</form>

Ce que l’acheteur tape ou sélectionne devient une propriété sur cette ligne de commande, visible dans le panier, lors du paiement, sur la commande, et dans l’email de confirmation.4

Propriétés cachées

Ajoutez un underscore en préfixe du nom de la propriété, et Shopify la masquera du check-out client tout en l’enregistrant sur la commande.5 Utilisez cette technique pour les données internes dont votre équipe a besoin mais que l’acheteur ne doit pas voir :

<input type="hidden" name="properties[_config_id]" value="cfg_8842">

La plupart des thèmes masquent également ces propriétés avec un préfixe underscore dans le panier, mais pas tous, alors pensez à bien vérifier votre template de panier.

Faire passer les choix dans le panier AJAX

Si votre configurateur ajoute au panier sans recharger la page, ajoutez l’AJAX Cart API. Envoyez un objet properties à /cart/add.js :

fetch('/cart/add.js', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    id: variantId,
    quantity: 1,
    properties: {
      'Engraving': 'For Sam',
      'Gift wrap': 'Standard',
      '_config_id': 'cfg_8842'
    }
  })
})

Un comportement clé à connaître : un POST qui inclut des properties écrase l’intégralité de l’objet de propriétés pour cet article. Vous ne pouvez pas patcher une seule clé, et vous ne pouvez pas réinitialiser les propriétés en objet vide une fois défini - il vous faudra supprimer puis rajouter la ligne.6

Envie d'un configurateur intégré dans votre thème ?
Try Fudge for Free

Approche 3 : les méta-champs (metafields)

Les méta-champs (metafields) sont des champs de données personnalisés par le marchand rattachés à un produit, une variante ou autre chose. Ils sont définis une bonne fois pour toutes dans l’admin, et non pas saisis par l’acheteur.7

Dans un configurateur, les méta-champs servent à stocker les données de référence fixes que votre logique va utiliser :

Vous les parsez en Liquid pour gérer l’affichage de l’UI :

{% assign woods = product.metafields.custom.wood_options.value %}
{% for wood in woods %}
  <button data-price-delta="{{ wood.price_delta }}">{{ wood.name }}</button>
{% endfor %}

La règle d’or : les méta-champs décrivent le produit, les propriétés de ligne (line item properties) décrivent le choix du client. Pour aller plus loin, jetez un oeil à notre guide expliquant comment ajouter des méta-champs à vos produits Shopify.


Construire l’UI du configurateur

Une fois le modèle de données réglé, le front-end se fera en Liquid pour le premier affichage et en JavaScript pour l’interactivité. Consultez nos guides sur la façon de personnaliser une page produit Shopify et d’ajouter du JavaScript sur mesure à Shopify pour la partie mécanique.

Créer les sélecteurs d’options

Affichez chaque option via des swatches, boutons, listes déroulantes, ou champs texte. Les choix tarifés impactent les variantes ; les choix non-tarifés alimentent les propriétés de ligne (line item properties). On a souvent tendance à rajouter l’impact financier de l’option directement sur l’élément via un attribut data- afin que le script puisse le lire simplement.

Logique conditionnelle

Les produits sur mesure ont parfois des options de dépendance. Une option “Position du monogramme” ne devrait apparaître qu’une fois la case “Ajouter un monogramme” cochée. Pour gérer ça, il suffit d’écouter les évènements de changement pour afficher/masquer vos champs dépendants :

document.querySelector('#add-monogram').addEventListener('change', (e) => {
  document.querySelector('#monogram-options').hidden = !e.target.checked;
});

Mise à jour du prix en live

Le prix de base ajouté à la somme des deltas sélectionnés. À recalculer sur chaque mouvement :

function updatePrice() {
  let total = basePrice;
  document.querySelectorAll('[data-selected="true"]').forEach(el => {
    total += Number(el.dataset.priceDelta || 0);
  });
  priceEl.textContent = formatMoney(total);
}

Attention : le prix affiché est cosmétique. Shopify facture dans la réalité le prix de la variante qui est ajoutée au panier. Si une option modifie vraiment ce que le client paie, ce doit être une variante ou un produit supplémentaire additionnel avec un prix, et non une simple propriété de ligne. Les propriétés de ligne n’embarquent pas de prix avec elles.


Validation

Un configurateur qui laisse les acheteurs valider des configurations incomplètes ou impossibles est une usine à problèmes logistiques. Validez les choix avant de lancer l’ajout au panier.

Les vérifications côté client ne sont que pour l’expérience utilisateur. Elles peuvent être contournées. Pour tout ce qui relève de l’interdit – une quantité maximum, un combo impossible, un minimum de commande – utilisez une Shopify Function (validation de panier ou check-out), qui tournera côté serveur sur la plateforme de Shopify et ne pourra pas être ignorée depuis le navigateur.


Performance

Les configurateurs ajoutent plein de scripts sur vos pages commerciales les plus importantes. Surveillez ces trois éléments.

Un configurateur léger protège vos taux de conversion. Pour voir la vue d’ensemble, lisez notre guide sur les pages produits Shopify qui convertissent.


Code natif vs Apps de configuration

Les deux approches donnent des configurateurs qui fonctionnent. La différence, c’est ce dont vous êtes propriétaire et ce que vous emportez avec vous.

FacteurCode natif (Liquid, JS, méta-champs)App de configuration
Vitesse de déploiementPlus long à créer la première foisRapide à installer et configurer
Coûts récurrentsAucun au-delà du temps de création initialFrais mensuels récurrents
PerformanceLéger, spécifique à la PDP, aucun script tier payantAjoute le bundle de l’app sur vos pages produits
PersonnalisationContrôle total sur le markup et la logiqueLimité par les réglages de l’app
Propriété des datasStocké dans votre thème et données de commandeCertaines logiques restent dans l’app
Risque de dépendanceAucun - c’est votre codeSe brise ou change si l’app le décide
Options non-tariféesPropriétés de ligne (line item properties), sans limitesGénéralement supportées
Options tarifées testéesVariantes nativesApp ou variantes

Les apps sont le bon choix quand il vous faut quelque chose en ligne cette semaine, que votre configurateur est très standard, et qu’ajouter de nouveaux abonnements ne vous dérange pas.

Le code natif est le vainqueur si la performance compte, que vous ne voulez pas voir atterrir une dépendance externe sur la page de votre produit le plus important, ou que votre produit a un besoin qu’une app ne peut tout simplement pas régler. Cependant, de façon historique cette approche prend beaucoup de temps et demande d’engager un développeur.

C’est pour combler ce gap qu’on a lancé Fudge. Fudge est un système nativement IA pour Shopify qui écrit du Liquid, JavaScript, et CSS à même votre thème. Vous lui dites ce que vous attendez du configurateur, et l’outil pond l’ensemble du code prêt-à-l’emploi - vos options, vos logiques conditionnelles, les calculs de prix en live, les propriétés connectées à votre panier ; tout pour se passer d’une application de plus. Vous avez donc le rendu super léger de la méthode native mais pour une simple fraction du prix initial.

Décrivez votre configurateur, obtenez votre propre code natif au thème.
Try Fudge for Free

Pour résumer

Un configurateur standard typique mixe les 4 éléments fondamentaux :

Commencez d’abord par modeler votre architecture de données, rajoutez votre interface visuelle ensuite, n’oubliez pas les validations avant ajout au panier, et gardez la page aussi légère que possible. Si un choix nécessite de modifier le montant total ou réduire l’inventaire : il doit être une variante. S’il s’agit d’une information que vous attachez à la commande, alors c’est une propriété de ligne (line item property). Pour afficher des options ultra customisées, on vous dirige vers notre guide complet : Ajouter de la logique Liquid personnalisée dans Shopify avec tous les modèles de templates.


FAQ

Combien de variantes et d'options un produit Shopify peut-il avoir ?

Un produit peut avoir jusqu'à 2 048 variantes, suite à l'augmentation de la limite de 100 en octobre 2025. La limite d'options par produit n'a pas changé : elle est toujours de 3 (par exemple Taille, Couleur, Matériau). Si votre configurateur nécessite plus de trois choix indépendants, utilisez les propriétés de ligne (line item properties) pour les options supplémentaires plutôt que d'essayer d'ajouter de nouvelles variantes.

Quelle est la différence entre les variantes et les propriétés de ligne ?

Les variantes sont des combinaisons dont le prix et le stock sont gérés nativement par Shopify - chacune a son propre prix, SKU et inventaire. Les propriétés de ligne (line item properties) sont des paires clé-valeur que l'acheteur saisit (comme le texte d'une gravure) qui sont rattachées à la commande mais ne modifient ni le prix ni le suivi des stocks. Utilisez les variantes lorsqu'un choix affecte le prix ou les stocks, et les propriétés de ligne pour tout le reste.

Est-ce qu'une propriété de ligne peut modifier le prix du produit ?

Non. Les propriétés de ligne (line item properties) enregistrent des informations sur la commande mais ne portent aucun prix. Si une option de configuration modifie véritablement ce que le client paie, ce doit être une variante ou un produit additionnel avec un prix. Le prix que vous affichez via JavaScript est cosmétique - Shopify facture le prix de la variante qui est réellement ajoutée au panier.

Ai-je besoin d'une app pour créer un configurateur de produits Shopify ?

Non. Vous pouvez créer un configurateur complet directement dans le code natif de votre thème en utilisant des variantes, des propriétés de ligne, des méta-champs et du JavaScript personnalisé. Les apps sont plus rapides à installer, mais elles imposent un abonnement payant et chargent leurs propres scripts sur vos pages produits. Le code natif est plus léger et n'a aucune dépendance tierce, et c'est l'approche que Fudge génère directement dans votre thème.

Comment transmettre les choix de mon configurateur au panier ?

Utilisez des inputs nommés "properties[Nom]" à l'intérieur de votre formulaire produit, ou envoyez un objet properties vers /cart/add.js si vous utilisez AJAX. Attention cependant : une requête AJAX POST contenant des properties écrase complètement l'objet de propriétés de votre article – vous ne pouvez pas modifier un seul champ, ni le réinitialiser, à moins de supprimer puis de rajouter à nouveau l'article.

Comment cacher les données internes du configurateur au client ?

Ajoutez un underscore en préfixe du nom de la propriété, par exemple properties[_config_id]. Shopify masquera les propriétés commençant par underscore aux yeux du client lors du paiement, tout en les sauvegardant sur la commande pour que votre équipe puisse les lire. La majorité des thèmes les suppriment aussi du panier, mais vérifiez bien votre template de panier car ça peut parfois clocher.

Comment valider les entrées du configurateur pour éviter les sélections impossibles ?

Appuyez-vous sur JavaScript pour imposer le renseignement des choix requis, brider la taille du texte libre saisi, et forcer les choix dépendants avant que la demande d'ajout au panier ne soit déclenchée. Encore une fois les tests clients servent uniquement à améliorer l'expérience utilisateur et peuvent être contournés. Appliquez donc les contraintes inflexibles (quantité max, interdictions croisées, minimum de commande) du côté serveur à l'aide d'une Shopify Function que personne ne peut esquiver.

Jacques's signature
Lancez un configurateur sans la taxe des apps.

Footnotes

  1. Shopify Developer Changelog, “The product variant limit is now 2048 for all merchants” (depuis le 15 octobre 2025) : https://shopify.dev/changelog/the-product-variant-limit-is-now-2048-for-all-merchants

  2. Shopify Help Center, “Ajouter des variantes” (jusqu’à 3 options par produit) : https://help.shopify.com/fr/manual/products/variants/add-variants

  3. Shopify Developer Changelog, “Enhanced variant query limits for single product queries” (jusqu’à 2000 variantes pour requête de produit unique, API version 2025-01) : https://shopify.dev/changelog/enhanced-variant-query-limits-for-single-product-queries

  4. Référence Liquid Shopify, Objet “line_item” (les propriétés passées en <input name="properties[...]" />) : https://shopify.dev/docs/api/liquid/objects/line_item

  5. Référence Liquid Shopify, Objet “line_item” (le préfixe underscore masque la propriété au client au check-out) : https://shopify.dev/docs/api/liquid/objects/line_item

  6. Shopify Ajax API, “Cart API reference” (un POST incluant des propriétés écrase l’ensemble de l’objet) : https://shopify.dev/docs/api/ajax/reference/cart

  7. Centre d’aide Shopify, “Méta-champs” (données personnalisées sur les produits ou autres) : https://help.shopify.com/fr/manual/custom-data/metafields

You might also be interested in

Comment ajouter la photographie de produit à 360 degrés sur Shopify
Ajoutez des photographies de produit à 360° à votre PDP Shopify. Couvre la capture d'images, la 3D native, les apps de spin, un viewer JS custom et le lazy-loading.