Relance de panier abandonné
Ce workflow alerte l'équipe e-commerce dès qu'un panier est abandonné, puis publie la relance sur un topic Google Pub/Sub consommé par le CRM.
Le besoin
L'équipe e-commerce doit être alertée dès qu'un panier non vide est abandonné, afin d'organiser la relance du client via le CRM. Chaque relance doit être publiée sur le topic Google Pub/Sub du CRM pour éviter d'en envoyer plusieurs au même client. Le flux n'adresse jamais le client final : c'est l'équipe e-commerce qui relaie via un outil CRM dédié.
Ce que fait le flux
- Panier abandonné — le déclencheur capture l'événement
cart.abandoned. Le panier (adresse client, nombre d'articles) arrive dansdata. - Panier non vide ? — la condition vérifie que le panier contient au moins un article (
data.itemsCount > 0) pour éviter les relances sur des paniers vides. - Notifier l'équipe e-commerce — le nœud Envoi e-mail alerte l'équipe e-commerce (équipe interne), qui organise la relance du client via le CRM ; le flux n'adresse pas directement le client.
- Différer la trace (J+1) — le nœud Attente suspend l'exécution d'un jour avant de tracer.
- Publier la relance (CRM) — le nœud Envoi événement publie
cart_reminder_sentsur le topic Pub/Sub du CRM pour éviter les relances multiples.
Ce dont vous avez besoin
- Un déclencheur configuré sur l'événement
cart.abandoned. - Les nœuds du flux : Condition, Envoi e-mail, Attente et Envoi événement.
- Un topic Google Pub/Sub (
cart-reminders) auquel le CRM est abonné et qui reçoit l'événementcart_reminder_sent.
Construction
Copiez la définition du workflow et collez-la dans l'éditeur (le nœud Déclencheur est recréé automatiquement, il n'est pas dans le snippet) :
[
{
"id": "cond-105",
"name": "Panier non vide ?",
"config": {
"type": "CONDITION",
"conditionCode": "return data.itemsCount > 0;",
"conditions": [
{
"value": true,
"next": "email-105"
},
{
"value": false,
"next": null
}
]
},
"parents": [
"trigger"
],
"position": {
"x": 0,
"y": 200
}
},
{
"id": "email-105",
"name": "Notifier l'équipe e-commerce",
"config": {
"type": "SEND_EMAIL",
"to": [
"ecommerce@boutique-france.fr"
],
"subject": "Panier abandonné : relance à prévoir",
"content": "Le panier de {{ data.customerEmail }} contient {{ data.itemsCount }} article(s) non finalisés — prévoyez une relance via le CRM.",
"sendAsHtml": true
},
"parents": [
"cond-105"
],
"position": {
"x": 0,
"y": 400
},
"next": "wait-105"
},
{
"id": "wait-105",
"name": "Différer la trace (J+1)",
"config": {
"type": "WAIT",
"time": 86400000
},
"parents": [
"email-105"
],
"position": {
"x": 0,
"y": 600
},
"next": "event-105"
},
{
"id": "event-105",
"name": "Publier la relance (CRM)",
"config": {
"type": "SEND_EVENT",
"provider": {
"type": "GCP_PUBSUB",
"projectId": "mon-projet-crm",
"topicId": "cart-reminders"
},
"body": "{\"event\": \"cart_reminder_sent\", \"email\": \"{{ data.customerEmail }}\"}"
},
"parents": [
"wait-105"
],
"position": {
"x": 0,
"y": 800
}
}
]
Vérifier que ça marche
Le payload du déclencheur doit exposer customerEmail et itemsCount, sinon les champs {{ data… }} resteront vides. Déployez le flux, déclenchez une exécution sur un panier abandonné et consultez les traces pour vérifier la notification à l'équipe e-commerce et l'événement cart_reminder_sent publié sur le topic Pub/Sub du CRM.
Variantes
- Anti-relance : l'événement publié sur le topic permet de savoir qu'une relance a déjà été envoyée pour ce panier ; ajoutez une condition sur ce marqueur pour limiter à une relance par client.
- Destinataire interne : l'e-mail part vers l'équipe e-commerce, pas vers le client final ; la relance client elle-même est à confier à un outil CRM dédié.
Voir la référence
Voir aussi : Exemples et intégrations