Gestion d'une demande de retour produit
Ce workflow traite une demande de retour : il la valide selon la politique (30 jours), génère le bon de retour auprès du transporteur et informe les équipes internes chargées de la relation client.
Le besoin
Chaque demande de retour doit être validée selon la politique de retour (30 jours). Si elle est acceptée, un bon de retour doit être généré auprès du transporteur ; sinon, le refus doit être notifié. Dans tous les cas, les équipes internes chargées de la relation client (service clients, équipe technique) doivent être informées — le flux n'adresse jamais le client final.
Ce que fait le flux
- Retour demandé — le déclencheur capture l'événement
return.requested. La référence de commande, le motif et le client arrivent dansdata. - Retour accepté ? — la condition vérifie que le délai de 30 jours (
daysSinceDelivery) est respecté. - Créer le bon de retour — si accepté, le nœud Requête HTTP appelle l'API du transporteur pour générer le bon de retour.
- Transmettre l'étiquette au service clients — le nœud Envoi e-mail adresse l'étiquette au service clients (équipe interne), reprise depuis la réponse de l'API via
{{ context.lastResponse.data.labelUrl }}. - Notifier le refus au service clients — si le délai est dépassé, un e-mail informe le service clients, qui relaie le refus au client.
- Gérer l'échec transporteur — en cas d'erreur du nœud Requête HTTP, le nœud On Error prend le relais puis Alerter l'équipe technique envoie un e-mail aux équipes internes.
Ce dont vous avez besoin
- Un déclencheur qui capture l'événement
return.requested. - L'API du transporteur pour générer le bon de retour.
- Les nœuds du flux : Condition, Requête HTTP, Envoi e-mail et On Error.
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-106",
"name": "Retour accepté ?",
"config": {
"type": "CONDITION",
"conditionCode": "return data.daysSinceDelivery <= 30;",
"conditions": [
{
"value": true,
"next": "http-106"
},
{
"value": false,
"next": "refus-106"
}
]
},
"parents": [
"trigger"
],
"position": {
"x": 0,
"y": 200
}
},
{
"id": "http-106",
"name": "Créer le bon de retour",
"config": {
"type": "HTTP_REQUEST",
"method": "POST",
"url": "https://api.transporteur.fr/v1/labels",
"bodyMode": "RAW",
"body": "{\"order\": \"{{ data.orderRef }}\", \"reason\": \"{{ data.reason }}\"}"
},
"parents": [
"cond-106"
],
"position": {
"x": 0,
"y": 400
},
"next": "label-106"
},
{
"id": "label-106",
"name": "Transmettre l'étiquette au service clients",
"config": {
"type": "SEND_EMAIL",
"to": [
"service-clients@boutique-france.fr"
],
"subject": "Étiquette de retour : {{ data.orderRef }}",
"content": "Étiquette disponible pour le client {{ data.customerEmail }} : {{ context.lastResponse.data.labelUrl }}",
"sendAsHtml": true
},
"parents": [
"http-106"
],
"position": {
"x": 0,
"y": 600
}
},
{
"id": "refus-106",
"name": "Notifier le refus au service clients",
"config": {
"type": "SEND_EMAIL",
"to": [
"service-clients@boutique-france.fr"
],
"subject": "Retour refusé : {{ data.orderRef }}",
"content": "Le retour de la commande {{ data.orderRef }} est refusé (délai dépassé), à communiquer au client {{ data.customerEmail }}.",
"sendAsHtml": true
},
"parents": [
"cond-106"
],
"position": {
"x": 800,
"y": 400
}
},
{
"id": "error-106",
"name": "Gérer l'échec transporteur",
"config": {
"type": "ON_ERROR",
"enabledEnvironments": []
},
"parents": [],
"position": {
"x": -800,
"y": 0
},
"next": "error-email-106"
},
{
"id": "error-email-106",
"name": "Alerter l'équipe technique",
"config": {
"type": "SEND_EMAIL",
"to": [
"ops@boutique-france.fr"
],
"subject": "Échec transporteur : {{ data.orderRef }}",
"content": "La création du bon de retour {{ data.orderRef }} a échoué auprès du transporteur.",
"sendAsHtml": true
},
"parents": [
"error-106"
],
"position": {
"x": -800,
"y": 200
}
}
]
Vérifier que ça marche
L'URL de l'étiquette est reprise depuis la sortie du nœud HTTP via {{ context.lastResponse… }} ; vérifiez le chemin exact de la réponse avant de référencer le champ. Déployez le flux, déclenchez une exécution et consultez les traces pour vérifier la génération du bon de retour auprès du transporteur et les notifications aux équipes internes.
Variantes
- Politique de retour : la fenêtre de 30 jours est codée dans la condition ; déplacez-la dans un dictionnaire pour pouvoir la modifier sans toucher au flux.
- E-mails internes : les nœuds Envoi e-mail ciblent le service clients et l'équipe technique — le flux n'adresse jamais le client final ; la communication client reste à la charge de l'équipe.
Voir la référence
Voir aussi : Exemples et intégrations