Le guide 24 du parcours Shopify : les bases vous a appris à créer une réduction depuis l'administration : un pourcentage, un montant, une condition simple. Mais certaines règles commerciales sont trop précises pour ces réglages standards, comme « offrir la troisième bougie identique achetée ». C'est exactement pour ce genre de cas que Shopify Functions existe.

Ce qu'est une Shopify Function

Une Shopify Function est un petit programme que vous écrivez, que Shopify exécute lui-même, directement au moment le plus critique d'une commande : le calcul d'une réduction, le choix des options de livraison affichées, la validité d'un moyen de paiement, ou la transformation du contenu d'un panier. Contrairement à une application classique, vue plus tôt dans ce parcours, une Function ne tourne pas sur votre propre serveur : elle s'exécute directement dans l'infrastructure de Shopify, sous forme de WebAssembly, un format binaire compact et rapide à démarrer.

Où s'exécute une Function, précisément

C'est une différence essentielle avec tout ce que vous avez vu jusqu'ici dans ce parcours. Une Function n'a pas de délai de démarrage notable, et ne peut effectuer aucun appel réseau vers un service extérieur pendant son exécution : elle reçoit des données, applique une logique, et renvoie un résultat, entièrement dans cet environnement isolé et contrôlé par Shopify. Cette contrainte garantit une exécution rapide et fiable au moment précis du checkout, un endroit où la moindre lenteur pourrait faire perdre une vente.

Deux langages possibles

Vous pouvez écrire une Shopify Function en Rust ou en JavaScript (y compris TypeScript). Rust, qui se compile directement en WebAssembly, offre de meilleures performances et convient mieux à une application publique destinée à beaucoup de marchands, ou à une logique complexe. JavaScript, plus accessible si vous connaissez déjà ce langage grâce aux parcours Gemini CLI ou Cursor de Web-Shine Docs, convient bien pour prototyper une idée ou une Function plus simple, avec des limites de complexité atteintes plus rapidement qu'en Rust.

Les quatre domaines où une Function peut intervenir

  • Les réductions : calculer une remise selon une logique impossible à exprimer avec les réglages standards, comme « la moins chère des bougies offerte à partir de trois identiques ».
  • La livraison : modifier ou filtrer les options de livraison proposées à un client, selon des critères précis.
  • Le paiement : afficher ou masquer un moyen de paiement selon le contenu exact du panier.
  • La transformation de panier : ajuster automatiquement le contenu du panier selon des règles métier, par exemple regrouper certains articles.
Ne confondez pas Shopify Functions avec un ancien mécanisme du même esprit

Si vous lisez un ancien article qui parle de « Shopify Scripts », sachez que ce mécanisme plus ancien a été retiré au profit de Shopify Functions, présenté dans ce guide. N'apprenez pas une syntaxe ou un concept lié à Shopify Scripts en pensant qu'il s'applique encore aujourd'hui.

Où vit une Function dans votre projet

Comme les extensions vues aux deux guides précédents, une Shopify Function se développe à l'intérieur d'un projet d'application, généré comme au guide 22 de ce parcours, dans un dossier dédié. Shopify CLI propose une commande de génération spécifique pour créer le squelette d'une nouvelle Function, dans le langage de votre choix, avant que vous n'y ajoutiez votre propre logique.

Vérifiez que vous avez compris

Votre Function de réduction a besoin de vérifier, en temps réel, un tarif publié sur un site externe avant de calculer sa remise. Est-ce possible directement depuis cette Function ?

Non. Une Shopify Function ne peut effectuer aucun appel réseau vers un service extérieur pendant son exécution, précisément pour garantir une exécution rapide et fiable au moment du checkout. Toute donnée externe nécessaire devrait être préparée à l'avance, par exemple par une application classique qui la transmettrait à la Function d'une autre façon, en amont de son exécution.