Wiedervorabestellungsfunktion für abandoniertes Einkaufswagen mit Gmail und Google Sheets-Analyse
Fortgeschritten
Dies ist ein Social Media-Bereich Automatisierungsworkflow mit 13 Nodes. Hauptsächlich werden If, Set, Code, Wait, Gmail und andere Nodes verwendet. Wiederverkaufsfunktion für verlassene Warenkörbe mit Gmail und Google Sheets-Analyse
Voraussetzungen
- •Google-Konto + Gmail API-Anmeldedaten
- •HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (13)
Kategorie
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
"nodes": [
{
"id": "1",
"name": "Abandoned Cart Webhook-Trigger",
"type": "n8n-nodes-base.webhook",
"position": [
240,
300
],
"parameters": {
"path": "cart-abandoned",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"id": "2",
"name": "Notiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
180
],
"parameters": {
"width": 240,
"height": 160,
"content": "## Cart Recovery Config\n\n⚙️ **Customize these settings:**\n- Recovery sequence timing\n- Discount percentages\n- Email templates\n- Exclusion rules"
},
"typeVersion": 1
},
{
"id": "3",
"name": "Wiederherstellungseinstellungen",
"type": "n8n-nodes-base.set",
"position": [
440,
300
],
"parameters": {
"values": {
"number": [
{
"name": "firstDiscount",
"value": 10
},
{
"name": "secondDiscount",
"value": 15
},
{
"name": "finalDiscount",
"value": 20
}
],
"string": [
{
"name": "fromEmail",
"value": "sales@your-store.com"
},
{
"name": "baseUrl",
"value": "https://your-store.com"
}
]
}
},
"typeVersion": 1
},
{
"id": "4",
"name": "Warenkorb qualifizieren",
"type": "n8n-nodes-base.if",
"position": [
640,
300
],
"parameters": {
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.cart_value }}",
"rightValue": 50
},
{
"operator": {
"type": "string",
"operation": "isNotEmpty"
},
"leftValue": "={{ $json.customer_email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "5",
"name": "Wiederherstellungsdaten generieren",
"type": "n8n-nodes-base.code",
"position": [
840,
300
],
"parameters": {
"jsCode": "// Generate discount codes for recovery sequence\nconst cartId = $json.cart_id;\nconst customerEmail = $json.customer_email;\nconst timestamp = Date.now();\n\n// Create unique discount codes\nconst codes = {\n firstCode: `SAVE${$node['Recovery Settings'].json.firstDiscount}-${cartId.slice(-4)}`,\n secondCode: `SAVE${$node['Recovery Settings'].json.secondDiscount}-${cartId.slice(-4)}`,\n finalCode: `SAVE${$node['Recovery Settings'].json.finalDiscount}-${cartId.slice(-4)}`\n};\n\n// Calculate recovery schedule\nconst schedules = {\n firstEmail: new Date(timestamp + 1 * 60 * 60 * 1000).toISOString(), // 1 hour\n secondEmail: new Date(timestamp + 24 * 60 * 60 * 1000).toISOString(), // 24 hours\n finalEmail: new Date(timestamp + 72 * 60 * 60 * 1000).toISOString() // 72 hours\n};\n\nreturn {\n ...codes,\n ...schedules,\n cartData: $json,\n recoveryId: `recovery_${cartId}_${timestamp}`\n};"
},
"typeVersion": 1
},
{
"id": "6",
"name": "1 Stunde warten",
"type": "n8n-nodes-base.wait",
"position": [
1040,
200
],
"parameters": {
"unit": "hours",
"amount": 1
},
"typeVersion": 1
},
{
"id": "7",
"name": "Erste Wiederherstellungs-E-Mail senden",
"type": "n8n-nodes-base.gmail",
"position": [
1240,
200
],
"parameters": {
"sendTo": "={{ $node['Generate Recovery Data'].json.cartData.customer_email }}",
"message": "=<!DOCTYPE html>\n<html>\n<head>\n <style>\n body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background-color: #f8f9fa; }\n .container { max-width: 600px; margin: 0 auto; background: white; border-radius: 10px; padding: 30px; }\n .header { text-align: center; margin-bottom: 30px; }\n .product-item { border: 1px solid #eee; padding: 20px; margin: 10px 0; border-radius: 8px; }\n .cta-button { background: #007bff; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block; margin: 20px 0; }\n .discount { background: #28a745; color: white; padding: 10px; text-align: center; margin: 20px 0; border-radius: 5px; }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\">\n <h2>Your cart is waiting for you! 🛒</h2>\n <p>Hello {{ $node['Generate Recovery Data'].json.cartData.customer_name }},</p>\n <p>You left some items in your cart. Don't let them get away!</p>\n </div>\n \n {{#each $node['Generate Recovery Data'].json.cartData.items}}\n <div class=\"product-item\">\n <h3>{{ this.name }}</h3>\n <p>Price: {{ this.price }} €</p>\n <p>Quantity: {{ this.quantity }}</p>\n </div>\n {{/each}}\n \n <div class=\"discount\">\n <h3>🎉 Special offer - 10% discount!</h3>\n <p>Code: <strong>{{ $node['Generate Recovery Data'].json.firstCode }}</strong></p>\n </div>\n \n <div style=\"text-align: center;\">\n <a href=\"{{ $node['Recovery Settings'].json.baseUrl }}/cart/{{ $node['Generate Recovery Data'].json.cartData.cart_id }}\" class=\"cta-button\">\n Complete my order\n </a>\n </div>\n \n <p style=\"color: #666; font-size: 14px; margin-top: 30px;\">\n This offer expires in 24 hours. Hurry up!\n </p>\n </div>\n</body>\n</html>",
"options": {
"contentType": "html"
},
"subject": "You forgot something in your cart 🛒"
},
"typeVersion": 1
},
{
"id": "8",
"name": "23 weitere Stunden warten",
"type": "n8n-nodes-base.wait",
"position": [
1440,
200
],
"parameters": {
"unit": "hours",
"amount": 23
},
"typeVersion": 1
},
{
"id": "9",
"name": "Zweite Wiederherstellungs-E-Mail senden",
"type": "n8n-nodes-base.gmail",
"position": [
1640,
200
],
"parameters": {
"sendTo": "={{ $node['Generate Recovery Data'].json.cartData.customer_email }}",
"message": "=<!DOCTYPE html>\n<html>\n<head>\n <style>\n body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background-color: #f8f9fa; }\n .container { max-width: 600px; margin: 0 auto; background: white; border-radius: 10px; padding: 30px; }\n .header { text-align: center; margin-bottom: 30px; }\n .urgency { background: #dc3545; color: white; padding: 15px; text-align: center; margin: 20px 0; border-radius: 5px; }\n .cta-button { background: #28a745; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block; margin: 20px 0; }\n .discount { background: #ffc107; color: #212529; padding: 15px; text-align: center; margin: 20px 0; border-radius: 5px; }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\">\n <h2>🚨 Your cart expires soon!</h2>\n <p>Hello {{ $node['Generate Recovery Data'].json.cartData.customer_name }},</p>\n </div>\n \n <div class=\"urgency\">\n <h3>⏰ Only a few hours left!</h3>\n <p>Your cart will be automatically deleted soon</p>\n </div>\n \n <div class=\"discount\">\n <h3>🎁 Exceptional offer - 15% discount!</h3>\n <p>Code: <strong>{{ $node['Generate Recovery Data'].json.secondCode }}</strong></p>\n <p>Valid only for the next 24 hours</p>\n </div>\n \n <div style=\"text-align: center;\">\n <a href=\"{{ $node['Recovery Settings'].json.baseUrl }}/cart/{{ $node['Generate Recovery Data'].json.cartData.cart_id }}\" class=\"cta-button\">\n I'll recover my cart now\n </a>\n </div>\n \n <p style=\"color: #666; font-size: 14px; margin-top: 30px;\">\n Your cart total: {{ $node['Generate Recovery Data'].json.cartData.cart_value }} €\n </p>\n </div>\n</body>\n</html>",
"options": {
"contentType": "html"
},
"subject": "Last chance - Your discount is waiting! 💸"
},
"typeVersion": 1
},
{
"id": "10",
"name": "48 weitere Stunden warten",
"type": "n8n-nodes-base.wait",
"position": [
1840,
200
],
"parameters": {
"unit": "hours",
"amount": 48
},
"typeVersion": 1
},
{
"id": "11",
"name": "Letzte Wiederherstellungs-E-Mail senden",
"type": "n8n-nodes-base.gmail",
"position": [
2040,
200
],
"parameters": {
"sendTo": "={{ $node['Generate Recovery Data'].json.cartData.customer_email }}",
"message": "=<!DOCTYPE html>\n<html>\n<head>\n <style>\n body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background-color: #f8f9fa; }\n .container { max-width: 600px; margin: 0 auto; background: white; border-radius: 10px; padding: 30px; }\n .header { text-align: center; margin-bottom: 30px; }\n .final-offer { background: linear-gradient(45deg, #ff6b6b, #ffa500); color: white; padding: 20px; text-align: center; margin: 20px 0; border-radius: 10px; }\n .cta-button { background: #dc3545; color: white; padding: 20px 40px; text-decoration: none; border-radius: 5px; display: inline-block; margin: 20px 0; font-size: 18px; }\n .testimonial { background: #e9ecef; padding: 15px; margin: 20px 0; border-radius: 5px; font-style: italic; }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\">\n <h2>🔥 Final offer - Don't miss this chance!</h2>\n <p>{{ $node['Generate Recovery Data'].json.cartData.customer_name }}, this is really your last chance...</p>\n </div>\n \n <div class=\"final-offer\">\n <h2>🎯 EXCLUSIVE OFFER</h2>\n <h3>20% DISCOUNT</h3>\n <p>Code: <strong>{{ $node['Generate Recovery Data'].json.finalCode }}</strong></p>\n <p>⏰ Expires in 24 hours - Definitely!</p>\n </div>\n \n <div class=\"testimonial\">\n <p>\"I loved my purchases on this site! Fast delivery and quality products.\" - Sarah M.</p>\n </div>\n \n <div style=\"text-align: center;\">\n <a href=\"{{ $node['Recovery Settings'].json.baseUrl }}/cart/{{ $node['Generate Recovery Data'].json.cartData.cart_id }}\" class=\"cta-button\">\n I'll take advantage now!\n </a>\n </div>\n \n <p style=\"color: #666; font-size: 14px; margin-top: 30px;\">\n If you no longer want to receive these emails, <a href=\"#\">click here</a>.\n </p>\n </div>\n</body>\n</html>",
"options": {
"contentType": "html"
},
"subject": "Absolutely last chance - 20% discount! 🔥"
},
"typeVersion": 1
},
{
"id": "12",
"name": "Notiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1940,
60
],
"parameters": {
"width": 240,
"height": 160,
"content": "## Recovery Analytics\n\n📊 **Track performance:**\n- Recovery conversion rates\n- Revenue generated\n- Email open rates\n- Best performing sequences"
},
"typeVersion": 1
},
{
"id": "13",
"name": "Wiederherstellungsverfolgung starten",
"type": "n8n-nodes-base.googleSheets",
"position": [
1040,
400
],
"parameters": {
"values": {
"values": [
"={{ $node['Generate Recovery Data'].json.recoveryId }}",
"={{ $node['Generate Recovery Data'].json.cartData.customer_email }}",
"={{ $node['Generate Recovery Data'].json.cartData.cart_value }}",
"={{ new Date().toISOString() }}",
"sequence_started"
]
},
"resource": "sheet",
"operation": "appendRow",
"sheetName": "Cart Recovery Tracking",
"documentId": "your-google-sheet-id"
},
"typeVersion": 1
}
],
"connections": {
"3": {
"main": [
[
{
"node": "4",
"type": "main",
"index": 0
}
]
]
},
"4": {
"main": [
[
{
"node": "5",
"type": "main",
"index": 0
}
]
]
},
"5": {
"main": [
[
{
"node": "6",
"type": "main",
"index": 0
},
{
"node": "13",
"type": "main",
"index": 0
}
]
]
},
"6": {
"main": [
[
{
"node": "7",
"type": "main",
"index": 0
}
]
]
},
"7": {
"main": [
[
{
"node": "8",
"type": "main",
"index": 0
}
]
]
},
"8": {
"main": [
[
{
"node": "9",
"type": "main",
"index": 0
}
]
]
},
"9": {
"main": [
[
{
"node": "10",
"type": "main",
"index": 0
}
]
]
},
"10": {
"main": [
[
{
"node": "11",
"type": "main",
"index": 0
}
]
]
},
"Abandoned Cart Webhook": {
"main": [
[
{
"node": "3",
"type": "main",
"index": 0
}
]
]
}
}
}Häufig gestellte Fragen
Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Soziale Medien
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Automatisierung der Event-Registrierung und -Nachverfolgung mit Gmail-Erinnerungen und Google Tabellen
Automatisierung der Eventregistrierung und -Nachfassens mit Gmail-Erinnerungen und Google-Tabellen
If
Set
Code
+
If
Set
Code
14 NodesRodrigue
Soziale Medien
Management von Social-Media-Influencer-Kampagnen mit KI-Bewertung und Gmail-Promotion
Verwaltung von Social-Media-Influencer-Kampagnen mit KI-Bewertungen und Gmail-Promotion
If
Set
Code
+
If
Set
Code
15 NodesRodrigue
Soziale Medien
Automatisierung der Kandidatenbewertung mit GPT-4-Bewertung und Gmail-Benachrichtigung
Kandidatenbewertung mit GPT-4-Bewertung und Gmail-Benachrichtigungen automatisieren
If
Set
Code
+
If
Set
Code
12 NodesRodrigue
Personalwesen
Automatisierung des Lieferanten-Risikoscores
Automatisierung des Lieferanten-Risikoscores mit D&B, NewsAPI und Gmail-Erinnerungen
If
Set
Code
+
If
Set
Code
16 NodesRodrigue
Verschiedenes
KI-verfasste Pressemitteilungen und Materialien für HubSpot-Kontakte und SharePoint generieren
Erstelle zweisprachige Pressemitteilungen für HubSpot und SharePoint mit GPT-4o, KI-Bildern und -Videos
If
Set
Code
+
If
Set
Code
49 Nodesplemeo
Soziale Medien
Lead-Generierung und E-Mail-Arbeitsabläufe
Automatisierung der B2B-Lead-Generierung und E-Mail-Marketing mit Google Maps, SendGrid und KI
If
Set
Code
+
If
Set
Code
141 NodesEzema Kingsley Chibuzo
Lead-Generierung
Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes13
Kategorie1
Node-Typen8
Autor
Rodrigue
@gbadouExterne Links
Auf n8n.io ansehen →
Diesen Workflow teilen