Guide complet des fonctions Shopify : personnaliser la logique métier à grande échelle
Les fonctions Shopify permettent aux développeurs de personnaliser la logique commerciale de base qui s'exécute au sein de l'infrastructure de Shopify plutôt que sur des serveurs externes. Cela signifie que les calculs de remise personnalisés, le filtrage des modes de paiement, les modifications des tarifs d'expédition et la validation du panier s'exécutent en quelques millisecondes sans latence du réseau. Les fonctions ont remplacé l'éditeur de script (Shopify Scripts) et représentent l'avenir de la personnalisation du backend sur la plateforme. Ce guide couvre chaque type de fonction, flux de développement et modèle de déploiement.
Points clés à retenir
- Les fonctions Shopify s'exécutent dans un bac à sable WebAssembly au sein de l'infrastructure de Shopify, garantissant des temps d'exécution inférieurs à 5 ms.
- Cinq API de fonctions sont disponibles : remises, personnalisation du paiement, personnalisation de la livraison, validation du panier et routage des commandes
- Les fonctions sont écrites en Rust, JavaScript ou tout autre langage compilé en WebAssembly
- Chaque fonction reçoit une entrée via les résultats de la requête GraphQL et renvoie une sortie structurée que Shopify applique à l'opération
- Les fonctions sont déployées dans le cadre des applications Shopify et peuvent être configurées par les commerçants via l'administrateur
Que sont les fonctions Shopify ?
Les fonctions Shopify sont des programmes légers qui personnalisent des opérations commerciales spécifiques à des points d'extension prédéfinis. Contrairement aux webhooks (qui envoient des données à des serveurs externes), les fonctions s'exécutent dans l'infrastructure de Shopify en tant que modules WebAssembly, garantissant :
- Vitesse : exécution inférieure à 5 ms (pas de latence réseau)
- Fiabilité : aucune dépendance de serveur externe
- Échelle : gère n'importe quel volume de trafic sans planification de capacité
- Sécurité : exécution en bac à sable sans système de fichiers ni accès au réseau
API de fonction
| API | Objectif | Remplace |
|---|---|---|
| Réductions | Logique de remise personnalisée (BOGO, hiérarchisée, conditionnelle) | Scripts Shopify (remises sur les articles de campagne) |
| Personnalisation du paiement | Afficher/masquer/réorganiser les modes de paiement à la caisse | Logique conditionnelle du mode de paiement |
| Personnalisation de la livraison | Modifier les tarifs d'expédition, les noms et la disponibilité | Scripts de tarifs d'expédition |
| Validation du panier | Valider le contenu du panier et bloquer les combinaisons invalides | Validation des attributs du panier |
| Acheminement des commandes | Personnaliser la sélection du lieu de traitement | Routage de localisation par défaut |
Environnement de développement
Prérequis
- Shopify CLI (dernière version)
- Node.js 18+
- Un compte partenaire Shopify et une boutique de développement
- Chaîne d'outils Rust (pour les fonctions basées sur Rust) ou runtime JavaScript
Création d'une fonction
Élaborez une nouvelle fonction à l'aide de la CLI Shopify :
Exécutez npx shopify app generate extension et sélectionnez le type de fonction. La CLI génère :
| Fichier | Objectif |
|---|---|
src/run.js (ou run.rs) | La logique des fonctions |
input.graphql | Requête GraphQL définissant les données d'entrée |
shopify.extension.toml | Configuration et métadonnées |
schema.graphql | Le schéma de l'API Shopify (généré automatiquement) |
Flux de travail de développement
- Définir la requête d'entrée : écrivez la requête GraphQL dans
input.graphqlqui récupère les données dont votre fonction a besoin - Implémenter la logique : Écrivez la fonction dans
src/run.jsqui transforme l'entrée en sortie - Tester localement : exécutez des tests unitaires avec
npx shopify app function test - Déployer : poussez vers Shopify avec
npx shopify app deploy - Configurer : les commerçants configurent les paramètres de fonction via l'interface utilisateur de l'application.
Fonctions de remise
Comment fonctionnent les fonctions de remise
Une fonction de remise reçoit les données du panier (éléments de campagne, informations client, codes de réduction) et renvoie les opérations de remise à appliquer. La fonction s'exécute chaque fois que le panier est évalué --- lors du chargement de la page, de l'ajout/suppression d'un article et de l'entrée à la caisse.
Modèles de remise courants
Achetez X, obtenez Y : lorsque le panier contient le produit X, appliquez un pourcentage ou une remise fixe au produit Y.
Remises échelonnées : appliquez des remises croissantes en fonction du total du panier (10 % sur 100 USD, 15 % sur 200 USD, 20 % sur 500 USD).
Tarifs spécifiques au client : vérifiez les balises client ou les champs méta et appliquez des remises spécifiques au segment (gros, VIP, employé).
Remises groupées : lorsque des combinaisons de produits spécifiques sont dans le panier, appliquez une remise groupée (achetez les trois, économisez 25 %).
Remises sur volume : appliquez des remises par unité en fonction de la quantité (1 à 9 unités au prix plein, 10 à 24 à 10 % de réduction, 25+ à 20 % de réduction).
Exemple de requête d'entrée
La requête d'entrée de la fonction de remise demande généralement :
- Éléments de campagne du panier avec identifiants de produit, identifiants de variante, quantités et prix
- Informations client (ID, tags, métachamps) si vous utilisez la segmentation client
- Code de réduction si validation d'une remise par code
- Champs méta de produit pour les règles de remise spécifiques au produit
Structure de sortie
La fonction renvoie un tableau d'opérations de remise :
| Opération | Descriptif |
|---|---|
productDiscount | Appliquer une remise à des produits/variantes spécifiques |
orderDiscount | Appliquer la réduction sur le total de la commande |
freeShipping | Supprimer les frais d'expédition |
Chaque opération comprend la valeur de la remise (en pourcentage ou montant fixe), un message affiché au client et les conditions dans lesquelles elle s'applique.
Fonctions de personnalisation des paiements
Cas d'utilisation
- Masquer les modes de paiement : masquer le « paiement à la livraison » pour les commandes supérieures à un seuil
- Méthodes de réapprovisionnement : affichez d'abord le mode de paiement le plus populaire en fonction de l'emplacement du client.
- Renommer les méthodes : afficher les noms des méthodes de paiement localisés
- Ajouter un message : afficher des informations supplémentaires à côté de modes de paiement spécifiques
Modèle de mise en œuvre
La fonction reçoit les détails du panier et les modes de paiement disponibles. Il renvoie les opérations qui modifient la liste des moyens de paiement :
| Opération | Effet |
|---|---|
hide | Supprimer un mode de paiement de la caisse |
rename | Changer le nom d'affichage d'un mode de paiement |
move | Réorganiser les modes de paiement |
Fonctions de personnalisation de la livraison
Cas d'utilisation
- Renommer les options d'expédition : afficher "Livraison express (2-3 jours)" au lieu des noms des tarifs des transporteurs
- Masquer les options : supprimer l'expédition terrestre pour les produits périssables
- Options de réapprovisionnement : affichez d'abord l'option la plus rapide pour les commandes urgentes
- Ajouter un message : Afficher les dates de livraison estimées à côté de chaque option
Implémentation
La fonction reçoit les tarifs d'expédition des transporteurs configurés et renvoie les modifications. L'entrée inclut les éléments de campagne du panier (pour vérifier les types de produits), l'adresse de livraison (pour les règles basées sur la localisation) et les options de livraison disponibles.
Fonctions de validation du panier
Cas d'utilisation
- Limites de quantité : Maximum 5 unités de produits en édition limitée
- Restrictions de combinaison : Le produit A et le produit B ne peuvent pas être dans le même panier (incompatible)
- Exigences minimales : les comptes de gros doivent commander au minimum 100 USD
- Restrictions géographiques : empêchez l'expédition de certains produits vers des régions restreintes
Résultat de validation
Lorsque la validation échoue, la fonction renvoie une erreur avec :
- Cible : quelle ligne de panier ou le panier lui-même - Message : message d'erreur destiné au client
- Gravité : Erreur (bloque le paiement) ou avertissement (autorise mais avertit)
Fonctions de test
Tests unitaires
Testez les fonctions localement sans déployer :
- Créez des montages de test avec des exemples de données d'entrée
- Exécutez la fonction sur les appareils
- Affirmer que le résultat correspond aux résultats attendus
La CLI Shopify génère un passe-partout de test :
| Scénario de test | Que vérifier |
|---|---|
| Chariot vide | La fonction ne renvoie aucune opération |
| Panier de qualification | Correction/modification appliquée |
| Cas extrêmes | Valeurs limites, quantités maximales |
| Gestion des erreurs | Entrée invalide gérée avec élégance |
| Performances | L'exécution se termine en moins de 5 ms |
Mode Aperçu
Testez les fonctions dans une boutique de développement avant de publier :
- Déployez la fonction sur votre boutique de développement
- Configurez-le via l'administrateur de l'application
- Ajoutez des produits au panier et vérifiez le comportement
- Vérifiez les journaux d'exécution de la fonction dans la sortie de Shopify CLI
Considérations sur les performances
Limites d'exécution
| Limite | Valeur |
|---|---|
| Temps d'exécution | 5 ms maximum |
| Mémoire | 12 Mo |
| Taille d'entrée | 64 Ko |
| Taille de sortie | 64 Ko |
| Instructions | 1 million d'instructions Wasm |
Conseils d'optimisation
- Réduisez la requête d'entrée aux seuls champs dont votre logique a besoin
- Évitez les boucles imbriquées complexes --- utilisez des cartes de hachage pour les recherches
- Pré-calculer les valeurs dans la configuration de l'application plutôt que dans la fonction
- Utilisez Rust pour les fonctions critiques en termes de performances (2 à 3 fois plus rapide que JavaScript)
- Exécution de la fonction de profil à l'aide des outils de performance Shopify CLI
Configuration du marchand
Interface utilisateur de configuration de l'application
Les fonctions sont configurées via l'interface utilisateur de votre application, et non directement dans l'administrateur Shopify. Créez une page de configuration qui :
- Affiche l'objectif de la fonction et les paramètres actuels
- Permet aux commerçants de définir des paramètres (seuils, sélections de produits, pourcentages)
- Stores configuration as metafields that the function reads at runtime
- Valide les entrées avant de sauvegarder
Stockage des configurations
Stocker la configuration des fonctions à l'aide des champs méta de l'application :
- Métachamps sur la remise : montants seuils, valeurs en pourcentage, identifiants de produits
- Stockage de données d'application : configuration complexe comme des règles à plusieurs niveaux, des segments de clientèle
- Configuration de la fonction : transmis dans le cadre de l'entrée de la fonction via la requête d'entrée
Services de développement de fonctions ECOSIRE
Les fonctions Shopify personnalisées nécessitent à la fois une expertise dans le domaine du commerce et des compétences en développement WebAssembly. Les services de développement d'applications Shopify d'ECOSIRE comprennent la conception, la mise en œuvre, les tests et le déploiement de fonctions. Notre équipe crée des moteurs de remise, des personnalisations de paiement et une logique de validation adaptés à vos règles métier. Pour les besoins continus, nos services d'assistance maintiennent et font évoluer vos fonctions personnalisées à mesure que la plateforme Shopify progresse.
Lecture connexe
- Extensibilité de Shopify Checkout
- Guide de développement d'applications Shopify
- Guide d'intégration de l'API Shopify
- Automatisation des flux Shopify
- Guide Shopify Plus Entreprise
Les fonctions Shopify remplacent-elles les scripts Shopify ?
Oui. Les scripts Shopify sont obsolètes et les fonctions les remplacent. Les principales différences : les fonctions s'exécutent en tant que WebAssembly (pas Ruby), se déploient via des applications (pas l'éditeur de script) et prennent en charge davantage de points d'extension. Les scripts existants continuent de fonctionner mais Shopify recommande de migrer vers Functions.
Les non-développeurs peuvent-ils créer des fonctions Shopify ?
Pas directement. Les fonctions nécessitent des connaissances en programmation (JavaScript ou Rust). Cependant, les développeurs peuvent créer des applications avec des interfaces utilisateur de configuration qui permettent aux commerçants de personnaliser le comportement des fonctions sans codage. De nombreuses applications de l'App Store de Shopify utilisent Functions en interne tout en présentant une interface conviviale pour les commerçants.
Y a-t-il une limite au nombre de fonctions pouvant être exécutées sur un seul magasin ?
Shopify n'impose pas de limite stricte sur le nombre de fonctions installées. Cependant, chaque évaluation de paiement exécute toutes les fonctions applicables de manière séquentielle, de sorte que des considérations de performances s'appliquent. La limite de 5 ms par fonction garantit que les fonctions individuelles ne peuvent pas ralentir le paiement, mais le fait d'avoir des dizaines de fonctions pourrait théoriquement avoir un impact sur le temps total d'évaluation du paiement.
Rédigé par
ECOSIRE Research and Development Team
Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.
Articles connexes
Personnalisation de l'IA pour le commerce électronique : des expériences individualisées qui convertissent
Déployez la personnalisation de l'IA pour le commerce électronique avec des recommandations de produits, du contenu dynamique, une recherche personnalisée et une optimisation du parcours client pour des conversions 15 à 30 % plus élevées.
Headless Shopify avec Hydrogen : créez des vitrines personnalisées hautes performances
Guide complet pour créer des vitrines Shopify sans tête avec le framework Hydrogen couvrant Remix, l'API Storefront, l'hébergement Oxygen et l'optimisation des performances.
Création de boutiques Shopify axées sur le mobile : guide d'optimisation complet
Créez des boutiques Shopify axées sur le mobile et qui convertissent. Couvre la sélection de thèmes, l'UX mobile, l'optimisation du paiement, les performances des applications et les stratégies mobiles spécifiques à Shopify.