Le contexte
Des artistes voulaient confier à Wiseband la gestion de leurs produits et de leurs stocks, tout en gardant leur propre boutique Shopify comme vitrine de vente.
Sur le papier, tout le monde est content. En pratique, ça voulait dire qu'un humain saisissait à la main, dans un tableur, les données des boutiques externes, pour que l'équipe merchandising puisse suivre les stocks, et que la comptabilité puisse traiter les ventes, la commission de la plateforme et le reversement à l'artiste.
Deux systèmes qui s'ignorent, et une personne au milieu qui recopie.
Le problème
On veut vendre sur Shopify, mais on ne veut pas ressaisir chaque produit, chaque stock et chaque commande à la main.
Une commande oubliée à la ressaisie ne produisait pas une ligne manquante dans un tableau : elle produisait un artiste qui ne touchait pas son dû sur une vente pourtant réelle.
Les contraintes
- Les webhooks sont rejoués jusqu'à confirmation. — Shopify renvoie la notification de commande payée tant qu'il n'a pas reçu mon accusé de réception, qui ne part qu'une fois la commande écrite en base. Rien ne se perd, et si un webhook est rejoué, la base refuse la seconde insertion.
- Le flux de connexion d'une boutique a été entièrement repris en cours de projet. — Passer d'une application personnalisée à une vraie application Shopify, déclarée dans le dashboard développeur, a obligé à revoir tout le mécanisme de connexion d'une boutique, pas un appel d'API ici ou là.
- Aucune erreur de stock tolérée. — Vendre un article qui n'existe plus, ou bloquer un article disponible, c'est une commande perdue et un artiste mécontent.
- Une installation reproductible, mais pas autonome. — La documentation suffit à reconnecter une boutique, mais c'est moi qui l'exécute, ou un autre développeur. L'équipe merch ne veut pas prendre le risque de s'en charger elle-même.
Ce que j'ai construit
Un pont dans les deux sens, où Wiseband fait autorité.
Les produits et les stocks descendent de Wiseband vers les boutiques, sans ressaisie. Les commandes remontent avec ce qu'il faut pour travailler : les produits à décrémenter, le mode de livraison, le prix, l'adresse de livraison et le point relais choisi par l'acheteur. Le tableur intermédiaire a disparu.
La mise en vente, elle, reste une action volontaire, quelqu'un décide dans Wiseband quels produits partent sur la boutique. Tout le catalogue n'a pas vocation à s'y retrouver.
Un bouton permet aussi de relancer la synchronisation des stocks à la demande, en plus du flux automatique qui part de Wiseband.
La décision dont je suis fier
Ne pas ajouter d'écran.
Avoir compris le métier de Justine, qui gère le merch chez Wiseband, pour que le pont tombe dans son flux de travail sans qu'elle ait à faire de détour.
Elle imprime ses étiquettes en lot, puis fait le tour du stock une seule fois avec la pile. Si une information venue de Shopify manquait sur l'étiquette, elle devrait retourner sur le site en pleine préparation.
Alors les commandes Shopify arrivent directement dans le dashboard de commandes Wiseband qu'elle utilisait déjà, portant simplement un tag « Shopify ». Pas de nouvel écran, pas de nouveau tableau, pas de tour des quatre boutiques.
Le seul changement visible pour elle : des commandes taguées se sont mises à apparaître là où elle regardait déjà.