{"id":13386,"date":"2025-10-28T09:00:00","date_gmt":"2025-10-28T09:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/"},"modified":"2026-06-15T10:51:15","modified_gmt":"2026-06-15T10:51:15","slug":"creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/","title":{"rendered":"Cr\u00e9er des sc\u00e9narios d&#8217;emails transactionnels pour les notifications de paniers abandonn\u00e9s avec l&rsquo;API de Mailgun"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Dans les applications e-commerce modernes, les emails transactionnels vont au-del\u00e0 des confirmations de commande et des mises \u00e0 jour d&rsquo;exp\u00e9dition. Ils r\u00e9agissent \u00e9galement au comportement des utilisatrices ; par exemple, si une utilisatrice ajoute des articles \u00e0 son panier mais ne compl\u00e8te pas l&rsquo;achat, vous pouvez envoyer un rappel, commun\u00e9ment appel\u00e9 notification de \u00ab panier abandonn\u00e9 \u00bb. Cela encourage non seulement la compl\u00e9tion, mais offre \u00e9galement un point de contact utile au cas o\u00f9 l&rsquo;utilisatrice rencontrerait des probl\u00e8mes lors du paiement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Dans ce tutoriel, vous apprendrez \u00e0 envoyer un email de panier abandonn\u00e9 aux utilisatrices \u00e0 l&rsquo;aide des API Mailgun.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mettre en \u0153uvre des sc\u00e9narios d&#8217;emails transactionnels pour les notifications de paniers abandonn\u00e9s<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour mettre en \u0153uvre des sc\u00e9narios d&#8217;emails transactionnels pour les notifications de paniers abandonn\u00e9s, vous allez cr\u00e9er une interface utilisateur simple pour simuler un panier d&rsquo;achat et un\u00a0<a href=\"https:\/\/flask.palletsprojects.com\/en\/stable\/\">Flask<\/a>\u00a0backend pour suivre les paniers abandonn\u00e9s et d\u00e9clencher des emails transactionnels.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>Avant de d\u00e9buter, assurez-vous d&rsquo;avoir ce qui suit :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un\u00a0<a href=\"https:\/\/signup.mailgun.com\/new\/signup\">Compte Mailgun<\/a>\u00a0pour envoyer des emails via l&rsquo;API de Mailgun ; si vous n&rsquo;avez pas de compte, suivez les\u00a0<a href=\"https:\/\/documentation.mailgun.com\/docs\/mailgun\/quickstart-guide\/quickstart\/\">guide de d\u00e9marrage rapide<\/a>\u00a0pour en configurer un gratuitement<\/li>\n\n\n\n<li><a href=\"https:\/\/www.python.org\/downloads\/\">Python<\/a>\u00a03.8 ou sup\u00e9rieur install\u00e9 sur votre machine<\/li>\n\n\n\n<li>Une certaine familiarit\u00e9 avec HTML et JavaScript pour comprendre le code de l&rsquo;interface utilisateur<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Configurer un compte Mailgun<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tout d&rsquo;abord, connectez-vous \u00e0 votre compte Mailgun et notez votre domaine d&rsquo;envoi dans le tableau de bord Mailgun. Si vous avez un abonnement gratuit, vous verrez un domaine sandbox, qui sera utilis\u00e9 \u00e0 la fois dans le point de terminaison d&rsquo;API et dans l&rsquo;adresse email\u00a0<code>\"from\"<\/code> lors des envois d&#8217;emails. Le domaine sandbox suit ce format :\u00a0<code>sandbox.mailgun.org<\/code> :<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/7IYAFRf.png\" alt=\"Domaine d&apos;envoi Mailgun\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Remarque :<\/strong>\u00a0Si vous souhaitez envoyer des emails \u00e0 partir de votre propre domaine personnalis\u00e9, vous aurez besoin d&rsquo;un abonnement Mailgun payant. L&rsquo;abonnement gratuit ne supporte que le domaine sandbox et limite les envois \u00e0\u00a0<a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/217531258-Authorized-Recipients\">cinq destinataires autoris\u00e9s<\/a>.<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> <p class=\"mb-0\">Si vous souhaitez envoyer des emails \u00e0 partir de votre propre domaine personnalis\u00e9, vous aurez besoin d&rsquo;un abonnement Mailgun payant. L&rsquo;abonnement gratuit ne supporte que le domaine sandbox et limite les envois \u00e0<a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/217531258-Authorized-Recipients\">\u00a0cinq destinataires autoris\u00e9s.<\/a><\/p><\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Ensuite, vous devez g\u00e9n\u00e9rer une cl\u00e9 API \u00e0 partir de la page\u00a0<strong>S\u00e9curit\u00e9 de l&rsquo;API<\/strong>. Vous pouvez trouver cette option dans le menu d\u00e9roulant sous votre pr\u00e9nom dans le coin sup\u00e9rieur droit du tableau de bord Mailgun :<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/YEm9s1u.png\" alt=\"Cr\u00e9er une cl\u00e9 API\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous utiliserez cette cl\u00e9 API dans votre application Flask pour envoyer des notifications de paniers abandonn\u00e9s via l&rsquo;API Mailgun.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurer un nouveau projet Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour configurer un nouveau projet, ouvrez un terminal dans votre r\u00e9pertoire de projet pr\u00e9f\u00e9r\u00e9 et ex\u00e9cutez les commandes suivantes pour r\u00e9cup\u00e9rer le code requis \u2013 \u00e0 la fois l&rsquo;interface utilisateur et le backend \u2013 sur votre machine :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><code>git clone https:\/\/github.com\/manishh\/gifts-giveaways.git cd gifts-giveaways\/python\/mailgun-abandoned-cart-notifications<\/code><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ensuite, dans le r\u00e9pertoire\u00a0<code>mailgun-abandoned-cart-notifications<\/code>, renommez\u00a0<code>.env.example<\/code>\u00a0en\u00a0<code>.env<\/code>, et mettez-le \u00e0 jour avec vos identifiants d&rsquo;API Mailgun :<br><code># Remplacez avec votre cl\u00e9 API de Mailgun et domaine MAILGUN_API_KEY=\"YOUR-API-KEY\" MAILGUN_DOMAIN=\"YOUR-MAILGUN-DOMAIN\"<\/code><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de continuer, il est recommand\u00e9 de cr\u00e9er et d&rsquo;activer un nouvel\u00a0<a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\">environnement virtuel<\/a>\u00a0pour isoler votre projet et \u00e9viter les conflits de d\u00e9pendances.<br>Une fois votre environnement virtuel actif, installez les d\u00e9pendances requises :<br><code>pip install -r requirements.txt<\/code><br>Cela installe toutes les formules n\u00e9cessaires, y compris\u00a0<code>Flask<\/code>, le framework web l\u00e9ger qui ex\u00e9cute le backend.<br>Une fois l&rsquo;installation compl\u00e8te, lancez l&rsquo;application Flask avec cette commande :<br><code>python app.py<\/code><br>L&rsquo;interface utilisateur de l&rsquo;application sera alors disponible \u00e0 l&rsquo;adresse\u00a0<a href=\"http:\/\/localhost:5000\/\">http:\/\/localhost:5000\/<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cr\u00e9er l&rsquo;interface de panier abandonn\u00e9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La capture d&rsquo;\u00e9cran ci-dessous montre une interface utilisateur e-commerce simple pour simuler des sc\u00e9narios de paniers abandonn\u00e9s. En haut, l&rsquo;en-t\u00eate affiche le titre, ainsi qu&rsquo;un profil d&rsquo;utilisatrice (montrant le pr\u00e9nom et l&#8217;email) et une ic\u00f4ne de panier d&rsquo;achat indiquant le nombre d&rsquo;articles dans le panier. Il y a quatre fiches produits pr\u00e9sentant des images, des noms, des prix et des descriptions, et les utilisatrices peuvent s\u00e9lectionner des quantit\u00e9s avant d&rsquo;ajouter des articles avec le bouton\u00a0<strong>Ajouter au panier<\/strong>. En bas \u00e0 gauche, un panneau de param\u00e8tres vous permet de configurer le d\u00e9lai d&rsquo;expiration du panier abandonn\u00e9 (en secondes) et de r\u00e9initialiser le panier si n\u00e9cessaire. Dans la vraie vie, le d\u00e9lai d&rsquo;expiration serait en heures, et il devrait \u00eatre suivi par le backend.<br>Vous pouvez utiliser cette interface pour d\u00e9clencher un \u00e9v\u00e9nement lorsqu&rsquo;une utilisatrice laisse des articles dans son panier sans compl\u00e9ter l&rsquo;achat :<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/c99b7OU.png\" alt=\"Interface utilisateur de panier abandonn\u00e9\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez trouver le code de cette interface de panier d&rsquo;achat dans\u00a0<a href=\"https:\/\/github.com\/manishh\/gifts-giveaways\/blob\/master\/python\/mailgun-abandoned-cart-notifications\/templates\/shopping_cart.html\"><code>templates\/shopping_cart.html<\/code><\/a>. Ce fichier comporte deux sections importantes : la configuration de l&rsquo;interface utilisateur et une fonction pour envoyer les donn\u00e9es de panier abandonn\u00e9 au backend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Pour la configuration de l&rsquo;interface utilisateur, localisez et \u00e9ditez\u00a0<code>USER_NAME<\/code>\u00a0et\u00a0<code>USER_EMAIL<\/code>\u00a0dans la balise\u00a0<code><\/code>\u00a0pour envoyer les donn\u00e9es correctes \u00e0 votre backend. Ces deux param\u00e8tres repr\u00e9sentent l&rsquo;utilisatrice connect\u00e9e dans votre application e-commerce :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><code>\/\/ Configuration : Remplacez ces valeurs par les v\u00f4tres const USER_NAME = \"John Smith\"; const USER_EMAIL = \"john.smith@example.com\"; \/\/ Email v\u00e9rifi\u00e9 pour le compte sandbox Mailgun const BACKEND_URL = 'http:\/\/localhost:5000\/abandoned-cart'; \/\/ Mettre \u00e0 jour avec votre point de terminaison d'API Flask, si n\u00e9cessaire let ABANDONED_CART_TIMEOUT = 60; \/\/ D\u00e9lai d'attente par d\u00e9faut en secondes<\/code><\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> <p>Remarque :\u00a0Si vous utilisez l&rsquo;abonnement gratuit de Mailgun, assurez-vous que\u00a0USER_EMAIL\u00a0est l&rsquo;une des adresses v\u00e9rifi\u00e9es dans votre compte Mailgun. Vous pouvez laisser les deux autres param\u00e8tres inchang\u00e9s.<\/p><\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\"><br>La fonction JavaScript suivante,\u00a0<code>sendToBackend(data)<\/code>, g\u00e8re le processus d&rsquo;envoi des d\u00e9tails du panier abandonn\u00e9 \u2013 tels que les informations de l&rsquo;utilisatrice, les articles dans le panier et la valeur totale \u2013 au backend pour d\u00e9clencher une notification :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><code>\/\/ Envoyer des donn\u00e9es au backend function sendToBackend(data) { console.log('Envoi des donn\u00e9es du panier abandonn\u00e9 au backend...'); fetch(BACKEND_URL, { method: 'POST', headers: { 'Content-Type': 'application\/json', }, body: JSON.stringify(data) }) .then(response =&gt; { \/\/ V\u00e9rifier si l'\u00e9tat du service de la r\u00e9ponse est 200 (OK) if (response.status === 200) { return response.json(); } else { \/\/ Lancer une erreur si l'\u00e9tat du service n'est pas 200 throw new Error(`Erreur HTTP ! \u00c9tat du service : ${response.status}`); } }) .then(result =&gt; { console.log('R\u00e9ponse du backend :', result); alert('Notification de panier abandonn\u00e9 envoy\u00e9e avec succ\u00e8s !'); resetCart(); }) .catch(error =&gt; { console.error('Erreur lors de l\\'envoi de la notification de panier abandonn\u00e9 :', error); alert('Erreur lors de l\\'envoi de la notification de panier abandonn\u00e9. V\u00e9rifiez la console pour plus de d\u00e9tails.'); }); }<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Cette fonction effectue d&rsquo;abord une requ\u00eate HTTP POST vers\u00a0<code>BACKEND_URL<\/code>\u00a0\u00e0 l&rsquo;aide de l&rsquo;appel\u00a0<code>fetch<\/code>, transformant les donn\u00e9es du panier en une charge utile JSON.<br>Si le serveur r\u00e9pond avec succ\u00e8s (HTTP\u00a0<code>200<\/code>), la r\u00e9ponse est trait\u00e9e et enregistr\u00e9e dans la console, et une alerte confirme que la notification de panier abandonn\u00e9 a \u00e9t\u00e9 envoy\u00e9e. Le panier est ensuite r\u00e9initialis\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Si la requ\u00eate \u00e9choue \u2013 en raison de probl\u00e8mes de r\u00e9seau ou d&rsquo;un probl\u00e8me c\u00f4t\u00e9 serveur (comme des erreurs HTTP\u00a0<code>5XX<\/code>) \u2013 la fonction intercepte l&rsquo;erreur, l&rsquo;enregistre dans la console, et alerte l&rsquo;utilisatrice qu&rsquo;un probl\u00e8me est survenu. De cette fa\u00e7on, la fonction s&rsquo;assure que les tentatives r\u00e9ussies et \u00e9chou\u00e9es de notification au backend sont g\u00e9r\u00e9es de mani\u00e8re \u00e9l\u00e9gante, gardant l&rsquo;utilisatrice inform\u00e9e tout au long du processus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Le code restant dans\u00a0<code>shopping_cart.html<\/code>\u00a0g\u00e8re le style CSS pour une structure propre et visuellement attrayante, la logique JavaScript pour calculer la valeur totale du panier, et la direction du minuteur pour simuler l&rsquo;abandon de panier.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Traitement des notifications de paniers abandonn\u00e9s dans le backend<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Lorsque l&rsquo;interface utilisateur publie (posts) les donn\u00e9es de panier abandonn\u00e9 vers\u00a0<code>BACKEND_URL<\/code>, l&rsquo;application Flask (<a href=\"https:\/\/github.com\/manishh\/gifts-giveaways\/blob\/master\/python\/mailgun-abandoned-cart-notifications\/app.py\"><code>app.py<\/code><\/a>) les traite en utilisant la fonction suivante :<br><code>@app.route('\/abandoned-cart', methods=['POST']) def abandoned_cart(): \"\"\" Point de terminaison pour recevoir les donn\u00e9es de panier abandonn\u00e9, y compris les informations sur l'utilisatrice. Il envoie une notification par email \u00e0 l'utilisatrice concern\u00e9e. \"\"\" try: # Obtenir les donn\u00e9es du panier \u00e0 partir de la requ\u00eate cart_data = request.json # Extraire les informations de l'utilisatrice user_info = cart_data.get('user', {}) user_email = user_info.get('email', 'unknown') # Enregistrer les donn\u00e9es re\u00e7ues logger.info(f\"Panier abandonn\u00e9 re\u00e7u de {user_email} \u00e0 {datetime.datetime.now()}, Nombre total d'articles : {len(cart_data.get('items', []))}\") # Envoyer un email \u00e0 propos du panier abandonn\u00e9 html_message = _generate_abandoned_cart_email(cart_data) _send_email(f\"{user_info.get('name', user_email)} \", \"Votre panier vous attend...\", html_message) # Renvoyer une r\u00e9ponse de succ\u00e8s return jsonify({ \"status\": \"success\", \"message\": f\"Notification de panier abandonn\u00e9 envoy\u00e9e \u00e0 : {user_info.get('email')}\", \"timestamp\": datetime.datetime.now().isoformat(), }), 200 except Exception as e: logger.error(f\"Erreur lors du traitement du panier abandonn\u00e9 : {str(e)}\") return jsonify({\"status\": \"error\", \"message\": str(e)}), 500<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Ce point de terminaison d&rsquo;API (<code>\/abandoned-cart<\/code>) \u00e9coute les requ\u00eates POST lorsqu&rsquo;une utilisatrice abandonne son panier. Il extrait les d\u00e9tails du panier de la charge utile JSON de la requ\u00eate, r\u00e9cup\u00e8re l&#8217;email et le pr\u00e9nom de l&rsquo;utilisatrice, et enregistre l&rsquo;\u00e9v\u00e9nement avec l&rsquo;horodatage et le nombre d&rsquo;articles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Ensuite, il g\u00e9n\u00e8re un email en utilisant\u00a0<code>_generate_abandoned_cart_email(cart_data)<\/code>, qui transforme les d\u00e9tails du panier en un mod\u00e8le d&#8217;email HTML soign\u00e9. L&#8217;email est ensuite envoy\u00e9 \u00e0 l&rsquo;\u00a0<code>user_email<\/code>\u00a0via\u00a0<code>_send_email()<\/code>, en utilisant le sujet \u00ab Votre panier vous attend&#8230; \u00bb pour rappeler \u00e0 l&rsquo;utilisatrice \u00e0 propos de son achat en attente.<br>En cas de succ\u00e8s, la fonction renvoie une r\u00e9ponse JSON confirmant que l&#8217;email a \u00e9t\u00e9 envoy\u00e9. Si une erreur se produit, comme un probl\u00e8me avec la requ\u00eate ou le service d&#8217;emailing, il enregistre l&rsquo;erreur et renvoie une r\u00e9ponse HTTP\u00a0<code>500 Internal Server Error<\/code>, que l&rsquo;interface utilisateur peut utiliser pour informer l&rsquo;utilisatrice \u00e0 propos de l&rsquo;\u00e9tat du service de la notification.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cr\u00e9er le design du mod\u00e8le d&#8217;email<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les emails de rappel de panier abandonn\u00e9 doivent non seulement \u00eatre informatifs, mais aussi visuellement attrayants. Un email HTML bien con\u00e7u avec des images pr\u00e9sente clairement les d\u00e9tails du panier et augmente les chances que l&rsquo;utilisatrice revienne pour compl\u00e9ter son achat. La fonction\u00a0<code>_generate_abandoned_cart_email(...)<\/code>\u00a0s&rsquo;en charge :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><code>def _generate_abandoned_cart_email(cart_data: Dict[str, Any]) -&gt; str: \"\"\" G\u00e9n\u00e9rer un email HTML pour un panier abandonn\u00e9 en utilisant les donn\u00e9es du panier fournies. Args: cart_data: Dictionnaire contenant les informations du panier y compris les d\u00e9tails de l'utilisatrice et les articles Returns: Cha\u00eene HTML pour l'email \"\"\" try: # Extraire les donn\u00e9es avec gestion des erreurs user_name = cart_data.get('user', {}).get('name', 'Client fid\u00e8le') first_name = user_name.split()[0] if ' ' in user_name else user_name items = cart_data.get('items', []) total_value = cart_data.get('totalValue', 0) # Formater l'horodatage si disponible timestamp_str = cart_data.get('timestamp', '') timezone_offset = cart_data.get('timezoneOffset', 0) # Repr\u00e9senter le fuseau horaire de l'utilisatrice if timestamp_str: try: timestamp = datetime.datetime.fromisoformat(timestamp_str.replace('Z', '+00:00')) - datetime.timedelta(minutes=timezone_offset) abandonment_time = f\"le <b>{timestamp.strftime('%d %B \u00e0 %H:%M')}<\/b>\" except (ValueError, TypeError): abandonment_time = 'r\u00e9cemment' else: abandonment_time = 'r\u00e9cemment' # G\u00e9n\u00e9rer le contenu HTML avec CSS minimal et combin\u00e9 html = f\"\"\"     \/* Style CSS ici *\/    <div class=\"container\"> <div class=\"header\"> <h1>Votre panier vous attend !<\/h1> <\/div> <div class=\"content\"> <p>Bonjour {first_name},<\/p> <p>Nous avons remarqu\u00e9 que vous avez laiss\u00e9 des articles dans votre panier {abandonment_time}. Ne vous inqui\u00e9tez pas, nous les avons sauvegard\u00e9s pour vous !<\/p> <h2>Articles de votre panier :<\/h2>\"\"\" # Ajouter chaque article \u00e0 l'email for item in items: item_name = item.get('name', 'Produit') item_price = item.get('price', 0) item_quantity = item.get('quantity', 1) item_image = item.get('image', '') item_description = item.get('description', '') # Format image tag with fallback image_tag = f'<img decoding=\"async\" src=\"{item_image}\" alt=\"{item_name}\" style=\"max-width:100%;max-height:100%\">' if item_image else item_name[0].upper() html += f\"\"\" <div class=\"item\"> <div class=\"img\">{image_tag}<\/div> <div class=\"details\"> <h3>{item_name}<\/h3> <p style=\"font-size:14px\">{item_description}<\/p> <p style=\"color:#666\">Quantit\u00e9 : {item_quantity}<\/p> <p style=\"font-weight:bold\">${item_price:.2f}<\/p> <\/div> <\/div>\"\"\" # Ajouter le total et l'appel \u00e0 l'action html += f\"\"\" <div class=\"total\">Total : ${total_value:.2f}<\/div> <div style=\"text-align:center\"> <a href=\"#\" class=\"btn\">Compl\u00e9ter votre achat<\/a> <\/div> <p>Si vous avez des questions \u00e0 propos de votre commande, n'h\u00e9sitez pas \u00e0 contacter notre \u00e9quipe du service client\u00e8le.<\/p> <p>Merci de faire vos achats chez nous !<\/p> <\/div> <div class=\"footer\"> <p>\u00a9 2025 Nom de votre entreprise. Tous droits r\u00e9serv\u00e9s.<\/p> <\/div> <\/div>  \"\"\" return html except Exception as e: # Renvoyer un email de repli simple si quelque chose ne va pas return \"\"\"   <h1>Votre panier vous attend !<\/h1> <p>Bonjour,<\/p> <p>Vous avez des articles en attente dans votre panier. Cliquez ci-dessous pour compl\u00e9ter votre achat !<\/p> <a href=\"#\" style=\"display:inline-block;background:#eb5454;color:white;padding:10px 20px;text-decoration:none;border-radius:4px;font-weight:bold\">Compl\u00e9ter votre achat<\/a>  \"\"\"<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette fonction construit un email HTML rappelant \u00e0 une utilisatrice \u00e0 propos de son panier abandonn\u00e9. Elle extrait d&rsquo;abord les d\u00e9tails cl\u00e9s des donn\u00e9es fournies, y compris le pr\u00e9nom de l&rsquo;utilisatrice, les articles du panier et le prix total. Si un horodatage est disponible, elle le transforme dans le fuseau horaire de l&rsquo;utilisatrice (puisque les fuseaux horaires du serveur et du client seraient diff\u00e9rents) et le formate en une cha\u00eene de date-heure conviviale (telle que \u00ab le 25 mars \u00e0 15h49 \u00bb). Sinon, la valeur par d\u00e9faut est \u00ab r\u00e9cemment \u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>L&#8217;email informe l&rsquo;utilisatrice que son panier a \u00e9t\u00e9 sauvegard\u00e9 et r\u00e9pertorie les articles qu&rsquo;elle a laiss\u00e9s derri\u00e8re elle, y compris le nom du produit, la quantit\u00e9, le prix, la description et une image. La valeur totale du panier est affich\u00e9e bien en \u00e9vidence, suivie d&rsquo;un bouton\u00a0<strong>Compl\u00e9ter votre achat<\/strong>\u00a0pour encourager l&rsquo;utilisatrice \u00e0 revenir et \u00e0 finaliser le paiement.<br>Si une erreur survient, telle que des donn\u00e9es manquantes ou des probl\u00e8mes de formatage, la fonction utilise comme repli un email simple avec un message de base et un lien d&rsquo;achat. Cela garantit que m\u00eame si la version d\u00e9taill\u00e9e \u00e9choue, les utilisatrices re\u00e7oivent toujours un rappel pour compl\u00e9ter leur transaction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> <b>Astuce de pro :<\/b>\u00a0Mailgun propose des\u00a0mod\u00e8les d&#8217;emails pr\u00e9con\u00e7us\u00a0et un \u00e9diteur visuel intuitif pour cr\u00e9er de superbes emails en responsive design sans \u00e9crire une seule ligne de code.<\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Naviguez vers\u00a0<strong>Mailgun Send &gt; Envois &gt; Mod\u00e8les<\/strong>\u00a0dans votre compte Mailgun pour cr\u00e9er le design de vos propres mod\u00e8les d&#8217;emails :<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/rJ9PTpE.png\" alt=\"Mod\u00e8les d&apos;emails\"><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mettre en \u0153uvre la fonctionnalit\u00e9 d&rsquo;envoi d&#8217;emails avec l&rsquo;API de Mailgun<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Une fois le contenu d&#8217;email g\u00e9n\u00e9r\u00e9, il doit \u00eatre livr\u00e9 de mani\u00e8re fiable. La fonction\u00a0<code>_send_email(...)<\/code>\u00a0g\u00e8re les envois de notifications de paniers abandonn\u00e9s \u00e0 l&rsquo;aide de l&rsquo;API de Mailgun :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><code>def _send_email(to_address: str, subject: str, html_message: str): \"\"\" Envoie un email unique \u00e0 l'adresse email donn\u00e9e \u00e0 l'aide de l'API Mailgun. :param to_address: :param subject: :param message: \"\"\" api_key = os.getenv(\"MAILGUN_API_KEY\") # Obtenir la cl\u00e9 API depuis le fichier `.env` resp = requests.post(MAILGUN_API_URL, auth=(\"api\", api_key), data={\"from\": FROM_EMAIL_ADDRESS, \"to\": to_address, \"subject\": subject, \"html\": html_message}) if resp.status_code == 200: # Succ\u00e8s logging.info(f\"Email envoy\u00e9 avec succ\u00e8s \u00e0 '{to_address}' via l'API Mailgun.\") else: # Erreur raise RuntimeError(f\"Impossible d'envoyer l'email, raison : {resp.text}\")<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Cette fonction lit\u00a0<code>MAILGUN_API_KEY<\/code>\u00a0puis envoie un email via l&rsquo;API de Mailgun en utilisant une requ\u00eate HTTP POST. La requ\u00eate inclut les d\u00e9tails essentiels de l&#8217;email, y compris l&rsquo;adresse d&rsquo;exp\u00e9dition, l&rsquo;adresse du destinataire, le sujet et le contenu HTML g\u00e9n\u00e9r\u00e9 par la fonction\u00a0<code>_generate_abandoned_cart_email(...)<\/code>.<br>Si la requ\u00eate r\u00e9ussit (<code>resp.status_code == 200<\/code>), il enregistre un message de succ\u00e8s. Sinon, il l\u00e8ve une exception avec les d\u00e9tails de la r\u00e9ponse.<br>Il est important de comprendre que\u00a0<code>_send_email(...)<\/code>\u00a0ne g\u00e8re d\u00e9lib\u00e9r\u00e9ment pas les erreurs, laissant cela \u00e0 la fonction appelante (<code>abandoned_cart()<\/code>, qui dessert le point de terminaison\u00a0<code>\/abandoned-cart<\/code>), afin qu&rsquo;elle puisse intercepter les exceptions et renvoyer une r\u00e9ponse HTTP appropri\u00e9e. Si l&#8217;email est envoy\u00e9 avec succ\u00e8s,\u00a0<code>abandoned_cart()<\/code>\u00a0renvoie une r\u00e9ponse HTTP\u00a0<code>200<\/code>\u00a0confirmant que la notification a \u00e9t\u00e9 envoy\u00e9e. Si une erreur se produit, comme une cl\u00e9 API invalide ou une d\u00e9faillance du r\u00e9seau, il renvoie une r\u00e9ponse HTTP\u00a0<code>500<\/code>, s&rsquo;assurant que l&rsquo;interface utilisateur est inform\u00e9e du probl\u00e8me.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tester le sc\u00e9nario<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que vous avez explor\u00e9 tous les composants cl\u00e9s, il est temps de tester le sc\u00e9nario d&#8217;email de panier abandonn\u00e9 de bout en bout.<br>Tout d&rsquo;abord, assurez-vous que votre serveur Flask est en cours d&rsquo;ex\u00e9cution et que l&rsquo;interface utilisateur est accessible dans votre navigateur \u00e0 l&rsquo;adresse\u00a0<a href=\"http:\/\/localhost:5000\/\">http:\/\/localhost:5000\/<\/a>. Vous pouvez ajuster le d\u00e9lai d&rsquo;expiration du panier abandonn\u00e9 dans le panneau des param\u00e8tres en bas \u00e0 gauche de la page selon vos besoins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Ensuite, ajoutez quelques articles \u00e0 votre panier. \u00c0 chaque fois que vous ajoutez un article, le compte \u00e0 rebours du panier est r\u00e9initialis\u00e9 et recommence. Une fois que vous avez termin\u00e9, cliquez sur l&rsquo;ic\u00f4ne du panier pour afficher le panneau coulissant, qui affiche les produits s\u00e9lectionn\u00e9s, leurs prix et le bouton\u00a0<strong>Passer \u00e0 la caisse<\/strong> :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/Qos5lQa.png\" alt=\"Triggering an abandoned cart\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au lieu de passer \u00e0 la caisse, laissez le minuteur terminer son compte \u00e0 rebours. Une fois le compte \u00e0 rebours arriv\u00e9 \u00e0 z\u00e9ro, une alerte devrait s&rsquo;afficher sur l&rsquo;interface utilisateur confirmant que la notification de panier abandonn\u00e9 a \u00e9t\u00e9 envoy\u00e9e. Le message d&rsquo;alerte devrait indiquer :<br><code>Notification de panier abandonn\u00e9 envoy\u00e9e avec succ\u00e8s !<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>En m\u00eame temps, le terminal de votre application Flask devrait enregistrer des messages comme celui-ci :<br><code>INFO:__main__:Panier abandonn\u00e9 re\u00e7u de  \u00e0 2025-03-24 14:02:00.077949, Nombre total d'articles : 3 INFO:root:Email envoy\u00e9 avec succ\u00e8s \u00e0 'Pr\u00e9nom ' via l'API Mailgun.<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Enfin, v\u00e9rifiez votre bo\u00eete de r\u00e9ception pour l&#8217;email de panier abandonn\u00e9. Si tout a fonctionn\u00e9 correctement, vous devriez recevoir ce message :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/Jd0ferZ.png\" alt=\"Abandoned cart notification email\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>Remarque :<\/strong>\u00a0Si vous utilisez l&rsquo;abonnement gratuit de Mailgun, l&#8217;email pourrait finir dans le dossier spam.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>F\u00e9licitations ! Vous avez mis en \u0153uvre et test\u00e9 avec succ\u00e8s le sc\u00e9nario de notification d&#8217;email de panier abandonn\u00e9 \u00e0 l&rsquo;aide de l&rsquo;API de Mailgun.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Suivi et gestion des emails<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois vos emails de panier abandonn\u00e9 envoy\u00e9s, il est important d&rsquo;en surveiller la livraison, de suivre l&rsquo;engagement et de g\u00e9rer efficacement les \u00e9checs. Mailgun fournit des outils de tableau de bord statistique int\u00e9gr\u00e9s pour surveiller les emails envoy\u00e9s, les taux d&rsquo;ouvertures et les \u00e9checs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Pour acc\u00e9der \u00e0 ces statistiques, naviguez vers\u00a0<strong>Mailgun Send &gt; Tableau de bord statistique &gt; Statistiques<\/strong>\u00a0dans votre tableau de bord Mailgun :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/J71wf64.png\" alt=\"Mailgun email monitoring\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ici, vous trouverez une r\u00e9partition graphique des statistiques d&#8217;emailing cl\u00e9s, telles que :<br><strong>Nombre d&rsquo;envois :<\/strong>\u00a0Nombre total de tentatives d&#8217;emails<br><strong>Nombre de livr\u00e9s :<\/strong>\u00a0Emails re\u00e7us avec succ\u00e8s par les destinataires<br><strong>Nombre d&rsquo;ouverts :<\/strong>\u00a0Nombre d&#8217;emails ouverts par les destinataires (si le suivi des ouvertures est activ\u00e9)<br><strong>Nombre d&rsquo;\u00e9checs :<\/strong>\u00a0Emails ayant \u00e9chou\u00e9 en raison de probl\u00e8mes tels que des adresses invalides ou un filtre anti-spam<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Pour une analyse plus approfondie, l&rsquo;onglet\u00a0<strong>Rapports<\/strong>\u00a0fournit des enregistrements d\u00e9taill\u00e9s de l&rsquo;\u00e9tat du service de chaque email, tandis que l&rsquo;onglet\u00a0<strong>Classification des rebonds<\/strong>\u00a0aide \u00e0 diagnostiquer les \u00e9checs.<br>Des taux d&rsquo;erreurs \u00e9lev\u00e9s peuvent avoir un impact n\u00e9gatif sur la d\u00e9livrabilit\u00e9 de vos emails. Pour r\u00e9duire les erreurs, r\u00e9visez r\u00e9guli\u00e8rement l&rsquo;onglet\u00a0<strong>Classification des rebonds<\/strong>\u00a0dans Mailgun, retirez les emails invalides et utilisez des listes de suppression pour \u00e9viter de renvoyer \u00e0 des adresses ayant rebondi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce tutoriel, vous avez appris \u00e0 mettre en \u0153uvre un sc\u00e9nario d&#8217;email de panier abandonn\u00e9 \u00e0 l&rsquo;aide de Mailgun. Le processus a couvert la cr\u00e9ation d&rsquo;une interface utilisateur simple pour simuler un site e-commerce, l&rsquo;envoi des donn\u00e9es du panier au backend, leur traitement avec Flask, la g\u00e9n\u00e9ration de mod\u00e8les d&#8217;emails, l&rsquo;envoi de notifications via l&rsquo;API Mailgun et le suivi des statistiques de livraison. Les emails transactionnels comme ceux-ci aident \u00e0 r\u00e9cup\u00e9rer les ventes perdues et \u00e0 am\u00e9liorer l&rsquo;engagement client.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Vous pouvez trouver le code complet de ce tutoriel dans\u00a0<a href=\"https:\/\/github.com\/manishh\/gifts-giveaways\/tree\/master\/python\/mailgun-abandoned-cart-notifications\">ce d\u00e9p\u00f4t GitHub<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Maintenant, vous pouvez mettre ces connaissances en pratique \u2013 int\u00e9grez Mailgun \u00e0 vos projets et commencez \u00e0 utiliser les emails transactionnels pour am\u00e9liorer l&rsquo;UX.\u00a0D\u00e9couvrir <a href=\"https:\/\/www.mailgun.com\/fr\/blog\/email\/modeles-emails-transactionnels-html\/\">Des mod\u00e8les d\u2019emails transactionnels<\/a> et <a href=\"https:\/\/signup.mailgun.com\/new\/signup\">essayez l&rsquo;API Mailgun<\/a>\u00a0gratuitement d\u00e8s aujourd&rsquo;hui !<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"longform-spacings\">\r\n        <div class=\"cta bg-primary rounded-lg px-5 py-6 p-md-7 px-md-6\">\r\n                    <div class=\"form-subscription\">\r\n                            <div class=\"h4 mb-3\">\r\n                    Tenez-moi au courant ! Recevez d&rsquo;excellentes ressources dans votre bo\u00eete de r\u00e9ception chaque semaine.                <\/div>\r\n                                    <form accept-charset=\"UTF-8\" action=\"\" enctype=\"multipart\/form-data\" data-form-subscription method=\"POST\" style=\"max-width: 400px;\">\r\n                <div class=\"row justify-content-between align-items-top g-2\">\r\n                    <div class=\"col-10\">\r\n                        <input type=\"email\" name=\"email\" class=\"form-control\" placeholder=\"Email\" autocomplete=\"email\" required>\r\n                        <div data-fs=\"error\" role=\"alert\" class=\"invalid-feedback\">\r\n                            Please complete this required field.                        <\/div>\r\n                    <\/div>\r\n                                            <div class=\"col-12 order-last mt-3 fs-xxs\" data-fs=\"acceptance\" style=\"display:none;\">\r\n                            \r\n                                <div class=\"form-check\">\r\n                                    <input id=\"formSubscriptionAcceptance-terms-2711\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"terms\">\r\n                                    <label for=\"formSubscriptionAcceptance-terms-2711\" class=\"form-check-label text-body-color\">\r\n                                        J&rsquo;ai lu et j&rsquo;accepte les conditions d&rsquo;utilisation.                                        <span class=\"hs-form-required\">*<\/span>\r\n                                    <\/label>\r\n                                <\/div>\r\n\r\n                            \r\n                                <div class=\"form-check\">\r\n                                    <input id=\"formSubscriptionAcceptance-privacy-3714\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"privacy\">\r\n                                    <label for=\"formSubscriptionAcceptance-privacy-3714\" class=\"form-check-label text-body-color\">\r\n                                        J&rsquo;ai lu et j&rsquo;accepte la politique de confidentialit\u00e9.                                        <span class=\"hs-form-required\">*<\/span>\r\n                                    <\/label>\r\n                                <\/div>\r\n\r\n                                                    <\/div>\r\n                    \r\n                                            <div class=\"col-12 order-last fs-xxs mb-0 mt-2 text-body-color\">\r\n                            Envoyez-moi la newsletter de Mailgun. J&rsquo;accepte express\u00e9ment de recevoir la newsletter et je sais que je peux facilement me d\u00e9sabonner \u00e0 tout moment.                        <\/div>\r\n                    \r\n                    <div class=\"col-2\">\r\n                        <button type=\"submit\" value=\"Submit\" aria-label=\"Submit\" class=\"btn btn-secondary btn-icon\">\r\n                            <svg aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/layout\/chevron-right.svg\"><\/svg>\r\n                        <\/button>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <input type=\"hidden\" name=\"formSubscriptionRecaptchaToken\" data-fs=\"recaptcha-token\">\r\n                <input type=\"hidden\" name=\"customListID\" value=\"\">\r\n\r\n            <\/form>\r\n            <div data-fs=\"message-success\" style=\"display: none;\">\r\n                <p class=\"mb-0 mt-2 text-body-color\">\r\n                    Consultez votre bo\u00eete de r\u00e9ception chaque mois pour recevoir votre newsletter Mailgun !                <\/p>\r\n            <\/div>\r\n        <\/div>\r\n        <\/div>\r\n    <\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>Dans les applications e-commerce modernes, les emails transactionnels vont au-del\u00e0 des confirmations de commande et des mises \u00e0 jour d&rsquo;exp\u00e9dition. Ils r\u00e9agissent \u00e9galement au comportement des utilisatrices ; par exemple, si une utilisatrice ajoute des articles \u00e0 son panier mais ne compl\u00e8te pas l&rsquo;achat, vous pouvez envoyer un rappel, commun\u00e9ment appel\u00e9 notification de \u00ab panier [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":11750,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[19],"class_list":["post-13386","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-dev-life"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cr\u00e9er des sc\u00e9narios d&#039;emails transactionnels pour les messages de paniers abandonn\u00e9s<\/title>\n<meta name=\"description\" content=\"Apprenez \u00e0 envoyer des emails de panier abandonn\u00e9 efficaces \u00e0 l&#039;aide des API Mailgun pour g\u00e9rer et am\u00e9liorer vos conversions e-commerce.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cr\u00e9er des sc\u00e9narios d&#039;emails transactionnels pour les messages de paniers abandonn\u00e9s\" \/>\n<meta property=\"og:description\" content=\"Apprenez \u00e0 envoyer des emails de panier abandonn\u00e9 efficaces \u00e0 l&#039;aide des API Mailgun pour g\u00e9rer et am\u00e9liorer vos conversions e-commerce.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-15T10:51:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-25-at-3.37.12-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2466\" \/>\n\t<meta property=\"og:image:height\" content=\"1532\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/\",\"name\":\"Cr\u00e9er des sc\u00e9narios d'emails transactionnels pour les messages de paniers abandonn\u00e9s\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Screenshot-2025-08-25-at-3.37.12-PM.png\",\"datePublished\":\"2025-10-28T09:00:00+00:00\",\"dateModified\":\"2026-06-15T10:51:15+00:00\",\"description\":\"Apprenez \u00e0 envoyer des emails de panier abandonn\u00e9 efficaces \u00e0 l'aide des API Mailgun pour g\u00e9rer et am\u00e9liorer vos conversions e-commerce.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Screenshot-2025-08-25-at-3.37.12-PM.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Screenshot-2025-08-25-at-3.37.12-PM.png\",\"width\":2466,\"height\":1532},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cr\u00e9er des sc\u00e9narios d&#8217;emails transactionnels pour les notifications de paniers abandonn\u00e9s avec l&#8217;API de Mailgun\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Powerful Transactional Email APIs that enable you to send, receive, and track emails, built with developers in mind. Learn more today!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cr\u00e9er des sc\u00e9narios d'emails transactionnels pour les messages de paniers abandonn\u00e9s","description":"Apprenez \u00e0 envoyer des emails de panier abandonn\u00e9 efficaces \u00e0 l'aide des API Mailgun pour g\u00e9rer et am\u00e9liorer vos conversions e-commerce.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/","og_locale":"fr_FR","og_type":"article","og_title":"Cr\u00e9er des sc\u00e9narios d'emails transactionnels pour les messages de paniers abandonn\u00e9s","og_description":"Apprenez \u00e0 envoyer des emails de panier abandonn\u00e9 efficaces \u00e0 l'aide des API Mailgun pour g\u00e9rer et am\u00e9liorer vos conversions e-commerce.","og_url":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-06-15T10:51:15+00:00","og_image":[{"width":2466,"height":1532,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-25-at-3.37.12-PM.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/","url":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/","name":"Cr\u00e9er des sc\u00e9narios d'emails transactionnels pour les messages de paniers abandonn\u00e9s","isPartOf":{"@id":"https:\/\/www.mailgun.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-25-at-3.37.12-PM.png","datePublished":"2025-10-28T09:00:00+00:00","dateModified":"2026-06-15T10:51:15+00:00","description":"Apprenez \u00e0 envoyer des emails de panier abandonn\u00e9 efficaces \u00e0 l'aide des API Mailgun pour g\u00e9rer et am\u00e9liorer vos conversions e-commerce.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-25-at-3.37.12-PM.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-25-at-3.37.12-PM.png","width":2466,"height":1532},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-scenarios-d-emails-transactionnels-pour-les-notifications-de-paniers-abandonnes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/fr\/blog\/"},{"@type":"ListItem","position":3,"name":"Cr\u00e9er des sc\u00e9narios d&#8217;emails transactionnels pour les notifications de paniers abandonn\u00e9s avec l&#8217;API de Mailgun"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/fr\/#website","url":"https:\/\/www.mailgun.com\/fr\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Powerful Transactional Email APIs that enable you to send, receive, and track emails, built with developers in mind. Learn more today!","publisher":{"@id":"https:\/\/www.mailgun.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/fr\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/13386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/users\/11"}],"version-history":[{"count":2,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/13386\/revisions"}],"predecessor-version":[{"id":13988,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/13386\/revisions\/13988"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media\/11750"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media?parent=13386"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog_category?post=13386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}