Documentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
Envoyez automatiquement les données de l’affaire vers votre système de facturation (Stripe, QuickBooks, Xero, etc.) lorsqu’une opportunité est gagnée.
Structure du flux de travail
- Déclencheur : L’enregistrement est mis à jour (Opportunité)
- Filtre : Étape = Closed Won
- Rechercher un enregistrement : Obtenir les détails de l’Entreprise
- Code (facultatif) : Mettre en forme la charge utile
- Requête HTTP : Envoyer au système de facturation
- Créer un nouveau workflow
- Sélectionnez le déclencheur L’enregistrement est mis à jour
- Choisissez Opportunité comme objet
Étape 2 : Filtrer pour Closed Won
Ajoutez une action Filtre pour ne continuer que lorsque l’affaire est gagnée :
| Paramètre | Valeur |
|---|
| Champ | Étape |
| Condition | Égal à |
| Valeur | CLOSED_WON (ou le nom de votre étape) |
Le déclencheur se déclenche lors de toute mise à jour de l’Opportunité. Le Filtre garantit que le flux de travail ne continue que lorsque l’étape passe à Closed Won.
Étape 3 : Obtenir les détails de l’Entreprise
L’enregistrement de l’Opportunité peut ne pas inclure tous les champs de l’Entreprise dont vous avez besoin pour la facture. Ajoutez une action Rechercher un enregistrement :
| Paramètre | Valeur |
|---|
| Objet | Entreprise |
| Correspondance par | ID égal à {{trigger.object.companyId}} |
Cela récupère l’enregistrement complet de l’Entreprise avec l’adresse de facturation, l’ID fiscal, etc.
Si votre système de facturation attend un format spécifique, ajoutez une action Code :
export const main = async (params: {
opportunity: any;
company: any;
}): Promise<object> => {
const { opportunity, company } = params;
return {
invoice: {
// Customer info from Company
customer_name: company.name,
customer_email: company.email || "",
billing_address: {
line1: company.address?.street || "",
city: company.address?.city || "",
postal_code: company.address?.postalCode || "",
country: company.address?.country || ""
},
tax_id: company.taxId || null,
// Invoice details from Opportunity
amount: opportunity.amount,
currency: opportunity.currency || "USD",
description: `Invoice for ${opportunity.name}`,
due_days: 30,
// Reference back to Twenty
metadata: {
opportunity_id: opportunity.id,
company_id: company.id
}
}
};
};
Étape 5 : Envoyer au système de facturation
Ajoutez une action Requête HTTP :
| Paramètre | Valeur |
|---|
| Méthode | POST |
| URL | Votre point de terminaison API de facturation |
| En-têtes | Authorization: Bearer YOUR_API_KEY |
| Corps | {{code.invoice}} ou faites correspondre les champs directement |
Exemple : Facture Stripe
POST https://api.stripe.com/v1/invoices
Headers:
Authorization: Bearer sk_live_xxx
Content-Type: application/x-www-form-urlencoded
Body:
customer: {{company.stripeCustomerId}}
collection_method: send_invoice
days_until_due: 30
Exemple : Facture QuickBooks
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
Headers:
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Body: {{code.invoice}}
Récapitulatif complet du flux de travail
| Étape | Action | Objectif |
|---|
| 1 | Déclencheur : Enregistrement mis à jour | Se déclenche à chaque modification d’une Opportunité |
| 2 | Filtre | Ne poursuivre que si Étape = Closed Won |
| 3 | Rechercher un enregistrement | Obtenir tous les détails de l’Entreprise pour la facturation |
| 4 | Code | Mettre en forme les données pour l’API de facturation |
| 5 | Requête HTTP | Créer la facture dans le système externe |
Conseils
- Stockez les ID externes : Enregistrez l’ID de la facture renvoyé par l’API dans l’Opportunité à l’aide d’une action Mettre à jour l’enregistrement
- Gestion des erreurs : Ajoutez une branche pour envoyer une notification si la requête HTTP échoue
- Testez d’abord : Utilisez le mode bac à sable/test de votre système de facturation avant la mise en production
Articles connexes