{"id":13383,"date":"2025-10-28T09:00:00","date_gmt":"2025-10-28T09:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/"},"modified":"2026-04-30T04:27:16","modified_gmt":"2026-04-30T04:27:16","slug":"erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/","title":{"rendered":"Erstellen von Workflows f\u00fcr Transaktions-E-Mails bei Warenkorbabbr\u00fcchen mit der Mailgun-API"},"content":{"rendered":"\n<p>In modernen E-Commerce-Anwendungen gehen Transaktions-E-Mails \u00fcber Bestellbest\u00e4tigungen und Versandaktualisierungen hinaus. Sie reagieren auch auf das Verhalten der Nutzer. Wenn ein Nutzer beispielsweise Artikel in seinen Warenkorb legt, den Kauf aber nicht abschlie\u00dft, k\u00f6nnen Sie eine Erinnerung versenden, die gemeinhin als Benachrichtigung \u00fcber einen \u201eWarenkorbabbruch\u201c bekannt ist. Dies f\u00f6rdert nicht nur den Abschluss, sondern bietet auch einen hilfreichen Ber\u00fchrungspunkt f\u00fcr den Fall, dass der Nutzer w\u00e4hrend des Bezahlvorgangs auf Probleme st\u00f6\u00dft.<\/p>\n\n\n\n<p><br>In diesem Tutorial (Wissensbibliothek) erfahren Sie, wie Sie mithilfe der Mailgun-APIs eine E-Mail zu einem Warenkorbabbruch an Nutzer versenden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementierung von Workflows f\u00fcr Transaktions-E-Mails bei Warenkorbabbr\u00fcchen<\/h2>\n\n\n\n<p>Um Workflows f\u00fcr Transaktions-E-Mails bei Warenkorbabbr\u00fcchen zu implementieren, erstellen Sie eine einfache UI zur Simulation eines Warenkorbs und ein\u00a0<a href=\"https:\/\/flask.palletsprojects.com\/en\/stable\/\">Flask<\/a>\u00a0-Backend, um Warenkorbabbr\u00fcche zu verfolgen und Transaktions-E-Mails auszul\u00f6sen.<\/p>\n\n\n\n<p><br><strong>Bevor Sie beginnen, stellen Sie sicher, dass Sie \u00fcber Folgendes verf\u00fcgen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ein\u00a0<a href=\"https:\/\/signup.mailgun.com\/new\/signup\">Mailgun-Konto<\/a>\u00a0um E-Mails \u00fcber die Mailgun-API zu versenden. Wenn Sie noch kein Konto haben, folgen Sie dem\u00a0<a href=\"https:\/\/documentation.mailgun.com\/docs\/mailgun\/quickstart-guide\/quickstart\/\">leitfaden f\u00fcr den Schnelleinstieg<\/a>\u00a0um kostenlos eines einzurichten<\/li>\n\n\n\n<li><a href=\"https:\/\/www.python.org\/downloads\/\">Python<\/a>\u00a03.8 oder h\u00f6her auf Ihrem Computer installiert<\/li>\n\n\n\n<li>Einige Kenntnisse in HTML und JavaScript, um den UI-Code zu verstehen<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichten eines Mailgun-Kontos<\/h2>\n\n\n\n<p>Melden Sie sich zun\u00e4chst bei Ihrem Mailgun-Konto an und notieren Sie sich Ihre Absenderdomain im Mailgun-Dashboard. Wenn Sie ein Free-Abonnement nutzen, sehen Sie eine Sandbox-Domain, die sowohl f\u00fcr den API-Endpunkt als auch f\u00fcr die <code>\u201efrom\u201c<\/code>\u00a0-E-Mail-Adresse beim Versand von E-Mails verwendet wird. Die Sandbox-Domain hat folgendes Format:\u00a0<code>sandbox.mailgun.org<\/code>:<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/7IYAFRf.png\/de\" alt=\"Mailgun-Absenderdomain\"><br><\/p>\n\n\n\n<p><strong>Hinweis:<\/strong>\u00a0Wenn Sie E-Mails von Ihrer eigenen individualisierbaren Domain versenden m\u00f6chten, ben\u00f6tigen Sie ein kostenpflichtiges Mailgun-Abonnement. Das Free-Abonnement unterst\u00fctzt nur die Sandbox-Domain und begrenzt den Versand auf\u00a0<a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/217531258-Authorized-Recipients\">f\u00fcnf autorisierte Empf\u00e4nger<\/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\">Wenn Sie E-Mails von Ihrer eigenen individualisierbaren Domain versenden m\u00f6chten, ben\u00f6tigen Sie ein kostenpflichtiges Mailgun-Abonnement. Das Free-Abonnement unterst\u00fctzt nur die Sandbox-Domain und begrenzt den Versand auf <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/217531258-Authorized-Recipients\">\u00a0f\u00fcnf autorisierte Empf\u00e4nger.<\/a><\/p><\/div>\r\n    <\/div>\r\n\n\n\n<p>Als N\u00e4chstes m\u00fcssen Sie auf der Seite\u00a0<strong>API-Sicherheit<\/strong>\u00a0einen API-Schl\u00fcssel erstellen. Sie finden diese Option im Dropdown-Men\u00fc unter Ihrem Namen in der oberen rechten Ecke des Mailgun-Dashboards:<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/YEm9s1u.png\/de\" alt=\"Erstellen eines API-Schl\u00fcssels\"><br><\/p>\n\n\n\n<p>Sie verwenden diesen API-Schl\u00fcssel in Ihrer Flask-Anwendung, um Benachrichtigungen \u00fcber Warenkorbabbr\u00fcche \u00fcber die Mailgun-API zu versenden.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichten eines neuen Python-Projekts<\/h2>\n\n\n\n<p>Um ein neues Projekt einzurichten, \u00f6ffnen Sie ein Terminal in Ihrem bevorzugten Projektverzeichnis und f\u00fchren Sie die folgenden Befehle aus, um den erforderlichen Code \u2013 sowohl f\u00fcr die Benutzeroberfl\u00e4che als auch f\u00fcr das Backend \u2013 auf Ihren Computer herunterzuladen:<\/p>\n\n\n\n<p><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>Benennen Sie als N\u00e4chstes im Verzeichnis\u00a0<code>mailgun-abandoned-cart-notifications<\/code>\u00a0die Datei\u00a0<code>.env.example<\/code>\u00a0in\u00a0<code>.env<\/code>\u00a0um und aktualisieren Sie sie mit Ihren Mailgun-API-Kundenmeinungen:<br><code># Replace with your actual Mailgun API key and domain MAILGUN_API_KEY=\"YOUR-API-KEY\" MAILGUN_DOMAIN=\"YOUR-MAILGUN-DOMAIN\"<\/code><br><\/p>\n\n\n\n<p>Bevor Sie fortfahren, wird empfohlen, dass Sie eine neue\u00a0<a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\">virtuelle Umgebung<\/a>\u00a0erstellen und aktivieren, um Ihr Projekt zu isolieren und Abh\u00e4ngigkeitskonflikte zu vermeiden.<br>Sobald Ihre virtuelle Umgebung aktiv ist, installieren Sie die erforderlichen Abh\u00e4ngigkeiten:<br><code>pip install -r requirements.txt<\/code><br>Dadurch werden alle erforderlichen Pakete installiert, einschlie\u00dflich\u00a0<code>Flask<\/code>, dem leichtgewichtigen Web-Framework, auf dem das Backend ausgef\u00fchrt wird.<br>Nachdem die Installation abgeschlossen ist, starten Sie die Flask-Anwendung mit diesem Befehl:<br><code>python app.py<\/code><br>Die UI der Anwendung ist dann verf\u00fcgbar unter\u00a0<a href=\"http:\/\/localhost:5000\/\">http:\/\/localhost:5000\/<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erstellen der Warenkorbabbruch-Schnittstelle<\/h2>\n\n\n\n<p>Der Screenshot unten zeigt eine einfache E-Commerce-UI zur Simulation von Warenkorbabbruch-Szenarien. Oben in der Kopfzeile wird der Titel zusammen mit einem Nutzerprofil (das Name und E-Mail anzeigt) und einem Warenkorbsymbol angezeigt, das die Anzahl der Artikel im Warenkorb angibt. Es gibt vier Produktkarten, die Bilder, Namen, Preise und Beschreibungen pr\u00e4sentieren, und Nutzer k\u00f6nnen Mengen ausw\u00e4hlen, bevor sie Artikel mit dem Button\u00a0<strong>In den Warenkorb<\/strong>\u00a0hinzuf\u00fcgen. Unten links in den Einstellungen k\u00f6nnen Sie das Timeout f\u00fcr den Warenkorbabbruch (in Sekunden) konfigurieren und den Warenkorb bei Bedarf zur\u00fccksetzen. In der Realit\u00e4t w\u00fcrde das Timeout in Stunden gemessen und vom Backend verfolgt werden.<br>Sie k\u00f6nnen diese Benutzeroberfl\u00e4che verwenden, um ein Ereignis auszul\u00f6sen, wenn ein Nutzer Artikel in seinem Warenkorb bel\u00e4sst, ohne den Kauf abzuschlie\u00dfen:<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/c99b7OU.png\/de\" alt=\"Warenkorbabbruch-UI\"><br><\/p>\n\n\n\n<p>Den Code f\u00fcr diese Warenkorb-Benutzeroberfl\u00e4che finden Sie in\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>. Diese Datei hat zwei wichtige Abschnitte: die UI-Konfiguration und eine Funktion, um Daten zu Warenkorbabbr\u00fcchen an das Backend zu versenden.<\/p>\n\n\n\n<p><br>Suchen und bearbeiten Sie f\u00fcr die UI-Konfiguration\u00a0<code>USER_NAME<\/code>\u00a0und\u00a0<code>USER_EMAIL<\/code>\u00a0innerhalb des\u00a0<code><\/code>-Tags, um die korrekten Daten an Ihr Backend zu versenden. Diese beiden Parameter repr\u00e4sentieren den angemeldeten Nutzer in Ihrer E-Commerce-Anwendung:<\/p>\n\n\n\n<p><br><code>\/\/ Configuration: Replace these with your own values const USER_NAME = \"John Smith\"; const USER_EMAIL = \"john.smith@example.com\"; \/\/ Verified email for Mailgun sandbox account const BACKEND_URL = 'http:\/\/localhost:5000\/abandoned-cart'; \/\/ Update to your Flask API endpoint, if needed let ABANDONED_CART_TIMEOUT = 60; \/\/ Default timeout in seconds<\/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>Hinweis:\u00a0Wenn Sie das Free-Abonnement von Mailgun nutzen, stellen Sie sicher, dass\u00a0USER_EMAIL\u00a0eine der verifizierten Adressen in Ihrem Mailgun-Konto ist. Sie k\u00f6nnen die restlichen zwei Parameter unver\u00e4ndert lassen.<\/p><\/div>\r\n    <\/div>\r\n\n\n\n<p><br>Die folgende JavaScript-Funktion,\u00a0<code>sendToBackend(data)<\/code>, \u00fcbernimmt den Prozess des Versands von Details zum Warenkorbabbruch \u2013 wie Nutzerinformationen, Artikel im Warenkorb und den Gesamtwert \u2013 an das Backend, um eine Benachrichtigung auszul\u00f6sen:<\/p>\n\n\n\n<p><br><code>\/\/ Send data to backend function sendToBackend(data) { console.log('Sending abandoned cart data to backend...'); fetch(BACKEND_URL, { method: 'POST', headers: { 'Content-Type': 'application\/json', }, body: JSON.stringify(data) }) .then(response =&gt; { \/\/ Check if the response status is 200 (OK) if (response.status === 200) { return response.json(); } else { \/\/ Throw an error if the status is not 200 throw new Error(`HTTP error! Status: ${response.status}`); } }) .then(result =&gt; { console.log('Backend response:', result); alert('Abandoned cart notification sent successfully!'); resetCart(); }) .catch(error =&gt; { console.error('Error sending abandoned cart notification:', error); alert('Error sending abandoned cart notification. Check console for details.'); }); }<\/code><\/p>\n\n\n\n<p><br>Diese Funktion sendet zun\u00e4chst eine HTTP-Artikel-Anfrage (POST) an\u00a0<code>BACKEND_URL<\/code>\u00a0unter Verwendung des\u00a0<code>fetch<\/code>-Aufrufs, wodurch die Warenkorbdaten in einen JSON-Payload konvertiert werden.<br>Wenn der Server erfolgreich antwortet (HTTP\u00a0<code>200<\/code>), wird die Antwort verarbeitet und in der Konsole protokolliert, und ein Alert best\u00e4tigt, dass die Benachrichtigung \u00fcber den Warenkorbabbruch versendet wurde. Der Warenkorb wird dann zur\u00fcckgesetzt.<\/p>\n\n\n\n<p><br>Wenn die Anfrage fehlschl\u00e4gt \u2013 aufgrund von Netzwerkproblemen oder einem serverseitigen Problem (wie HTTP-<code>5XX<\/code>-Fehlern) \u2013, f\u00e4ngt die Funktion den Fehler ab, protokolliert ihn in der Konsole und benachrichtigt den Nutzer mit einem Alert, dass etwas schiefgelaufen ist. Auf diese Weise stellt die Funktion sicher, dass sowohl erfolgreiche als auch fehlgeschlagene Versuche, das Backend zu benachrichtigen, ordnungsgem\u00e4\u00df behandelt werden, sodass der Nutzer w\u00e4hrend des gesamten Prozesses auf dem Laufenden bleibt.<\/p>\n\n\n\n<p><br>Der verbleibende Code in\u00a0<code>shopping_cart.html<\/code>\u00a0\u00fcbernimmt das CSS-Styling f\u00fcr ein sauberes und optisch ansprechendes Layout, die JavaScript-Logik zur Berechnung des Gesamtwerts des Warenkorbs sowie die Verwaltung des Timers, um einen Warenkorbabbruch zu simulieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verarbeitung von Benachrichtigungen \u00fcber Warenkorbabbr\u00fcche im Backend<\/h2>\n\n\n\n<p><br>Wenn die UI Daten zu Warenkorbabbr\u00fcchen als Artikel an die\u00a0<code>BACKEND_URL<\/code>\u00a0sendet, verarbeitet die Flask-Anwendung (<a href=\"https:\/\/github.com\/manishh\/gifts-giveaways\/blob\/master\/python\/mailgun-abandoned-cart-notifications\/app.py\"><code>app.py<\/code><\/a>) diese mit der folgenden Funktion:<br><code>@app.route('\/abandoned-cart', methods=['POST']) def abandoned_cart(): \"\"\" Endpoint to receive abandoned cart data including user information. Sie versendet eine E-Mail-Benachrichtigung an den betreffenden Nutzer. \"\"\" try: # Get cart data from request cart_data = request.json # Extract user information user_info = cart_data.get('user', {}) user_email = user_info.get('email', 'unknown') # Log the received data logger.info(f\"Abandoned cart received from {user_email} at {datetime.datetime.now()}, Total items: {len(cart_data.get('items', []))}\") # Send email about the abandoned cart html_message = _generate_abandoned_cart_email(cart_data) _send_email(f\"{user_info.get('name', user_email)} \", \"Your cart is waiting...\", html_message) # Return success response return jsonify({ \"status\": \"success\", \"message\": f\"Abandoned cart notification sent to: {user_info.get('email')}\", \"timestamp\": datetime.datetime.now().isoformat(), }), 200 except Exception as e: logger.error(f\"Error processing abandoned cart: {str(e)}\") return jsonify({\"status\": \"error\", \"message\": str(e)}), 500<\/code><\/p>\n\n\n\n<p><br>Dieser API-Endpunkt (<code>\/abandoned-cart<\/code>) lauscht auf Artikel-Anfragen (POST), wenn ein Nutzer seinen Warenkorb verl\u00e4sst. Er extrahiert die Details zum Warenkorb aus dem JSON-Payload der Anfrage, ruft die E-Mail und den Namen des Nutzers ab und protokolliert das Ereignis zusammen mit dem Zeitstempel und der Anzahl der Artikel.<\/p>\n\n\n\n<p><br>Als N\u00e4chstes wird eine E-Mail generiert unter Verwendung von\u00a0<code>_generate_abandoned_cart_email(cart_data)<\/code>, wodurch die Details zum Warenkorb in eine saubere HTML-E-Mail-Vorlage konvertiert werden. Die E-Mail wird dann \u00fcber\u00a0<code>_send_email()<\/code>\u00a0an die\u00a0<code>user_email<\/code>\u00a0versendet, wobei der Betreff \u201eIhr Warenkorb wartet&#8230;\u201c verwendet wird, um den Nutzer an seinen ausstehenden Kauf (\u00dcber uns) zu erinnern.<br>Wenn dies erfolgreich war, gibt die Funktion eine JSON-Antwort zur\u00fcck, die best\u00e4tigt, dass die E-Mail versendet wurde. Wenn ein Fehler auftritt, wie z. B. ein Problem mit der Anfrage oder dem E-Mail-Service, wird der Fehler protokolliert und eine HTTP\u00a0<code>500 Internal Server Error<\/code>-Antwort zur\u00fcckgegeben, die die UI verwenden kann, um den Nutzer \u00fcber den Status der Benachrichtigung zu informieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Design der E-Mail-Vorlage<\/h2>\n\n\n\n<p>Erinnerungs-E-Mails bei Warenkorbabbr\u00fcchen m\u00fcssen nicht nur informativ, sondern auch optisch ansprechend sein. Eine gut gestaltete HTML-E-Mail mit Bildern pr\u00e4sentiert die Details zum Warenkorb klar und erh\u00f6ht die Chancen, dass der Nutzer zur\u00fcckkehrt, um seinen Kauf abzuschlie\u00dfen. Die Funktion\u00a0<code>_generate_abandoned_cart_email(...)<\/code>\u00a0k\u00fcmmert sich darum:<\/p>\n\n\n\n<p><br><code>def _generate_abandoned_cart_email(cart_data: Dict[str, Any]) -&gt; str: \"\"\" Generate an HTML email for an abandoned cart using the provided cart data. Args: cart_data: Dictionary containing cart information including user details and items Returns: HTML string for the email \"\"\" try: # Extract data with error handling user_name = cart_data.get('user', {}).get('name', 'Valued Customer') 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) # Format timestamp if available timestamp_str = cart_data.get('timestamp', '') timezone_offset = cart_data.get('timezoneOffset', 0) # Represent the user's time zone if timestamp_str: try: timestamp = datetime.datetime.fromisoformat(timestamp_str.replace('Z', '+00:00')) - datetime.timedelta(minutes=timezone_offset) abandonment_time = f\"on <b>{timestamp.strftime('%B %d at %I:%M %p')}<\/b>\" except (ValueError, TypeError): abandonment_time = 'recently' else: abandonment_time = 'recently' # Generate the HTML content with minimal, combined CSS html = f\"\"\"     \/* CSS styling here *\/    <div class=\"container\"> <div class=\"header\"> <h1>Ihr Warenkorb wartet!<\/h1> <\/div> <div class=\"content\"> <p>Hallo {first_name},<\/p> <p>Wir haben bemerkt, dass Sie {abandonment_time} einige Artikel in Ihrem Warenkorb gelassen haben. Keine Sorge, wir haben sie f\u00fcr Sie gespeichert!<\/p> <h2>Ihre Warenkorb-Artikel:<\/h2>\"\"\" # Add each item to the email for item in items: item_name = item.get('name', 'Product') 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\">Menge: {item_quantity}<\/p> <p style=\"font-weight:bold\">${item_price:.2f}<\/p> <\/div> <\/div>\"\"\" # Add total and call to action html += f\"\"\" <div class=\"total\">Gesamt: ${total_value:.2f}<\/div> <div style=\"text-align:center\"> <a href=\"#\" class=\"btn\">Kauf abschlie\u00dfen<\/a> <\/div> <p>Wenn Sie Fragen (\u00dcber uns) zu Ihrer Bestellung haben, z\u00f6gern Sie bitte nicht, in Kontakt mit unserem Kundenservice-Team zu treten.<\/p> <p>Vielen Dank f\u00fcr Ihren Einkauf bei uns!<\/p> <\/div> <div class=\"footer\"> <p>\u00a9 2025 Ihr Unternehmensname. Alle Rechte vorbehalten.<\/p> <\/div> <\/div>  \"\"\" return html except Exception as e: # Return a simple fallback email if anything goes wrong return \"\"\"   <h1>Ihr Warenkorb wartet!<\/h1> <p>Hallo,<\/p> <p>Sie haben Artikel in Ihrem Warenkorb. Klicken Sie unten, um Ihren Kauf abzuschlie\u00dfen!<\/p> <a href=\"#\" style=\"background:#eb5454;color:white;padding:10px 20px;text-decoration:none;border-radius:4px;font-weight:bold\">Kauf abschlie\u00dfen<\/a>  \"\"\"<\/code><\/p>\n\n\n\n<p>Diese Funktion erstellt eine HTML-E-Mail, die einen Nutzer (\u00dcber uns) an seinen abgebrochenen Warenkorb erinnert. Sie extrahiert zun\u00e4chst wichtige Details aus den bereitgestellten Daten, einschlie\u00dflich des Namens des Nutzers, der Warenkorb-Artikel und des Gesamtpreises. Wenn ein Zeitstempel verf\u00fcgbar ist, wird dieser in die Zeitzone des Nutzers konvertiert (da sich Server- und Client-Zeitzonen unterscheiden) und in einen benutzerfreundlichen Datums- und Zeitstring formatiert (wie \u201eam 25. M\u00e4rz um 15:49 Uhr\u201c). Andernfalls wird standardm\u00e4\u00dfig \u201ek\u00fcrzlich\u201c verwendet.<\/p>\n\n\n\n<p><br>Die E-Mail informiert den Nutzer dar\u00fcber, dass sein Warenkorb gespeichert wurde, und listet die zur\u00fcckgelassenen Artikel auf, einschlie\u00dflich Produktname, Menge, Preis, Beschreibung und eines Bildes. Der Gesamtwert des Warenkorbs wird gut sichtbar angezeigt, gefolgt von einem Button\u00a0<strong>Kauf abschlie\u00dfen<\/strong>, um den Nutzer zu ermutigen, zur\u00fcckzukehren und den Bezahlvorgang abzuschlie\u00dfen.<br>Wenn ein Fehler auftritt, z. B. fehlende Daten oder Formatierungsprobleme, greift die Funktion auf eine einfache E-Mail mit einer Basic-Nachricht und einem Kauf-Link zur\u00fcck. Dadurch wird sichergestellt, dass Nutzer selbst dann eine Erinnerung zum Abschluss ihrer Transaktion erhalten, wenn die detaillierte Version fehlschl\u00e4gt.<\/p>\n\n\n\n<p><\/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>Pro-Tipp:<\/b>\u00a0Mailgun bietet vorgefertigte\u00a0E-Mail-Vorlagen\u00a0und einen intuitiven visuellen Builder zum Erstellen sch\u00f6ner, responsiver E-Mails, ohne eine einzige Zeile Code schreiben zu m\u00fcssen.<\/div>\r\n    <\/div>\r\n\n\n\n<p>Navigieren Sie in Ihrem Mailgun-Konto zu\u00a0<strong>Mailgun Send &gt; Versand &gt; Vorlagen<\/strong>, um Ihre eigenen E-Mail-Vorlagen zu designen:<br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/rJ9PTpE.png\" alt=\"E-Mail-Vorlagen\"><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementierung der E-Mail-Versand-Funktionalit\u00e4t mit der Mailgun-API<\/h2>\n\n\n\n<p><br>Sobald der E-Mail-Inhalt generiert ist, muss er zuverl\u00e4ssig zugestellt werden. Die Funktion\u00a0<code>_send_email(...)<\/code>\u00a0\u00fcbernimmt den Versand von Benachrichtigungen \u00fcber Warenkorbabbr\u00fcche \u00fcber die Mailgun-API:<\/p>\n\n\n\n<p><br><code>def _send_email(to_address: str, subject: str, html_message: str): \"\"\" Sends a single email to the given email address using Mailgun API. :param to_address: :param subject: :param message: \"\"\" api_key = os.getenv(\"MAILGUN_API_KEY\") # Get API key from the `.env` file 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: # Success logging.info(f\"Successfully sent an email to '{to_address}' via Mailgun API.\") else: # Error raise RuntimeError(f\"Could not send the email, reason: {resp.text}\")<\/code><\/p>\n\n\n\n<p><br>Diese Funktion liest den\u00a0<code>MAILGUN_API_KEY<\/code>\u00a0und versendet dann eine E-Mail \u00fcber die Mailgun-API mittels einer HTTP-Artikel-Anfrage (POST). Die Anfrage enth\u00e4lt Essential-E-Mail-Details, einschlie\u00dflich Absenderadressen, Empf\u00e4ngeradresse, Betreff und des durch die Funktion\u00a0<code>_generate_abandoned_cart_email(...)<\/code>\u00a0generierten HTML-Inhalts.<br>Wenn die Anfrage erfolgreich ist (<code>resp.status_code == 200<\/code>), wird eine Erfolgs-Nachricht protokolliert. Andernfalls wird eine Ausnahme mit den Antwort-Details ausgel\u00f6st.<br>Es ist wichtig zu verstehen, dass\u00a0<code>_send_email(...)<\/code>\u00a0Fehler absichtlich nicht behandelt und dies der aufrufenden Funktion (<code>abandoned_cart()<\/code>, die den Endpunkt\u00a0<code>\/abandoned-cart<\/code>\u00a0bedient) \u00fcberl\u00e4sst, damit diese Ausnahmen abfangen und eine entsprechende HTTP-Antwort zur\u00fcckgeben kann. Wenn die E-Mail erfolgreich versendet wurde, gibt\u00a0<code>abandoned_cart()<\/code>\u00a0eine HTTP-<code>200<\/code>-Antwort zur\u00fcck, die best\u00e4tigt, dass die Benachrichtigung versendet wurde. Wenn ein Fehler auftritt, wie z. B. ein ung\u00fcltiger API-Schl\u00fcssel oder ein Netzwerkausfall, wird eine HTTP-<code>500<\/code>-Antwort zur\u00fcckgegeben, um sicherzustellen, dass die Benutzeroberfl\u00e4che \u00fcber das Problem informiert wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testen des Workflows<\/h2>\n\n\n\n<p>Nachdem Sie nun alle wichtigen Komponenten kennengelernt haben, ist es an der Zeit, den Workflow f\u00fcr E-Mails bei Warenkorbabbr\u00fcchen von Anfang bis Ende zu testen.<br>Stellen Sie zun\u00e4chst sicher, dass Ihr Flask-Server l\u00e4uft und die Benutzeroberfl\u00e4che in Ihrem Browser zug\u00e4nglich ist unter\u00a0<a href=\"http:\/\/localhost:5000\/\">http:\/\/localhost:5000\/<\/a>. Sie k\u00f6nnen das Timeout f\u00fcr den Warenkorbabbruch in den Einstellungen unten links auf der Seite nach Bedarf anpassen.<\/p>\n\n\n\n<p><br>F\u00fcgen Sie als N\u00e4chstes einige Artikel zu Ihrem Warenkorb hinzu. Jedes Mal, wenn Sie einen Artikel hinzuf\u00fcgen, wird der Countdown-Timer des Warenkorbs zur\u00fcckgesetzt und beginnt von vorn. Wenn Sie fertig sind, klicken Sie auf das Warenkorbsymbol, um das Slide-out-Panel anzuzeigen, in dem die ausgew\u00e4hlten Produkte, deren Preise und der Button\u00a0<strong>Zur Kasse gehen<\/strong>\u00a0angezeigt werden:<\/p>\n\n\n\n<p><br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/Qos5lQa.png\" alt=\"Triggering an abandoned cart\"><br><\/p>\n\n\n\n<p>Anstatt mit dem Bezahlvorgang fortzufahren, lassen Sie den Timer seinen Countdown beenden. Sobald der Countdown null erreicht, sollte auf der Benutzeroberfl\u00e4che ein Alert erscheinen, der best\u00e4tigt, dass die Benachrichtigung \u00fcber den Warenkorbabbruch versendet wurde. Die Alert-Nachricht sollte lauten:<br><code>Abandoned cart notification sent successfully!<\/code><\/p>\n\n\n\n<p><br>Gleichzeitig sollte das Terminal Ihrer Flask-App solche Nachrichten protokollieren:<br><code>INFO:__main__:Abandoned cart received from  at 2025-03-24 14:02:00.077949, Total items: 3 INFO:root:Successfully sent an email to 'Name ' via Mailgun API.<\/code><\/p>\n\n\n\n<p><br>\u00dcberpr\u00fcfen Sie abschlie\u00dfend Ihren Posteingang auf die E-Mail zum Warenkorbabbruch. Wenn alles richtig funktioniert hat, sollten Sie diese Nachricht erhalten:<\/p>\n\n\n\n<p><br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/Jd0ferZ.png\" alt=\"Abandoned cart notification email\"><\/p>\n\n\n\n<p><br><strong>Hinweis:<\/strong>\u00a0Wenn Sie das Free-Abonnement von Mailgun nutzen, landet die E-Mail m\u00f6glicherweise im Spam-Ordner.<\/p>\n\n\n\n<p><br>Herzlichen Gl\u00fcckwunsch! Sie haben den Workflow zur E-Mail-Benachrichtigung bei Warenkorbabbr\u00fcchen mithilfe der Mailgun-API erfolgreich implementiert und getestet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00dcberwachung und Verwaltung von E-Mails<\/h2>\n\n\n\n<p>Sobald Ihre E-Mails zu Warenkorbabbr\u00fcchen versendet werden, ist es wichtig, deren Zustellung zu \u00fcberwachen, die Interaktion zu verfolgen und Ausf\u00e4lle effektiv zu behandeln. Mailgun bietet integrierte Tools zur Kampagnen\u00fcbersicht, um versendete E-Mails, \u00d6ffnungsraten und Ausf\u00e4lle zu \u00fcberwachen.<\/p>\n\n\n\n<p><br>Um auf diese Ressourcen zuzugreifen, navigieren Sie in Ihrem Mailgun-Dashboard zu\u00a0<strong>Mailgun Send &gt; Kampagnen\u00fcbersicht &gt; Metriken<\/strong>:<\/p>\n\n\n\n<p><br><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/J71wf64.png\" alt=\"Mailgun email monitoring\"><br><\/p>\n\n\n\n<p>Hier finden Sie eine grafische Aufschl\u00fcsselung der wichtigsten E-Mail-Statistiken, wie z. B.:<br><strong>Gesendete Anzahl:<\/strong>\u00a0Gesamtanzahl der versuchten E-Mails<br><strong>Zugestellte Anzahl:<\/strong>\u00a0E-Mails, die erfolgreich von Empf\u00e4ngern empfangen wurden<br><strong>Ge\u00f6ffnete Anzahl:<\/strong>\u00a0Anzahl der E-Mails, die von Empf\u00e4ngern ge\u00f6ffnet wurden (wenn das Tracking der \u00d6ffnungsraten aktiviert ist)<br><strong>Fehlgeschlagene Anzahl:<\/strong>\u00a0E-Mails, die aufgrund von Problemen wie ung\u00fcltigen Adressen oder Spamfiltern fehlgeschlagen sind<\/p>\n\n\n\n<p><br>F\u00fcr eine tiefergehende Analyse bietet der Tab\u00a0<strong>Protokolle<\/strong>\u00a0detaillierte Aufzeichnungen \u00fcber den Status jeder E-Mail, w\u00e4hrend der Tab\u00a0<strong>Bounce-Klassifizierung<\/strong>\u00a0Hilfe bei der Diagnose von Fehlern bietet.<br>Hohe Bounce-Raten k\u00f6nnen sich negativ auf Ihre E-Mail-Zustellbarkeit auswirken. Um Bounces zu reduzieren, \u00fcberpr\u00fcfen Sie regelm\u00e4\u00dfig den Tab\u00a0<strong>Bounce-Klassifizierung<\/strong>\u00a0in Mailgun, entfernen Sie ung\u00fcltige E-Mails und verwenden Sie Unterdr\u00fcckungslisten, um ein erneutes Versenden an gebouncte Adressen zu vermeiden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenfassung<\/h2>\n\n\n\n<p>In diesem Tutorial (Wissensbibliothek) haben Sie erfahren, wie Sie mit Mailgun einen E-Mail-Workflow f\u00fcr Warenkorbabbr\u00fcche implementieren. Der Prozess umfasste den Aufbau einer einfachen Benutzeroberfl\u00e4che zur Simulation einer E-Commerce-Website, das Versenden von Warenkorbdaten an das Backend, deren Verarbeitung mit Flask, die Generierung von E-Mail-Vorlagen, den Versand von Benachrichtigungen \u00fcber die Mailgun-API und das Verfolgen von Zustellungsmetriken. Transaktions-E-Mails wie diese bieten Hilfe dabei, verlorene Verk\u00e4ufe zur\u00fcckzugewinnen und die Kundeninteraktion zu verbessern.<\/p>\n\n\n\n<p><br>Sie finden den gesamten Code f\u00fcr dieses Tutorial (Wissensbibliothek) in\u00a0<a href=\"https:\/\/github.com\/manishh\/gifts-giveaways\/tree\/master\/python\/mailgun-abandoned-cart-notifications\">diesem GitHub-Repository<\/a>.<\/p>\n\n\n\n<p><br>Jetzt k\u00f6nnen Sie dieses Wissen in die Tat umsetzen \u2013 integrieren Sie Mailgun in Ihre Projekte und beginnen Sie mit der Nutzung von Transaktions-E-Mails, um das Nutzererlebnis zu verbessern.\u00a0Mehr entdecken <a href=\"https:\/\/www.mailgun.com\/de\/blog\/email\/transaktions-html-e-mail-vorlagen\/\">Vorlagen f\u00fcr Transaktions-E-Mails<\/a> und <a href=\"https:\/\/signup.mailgun.com\/new\/signup\">die Mailgun-API<\/a>\u00a0heute noch kostenlos ausprobieren!<\/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                    Halten Sie mich auf dem Laufenden! Erhalten Sie jede Woche gro\u00dfartige Ressourcen in Ihrem Posteingang.                <\/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-5028\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"terms\">\r\n                                    <label for=\"formSubscriptionAcceptance-terms-5028\" class=\"form-check-label text-body-color\">\r\n                                        Ich habe die Servicebedingungen gelesen und stimme ihnen zu.                                        <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-7102\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"privacy\">\r\n                                    <label for=\"formSubscriptionAcceptance-privacy-7102\" class=\"form-check-label text-body-color\">\r\n                                        Ich habe die Datenschutzerkl\u00e4rung gelesen und bin damit einverstanden.                                        <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                            Senden Sie mir den Mailgun-Newsletter. Ich stimme ausdr\u00fccklich dem Empfang des Newsletters zu und wei\u00df, dass ich mich jederzeit problemlos wieder abmelden kann.                        <\/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\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                    \u00dcberpr\u00fcfen Sie monatlich Ihren Posteingang f\u00fcr Ihren Mailgun Newsletter!                <\/p>\r\n            <\/div>\r\n        <\/div>\r\n        <\/div>\r\n    <\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>In modernen E-Commerce-Anwendungen gehen Transaktions-E-Mails \u00fcber Bestellbest\u00e4tigungen und Versandaktualisierungen hinaus. Sie reagieren auch auf das Verhalten der Nutzer. Wenn ein Nutzer beispielsweise Artikel in seinen Warenkorb legt, den Kauf aber nicht abschlie\u00dft, k\u00f6nnen Sie eine Erinnerung versenden, die gemeinhin als Benachrichtigung \u00fcber einen \u201eWarenkorbabbruch\u201c bekannt ist. Dies f\u00f6rdert nicht nur den Abschluss, sondern bietet auch [&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-13383","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.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Build Transactional Email Workflows for Abandoned Cart Messages<\/title>\n<meta name=\"description\" content=\"Learn how to send effective abandoned cart emails using Mailgun APIs to manage and enhance your ecommerce conversions.\" \/>\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\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build Transactional Email Workflows for Abandoned Cart Messages\" \/>\n<meta property=\"og:description\" content=\"Learn how to send effective abandoned cart emails using Mailgun APIs to manage and enhance your ecommerce conversions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-30T04:27:16+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\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/\",\"name\":\"Build Transactional Email Workflows for Abandoned Cart Messages\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/#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-04-30T04:27:16+00:00\",\"description\":\"Learn how to send effective abandoned cart emails using Mailgun APIs to manage and enhance your ecommerce conversions.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/#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\\\/de\\\/blog\\\/dev-life\\\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Erstellen von Workflows f\u00fcr Transaktions-E-Mails bei Warenkorbabbr\u00fcchen mit der Mailgun-API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\",\"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\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#\\\/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\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Build Transactional Email Workflows for Abandoned Cart Messages","description":"Learn how to send effective abandoned cart emails using Mailgun APIs to manage and enhance your ecommerce conversions.","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\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/","og_locale":"de_DE","og_type":"article","og_title":"Build Transactional Email Workflows for Abandoned Cart Messages","og_description":"Learn how to send effective abandoned cart emails using Mailgun APIs to manage and enhance your ecommerce conversions.","og_url":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-04-30T04:27:16+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\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/","url":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/","name":"Build Transactional Email Workflows for Abandoned Cart Messages","isPartOf":{"@id":"https:\/\/www.mailgun.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/#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-04-30T04:27:16+00:00","description":"Learn how to send effective abandoned cart emails using Mailgun APIs to manage and enhance your ecommerce conversions.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/#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\/de\/blog\/dev-life\/erstellen-von-transaktions-e-mail-workflows-fuer-warenkorbabbruch-benachrichtigungen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/de\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/de\/blog\/"},{"@type":"ListItem","position":3,"name":"Erstellen von Workflows f\u00fcr Transaktions-E-Mails bei Warenkorbabbr\u00fcchen mit der Mailgun-API"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/de\/#website","url":"https:\/\/www.mailgun.com\/de\/","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\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/de\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mailgun.com\/de\/#\/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\/de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/13383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/users\/11"}],"version-history":[{"count":0,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/13383\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/media\/11750"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/media?parent=13383"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog_category?post=13383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}