Ce qu’on va construire
Un client paie sur ton site Stripe → Make capte l’événement → la ligne apparaît dans ton Google Sheets → Brevo envoie un email transactionnel personnalisé. Tout ça sans serveur, sans code, sans prise de tête.
Le workflow complet tourne depuis 47 jours sur mes comptes de prod. Zéro erreur. 0 € de coûts mensuels sur le free tier Make.
Prérequis
Avant de démarrer, vérifie que tu as :
- Un compte Make (free tier suffisant — 1 000 ops/mois)
- Un compte Stripe avec au moins un produit créé
- Un Google Sheet avec les colonnes : Date, Email, Montant, Produit, ID
- Un compte Brevo avec un template transactionnel créé (ID du template à portée)
Va dans Brevo → Transactionnel → Templates et crée un template simple avec les variables PRENOM, MONTANT, PRODUIT. Note son ID (ex : 42).
Configurer le webhook Stripe
Dans ton dashboard Stripe, bascule en mode Test (switch en haut à gauche). Tu travailleras avec de fausses cartes jusqu’au test final.
Dans Make, crée un nouveau scénario. Ajoute un module Webhooks → Custom Webhook. Copie l’URL générée — elle ressemble à https://hook.eu1.make.com/abc123...
Dans Stripe → Développeurs → Webhooks → Ajouter un endpoint. Colle ton URL Make. Pour l’événement, sélectionne uniquement checkout.session.completed.
Le payload que Make recevra à chaque paiement réussi :
{
"type": "checkout.session.completed",
"data": {
"object": {
"id": "cs_test_a1B2c3...",
"customer_email": "client@email.com",
"amount_total": 4900,
"currency": "eur",
"metadata": { "product_name": "Starter Kit" }
}
}
} Stripe envoie amount_total en centimes. Tu dois diviser par 100 dans Make pour avoir des euros. J’ai oublié ça la première fois — j’avais des prix ×100 dans mon Sheets. 😅
Construire le scénario Make
Depuis le webhook, ajoute deux branches en parallèle :
- Google Sheets → Add a Row : log la transaction
- Brevo → Send a Transactional Email : déclenche l’email client
Pour n’envoyer l’email que pour les montants > 50 €, ajoute un module Filter entre le webhook et Brevo :
- Condition :
{{divide(1.data.object.amount_total; 100)}}—Greater than—50
Logger dans Google Sheets
Dans le module Sheets → Add a Row, mappe :
| Colonne | Valeur Make |
|---|---|
| Date | {{now}} |
{{1.data.object.customer_email}} | |
| Montant (€) | {{divide(1.data.object.amount_total; 100)}} |
| Produit | {{1.data.object.metadata.product_name}} |
| Stripe ID | {{1.data.object.id}} |
Envoyer l’email Brevo
Dans Brevo → Send a Transactional Email, remplis :
{
"to": "{{1.data.object.customer_email}}",
"templateId": 42,
"params": {
"PRENOM": "{{1.data.object.metadata.first_name}}",
"MONTANT": "{{divide(1.data.object.amount_total; 100)}} €",
"PRODUIT": "{{1.data.object.metadata.product_name}}"
}
} Tester en conditions réelles
Dans Stripe mode Test, utilise la carte 4242 4242 4242 4242 (n’importe quelle date future, CVC quelconque). Complète le checkout — Make doit recevoir le webhook dans les 2 secondes.
Dans Make → Historique des exécutions, tu verras chaque run avec le statut (✓ ou ✗) et le détail de chaque bundle. Si l’exécution échoue, les logs te montrent exactement quel module a planté et pourquoi.
Pendant les tests, active Run once dans Make (bouton en bas à gauche). Make attend un déclenchement en direct et te montre les données en temps réel — beaucoup plus pratique que de deviner.
Les 4 pièges à éviter
- Le montant en centimes — divise toujours
amount_totalpar 100. - Les métadonnées Stripe — elles ne sont pas automatiques. Tu dois les passer dans ton
checkout.session.create:metadata: { product_name: "Starter Kit", first_name: "Adrien" }. - Le rate limiting Brevo — sur le free tier, max 300 emails/jour. Pour les volumes plus élevés, passe sur le plan Starter (25 €/mois).
- L’idempotence — Stripe peut envoyer le même webhook plusieurs fois (retry sur timeout). Pour éviter les doublons, vérifie dans Sheets si l’
idStripe existe déjà avant d’ajouter la ligne.