Le contexte. Une marque e-commerce sur Shopify qui produit ce qu'elle vend. Shopify connaît le prix de vente ; il ne connaît pas ce que le produit a coûté. Matières premières, main-d'œuvre, frais annexes et taxes vivaient ailleurs, et la marge par produit ne se lisait nulle part.
Ce que j'ai construit. Le circuit de données d'un outil de pilotage achats-ventes :
- une base PostgreSQL, hébergée chez OVHcloud, qui rassemble les ventes et les coûts saisis par l'équipe — matières premières de chaque produit, main-d'œuvre, frais divers, taxes ;
- l'alimentation automatique depuis Shopify : d'abord par Zapier avec un bloc de code sur mesure, puis migrée sur n8n quand les volumes et la logique l'ont justifié ;
- un tableau de bord unifié sous Bubble qui présente, pour chaque produit vendu, son coût complet décomposé et la marge qui reste.
Ce qui a demandé le plus de travail : la vitesse. Les requêtes SQL que Bubble envoie à une base externe sont lentes, et un tableau de bord qui en lance beaucoup se traîne. Le travail a consisté à faire faire à PostgreSQL ce qu'il fait bien, et à Bubble le moins possible :
- les jointures et les cumuls calculés dans la base (vues, vues matérialisées, tables pré-calculées), pour que Bubble lise des résultats prêts ;
- des index sur les colonnes filtrées ;
- une seule requête pour tout un écran, plutôt qu'une par élément de liste ;
- des listes paginées ou chargées progressivement ;
- un cache côté Bubble, rafraîchi à intervalle.
Résultat : un temps de chargement divisé par trois.
Ce que ça montre. Une intégration ne sert pas qu'à recopier des données : bien faite, elle répond à une question que personne ne pouvait poser avant — « ce produit, est-ce qu'on gagne de l'argent dessus ? ». Et la base appartient au client, pas à l'outil d'automatisation : passer de Zapier à n8n n'a rien changé à ce que le tableau de bord affiche.
Ce qu'on retrouve d'un projet à l'autre
La donnée est rangée dans un endroit qui appartient au client, la logique est écrite là où on peut la rouvrir, et chaque échec se voit au lieu de passer en silence. C'est ce qui permet de changer d'outil, de prestataire ou de volume sans tout reconstruire. Comment je choisis entre réglage natif, connecteur, automatisation et développement.
Le même client a fait construire une synchronisation bilatérale entre Shopify et son CRM, jusqu'au SAV.