Je suis nouveau sur n8n et j’essaie de créer un workflow de génération de devis.
Mon objectif est :
Recevoir les détails du client (nom, e-mail, service, quantité, prix)
Calculer automatiquement les totaux
Générer un numéro de devis
Créer un devis en PDF
Envoyer le devis au client par e-mail
Actuellement, je suis confus sur la façon de configurer le nœud Set et de transférer les données entre les nœuds. Je ne suis pas sûr où je dois ajouter les informations du client et comment mapper les champs correctement.
Pourriez-vous me guider sur :
Quels nœuds dois-je utiliser pour chaque étape ?
Comment dois-je structurer le workflow ?
Comment puis-je générer un PDF à partir des données de devis ?
Commencez par la forme des données, non par le nœud PDF. Créez un élément de test avec les champs de devis exacts dont vous avez besoin : customer_name, customer_email, service, quantity, unit_price, total, et quote_number.
Une fois cet élément créé, le nœud suivant n’aura qu’à mapper ces noms de champs dans l’étape PDF/email. Par où les premiers détails du client entreront-ils dans n8n : formulaire, webhook, feuille de calcul, ou élément de test manuel ?
Bienvenue @Sifrabasayar_12 ! Pour compléter ce que @oimrqs_ops a dit - pour l’étape PDF spécifiquement, l’approche la plus facile dans n8n est d’utiliser un nœud HTML Template pour construire la mise en page du devis avec vos champs mappés, puis de passer ce HTML à un nœud HTTP Request appelant une API PDF gratuite comme html2pdf.it ou une instance Gotenberg auto-hébergée. L’approche du modèle HTML vous donne un contrôle total sur la conception du devis sans frais de licence supplémentaires. Pour le numéro de devis, générez-le dans un nœud Code en utilisant quelque chose comme 'Q-' + Date.now() ou un compteur séquentiel stocké dans une variable de flux de travail statique. Une fois que vous avez le PDF en tant que données binaires, attachez-le directement dans le champ de pièce jointe du nœud Gmail en utilisant {{ $binary.data }}.
Hey @Sifrabasayar_12, pour tout assembler avec une structure claire :
Trigger → Form Trigger ou Webhook (capture le nom du client, l’email, le service, la quantité, le prix)
Calculer les totaux → Nœud Set : ajouter un champ total = {{ $json.quantity * $json.unit_price }}
Générer un numéro de devis → Nœud Code : return [{ json: { …$input.first().json, quote_number: ‘Q-’ + Date.now() } }]
Construire le PDF → Nœud HTML pour concevoir la mise en page du devis en utilisant {{ $json.customer_name }} etc., puis nœud HTTP Request → html2pdf.it (gratuit, pas d’inscription) pour le convertir en PDF binaire
Envoyer l’email → Nœud Gmail avec To: {{ $json.customer_email }}, joindre le PDF binaire du nœud précédent
Le point clé pour transmettre les données entre les nœuds : chaque nœud reçoit $json du nœud précédent. Utilisez le nœud Set pour ajouter ou renommer des champs, et ils seront disponibles dans chaque nœud en aval. Une fois que votre élément de test a tous les champs correctement définis à l’étape 1, le reste ne fait que mapper ces mêmes noms de champs à travers.
Un déclencheur de formulaire n8n pour collecter le nom du client, l’e-mail, le service, la quantité et le prix
Un nœud Code pour calculer les totaux et générer un numéro de devis : "Q-" + Date.now()
Pour le PDF - le chemin le plus simple et convivial pour les débutants est Google Docs : créer un document de modèle avec des espaces réservés comme {{customer_name}}, {{total}}, utiliser le nœud Google Docs (opération Remplacer le texte) pour les remplir, puis exporter en PDF via le nœud Google Drive (opération Télécharger, définir le format de sortie sur PDF)
Un nœud Gmail pour envoyer l’e-mail avec le PDF exporté en pièce jointe
Commencez par tester juste les étapes 1 et 2 d’abord pour vous assurer que vos champs sont correctement structurés avant d’ajouter l’étape PDF.