This workflow corresponds to n8n.io template #17423 — we link there as the canonical source.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "aXu7qeHsbXYdOEIf",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "FFT Shop - Shippment Send email",
"tags": [],
"nodes": [
{
"id": "eeecc061-53c4-4a09-bd96-48685550782f",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
352,
144
],
"parameters": {},
"typeVersion": 1
},
{
"id": "bf9af0c2-803f-44be-b596-f81cc4672634",
"name": "Check If Data is Valid",
"type": "n8n-nodes-base.if",
"position": [
-112,
-48
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b66ffd37-c7a6-4d74-b9ae-82b28a99ce1f",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.payload.customAttributes.salesSource }}",
"rightValue": "FFT_Shop"
},
{
"id": "54eb280c-d02a-4a94-9300-ee7b5c689aeb",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.payload.recipientAddress.email }}",
"rightValue": ""
},
{
"id": "cc02845d-80d5-4b1e-b318-a760a2630276",
"operator": {
"type": "string",
"operation": "regex"
},
"leftValue": "={{ $json.payload.recipientAddress.email }}",
"rightValue": "^[^@]+@[^@]+\\.[^@]+$"
},
{
"id": "44eb36ff-803b-45a5-a599-7f0beab886ea",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.payload.channel }}",
"rightValue": "DELIVERY"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "8062e7dd-0888-43c4-9d71-57c93faa26a3",
"name": "Select Language",
"type": "n8n-nodes-base.switch",
"position": [
544,
-160
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "en_US",
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9e0870e1-5355-4af0-8142-0116a8b2db9a",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Handoverjob Handed Over').item.json.payload.customAttributes.shopLanguage }}",
"rightValue": "en_US"
}
]
},
"renameOutput": true
},
{
"outputKey": "de_DE",
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2a9c06b3-5a03-4c60-a755-3c3e2287523a",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Handoverjob Handed Over').item.json.payload.customAttributes.shopLanguage }}",
"rightValue": "de_DE"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.4
},
{
"id": "abe4c075-e8cb-49ac-a111-9aeac6ce2712",
"name": "Handoverjob Handed Over",
"type": "@fulfillmenttools/n8n-nodes-fulfillmenttools.fulfillmenttoolsTrigger",
"position": [
-320,
-48
],
"parameters": {
"event": "HANDOVERJOB_HANDED_OVER",
"subscriptionName": "n8n Shop Shippment Send"
},
"credentials": {
"fulfillmenttoolsApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f298b2d3-02d9-4330-bd09-bfbbc2199757",
"name": "Get used carrier",
"type": "@fulfillmenttools/n8n-nodes-fulfillmenttools.fulfillmenttools",
"position": [
352,
-160
],
"parameters": {
"resource": "carrier",
"carrierId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.payload.carrierRef }}"
},
"operation": "get"
},
"credentials": {
"fulfillmenttoolsApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "730dc52d-7d2b-40da-82d8-5fce507f1cac",
"name": "Send shippment email english",
"type": "n8n-nodes-base.gmail",
"position": [
1056,
-288
],
"parameters": {
"sendTo": "={{ $('Handoverjob Handed Over').item.json.payload.recipientAddress.email }}",
"message": "=<!DOCTYPE html><html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\"><head>\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\">\n<meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\">\n<title>Order Shipped | fulfillmenttools Shop</title>\n<link href=\"https://fonts.googleapis.com/css2?family=Manrope:wght@400;700;800&family=Inter:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n<style type=\"text/css\">\nbody, table, td, a { -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }\ntable, td { mso-table-lspace: 0pt; mso-table-rspace: 0pt; }\nimg { -ms-interpolation-mode: bicubic; border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; }\ntable { border-collapse: collapse !important; }\nbody { margin: 0 !important; padding: 0 !important; width: 100% !important; background-color: #f3faff; }\na[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }\n</style></head>\n<body style=\"margin: 0; padding: 0; background-color: #f3faff; font-family: 'Inter', Helvetica, Arial, sans-serif;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color:#f3faff;\"><tbody><tr>\n<td align=\"center\" style=\"padding: 40px 10px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px;\"><tbody>\n<tr><td align=\"left\" style=\"padding-bottom: 40px;\">\n<h1 style=\"margin: 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 32px; font-weight: 800; line-height: 40px; color: #071e27; letter-spacing: -0.02em;\">Your order is on its way, Julian!</h1>\n<p style=\"margin: 20px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; color: #414754;\">Order {{ $('Handoverjob Handed Over').item.json.payload.tenantOrderId }} has left our fulfillment center and is now with the carrier.</p></td></tr><tr><td style=\"padding-bottom: 32px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px; background-color: #ffffff; border-radius: 8px; border: 1px solid #dbf1fe;\"><tbody><tr><td style=\"padding: 24px;\">\n<p style=\"margin: 0 0 20px 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #727785;\">Tracking</p>\n<p style=\"margin: 0 0 4px 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px; color: #414754;\">Tracking Number</p><p style=\"margin: 0 0 20px 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #071e27;\">{{ $('Handoverjob Handed Over').item.json.payload.carrierTrackingNumber }}</p><p style=\"margin: 0 0 4px 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px; color: #414754;\">Carrier</p><p style=\"margin: 0 0 20px 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #071e27;\">{{ $('Get used carrier').item.json.name }}</p>\n</td></tr></tbody></table></td></tr><tr><td style=\"padding-bottom: 32px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px;background:#ffffff;border:1px solid #dbf1fe;border-radius:8px;\"><tbody><tr><td style=\"padding:24px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"552\" style=\"width:552px;\"><tbody><tr><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#2b5ab5;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">Processing</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#2b5ab5;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">Handover</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#2b5ab5;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#2b5ab5;\">Shipped</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#c1c6d6;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">Out for Delivery</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#c1c6d6;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">Delivered</p></td></tr></tbody></table>\n</td></tr></tbody></table></td></tr><tr><td style=\"padding-bottom: 32px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px; background-color: #ffffff; border: 1px solid #dbf1fe; border-radius: 8px;\"><tbody>\n<tr><td style=\"background-color: #cfe6f2; padding: 12px 24px;\"><p style=\"margin: 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #414754;\">Order Items</p></td></tr>\n\n{{ $('Handoverjob Handed Over').item.json.payload.handoverJobLineItems.map(item => `<tr>\n<td style=\"padding: 24px; border-bottom: 1px solid #dbf1fe;\" class=\"\">\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n<tbody><tr>\n<td valign=\"top\" width=\"80\">\n<img alt=\"${item.article.title}\" src=\"${item.article.imageUrl}\" style=\"display: block; border-radius: 4px; border: 1px solid #dbf1fe;\" width=\"80\">\n</td>\n<td style=\"padding-left: 20px;\" valign=\"top\" class=\"\">\n<p style=\"margin: 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #071e27;\" class=\"\">${item.article.title}</p>\n<p style=\"margin: 4px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 13px; color: #414754;\" class=\"\">Menge: 1</p>\n<p style=\"margin: 4px 0 0 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 700; color: #071e27;\" class=\"\">\n\n${Intl.NumberFormat('en-US', { style: 'currency', currency: item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'currency').value, minimumFractionDigits: item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'decimalPlaces').value, maximumFractionDigits: item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'decimalPlaces').value }).format(item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'value').value / 10 ** item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'decimalPlaces').value)}\n\n</p>\n</td>\n</tr>\n</tbody></table>\n</td>\n</tr>\n`).join('') }}\n\n</td></tr><tr><td align=\"center\" style=\"padding-top: 8px; padding-bottom: 8px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td align=\"center\" style=\"border-radius: 50px; background-color: #2b5ab5;\">\n<a href=\"#\" style=\"font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #ffffff; text-decoration: none; padding: 18px 48px; display: inline-block;\" target=\"_blank\">Track Shipment</a>\n</td></tr></tbody></table>\n<p style=\"margin: 16px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 13px; font-style: italic; color: #414754;\">Estimated arrival: October 29 - October 31</p>\n</td></tr>\n<tr><td style=\"padding-top: 80px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px;border-top: 1px solid #dbf1fe;\"><tbody><tr>\n<td valign=\"top\" width=\"300\" style=\"width:300px;padding-top:40px;\">\n<p style=\"margin: 0px; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 20px; font-weight: 800; color: #071e27; letter-spacing: -0.02em;\">fulfillmenttools Shop</p>\n<p style=\"margin: 12px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px; line-height: 18px; color: #414754;\">Curating architectural excellence and premium living essentials since 2012. Our sanctuary is your source for high-end design.</p>\n</td>\n<td valign=\"top\" width=\"150\" style=\"width:150px;padding-top:40px;\">\n<p style=\"margin: 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #071e27;\">Support</p>\n<p style=\"margin: 12px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px;\"><a href=\"#\" style=\"color: #414754; text-decoration: none;\">Help Center</a><br><a href=\"#\" style=\"color: #414754; text-decoration: none;\">Shipping Policy</a></p>\n</td>\n<td valign=\"top\" width=\"150\" style=\"width:150px;padding-top:40px;\">\n<p style=\"margin: 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #071e27;\">Contact</p>\n<p style=\"margin: 12px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px;\"><a href=\"mailto:shop@fulfillmenttools.com\" style=\"color: #414754; text-decoration: none;\">Concierge Email</a><br><a href=\"#\" style=\"color: #414754; text-decoration: none;\">Live Chat</a></p>\n</td></tr>\n<tr><td align=\"center\" colspan=\"3\" style=\"padding-top: 40px;\"><p style=\"margin: 0px; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 10px; color: #727785; text-transform: uppercase; letter-spacing: 0.1em;\">\u00a9 2023 FULFILLMENTTOOLS SHOP. ALL RIGHTS RESERVED.</p></td></tr>\n</tbody></table>\n</td></tr>\n</tbody></table>\n</td></tr></tbody></table>\n</body></html>",
"options": {},
"subject": "=Your Order {{ $('Handoverjob Handed Over').item.json.payload.tenantOrderId }} at fulfillmenttools Shop was send"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "c91c4a48-d86e-462f-9cc2-1b9d772a9ad4",
"name": "Send shippment email german",
"type": "n8n-nodes-base.gmail",
"position": [
1056,
-64
],
"parameters": {
"sendTo": "={{ $('Handoverjob Handed Over').item.json.payload.recipientAddress.email }}",
"message": "=<!DOCTYPE html><html lang=\"de\" xmlns=\"http://www.w3.org/1999/xhtml\"><head>\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\">\n<meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\">\n<title>Bestellung versandt | fulfillmenttools Shop</title>\n<link href=\"https://fonts.googleapis.com/css2?family=Manrope:wght@400;700;800&family=Inter:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n<style type=\"text/css\">\nbody, table, td, a { -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }\ntable, td { mso-table-lspace: 0pt; mso-table-rspace: 0pt; }\nimg { -ms-interpolation-mode: bicubic; border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; }\ntable { border-collapse: collapse !important; }\nbody { margin: 0 !important; padding: 0 !important; width: 100% !important; background-color: #f3faff; }\na[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; }\n</style></head>\n<body style=\"margin: 0; padding: 0; background-color: #f3faff; font-family: 'Inter', Helvetica, Arial, sans-serif;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color:#f3faff;\"><tbody><tr>\n<td align=\"center\" style=\"padding: 40px 10px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px;\"><tbody>\n<tr><td align=\"left\" style=\"padding-bottom: 40px;\">\n<h1 style=\"margin: 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 32px; font-weight: 800; line-height: 40px; color: #071e27; letter-spacing: -0.02em;\">Ihre Bestellung ist unterwegs, {{ $('Handoverjob Handed Over').item.json.payload.recipientAddress.firstName }}!</h1>\n<p style=\"margin: 20px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 16px; line-height: 24px; color: #414754;\">Bestellung {{ $('Handoverjob Handed Over').item.json.payload.tenantOrderId }} hat unser Fulfillment-Center verlassen und ist nun beim Versanddienstleister.</p></td></tr><tr><td style=\"padding-bottom: 32px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px; background-color: #ffffff; border-radius: 8px; border: 1px solid #dbf1fe;\"><tbody><tr><td style=\"padding: 24px;\">\n<p style=\"margin: 0 0 20px 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #727785;\">Sendungsverfolgung</p>\n<p style=\"margin: 0 0 4px 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px; color: #414754;\">Sendungsnummer</p><p style=\"margin: 0 0 20px 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #071e27;\">{{ $('Handoverjob Handed Over').item.json.payload.carrierTrackingNumber }}</p><p style=\"margin: 0 0 4px 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px; color: #414754;\">Versanddienstleister</p><p style=\"margin: 0 0 20px 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #071e27;\">{{ $('Get used carrier').item.json.name }}</p>\n</td></tr></tbody></table></td></tr><tr><td style=\"padding-bottom: 32px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px;background:#ffffff;border:1px solid #dbf1fe;border-radius:8px;\"><tbody><tr><td style=\"padding:24px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"552\" style=\"width:552px;\"><tbody><tr><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#2b5ab5;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">In Arbeit</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#2b5ab5;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">\u00dcbergabe</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#2b5ab5;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#2b5ab5;\">Versandt</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#c1c6d6;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">In Zustellung</p></td><td align=\"center\" valign=\"top\" width=\"110\" style=\"width:110px;padding:0 2px;\"><div style=\"width:14px;height:14px;border-radius:50%;background:#c1c6d6;margin:0 auto 8px auto;\"></div><p style=\"margin:0;font-family:'Inter', Helvetica, Arial, sans-serif;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:#727785;\">Zugestellt</p></td></tr></tbody></table>\n</td></tr></tbody></table></td></tr><tr><td style=\"padding-bottom: 32px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px; background-color: #ffffff; border: 1px solid #dbf1fe; border-radius: 8px;\"><tbody>\n<tr><td style=\"background-color: #cfe6f2; padding: 12px 24px;\"><p style=\"margin: 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #414754;\">BESTELLTE ARTIKEL</p></td></tr>\n\n\n{{ $('Handoverjob Handed Over').item.json.payload.handoverJobLineItems.map(item => `<tr>\n<td style=\"padding: 24px; border-bottom: 1px solid #dbf1fe;\" class=\"\">\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n<tbody><tr>\n<td valign=\"top\" width=\"80\">\n<img alt=\"${item.article.title}\" src=\"${item.article.imageUrl}\" style=\"display: block; border-radius: 4px; border: 1px solid #dbf1fe;\" width=\"80\">\n</td>\n<td style=\"padding-left: 20px;\" valign=\"top\" class=\"\">\n<p style=\"margin: 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #071e27;\" class=\"\">${item.article.title}</p>\n<p style=\"margin: 4px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 13px; color: #414754;\" class=\"\">Menge: 1</p>\n<p style=\"margin: 4px 0 0 0; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 700; color: #071e27;\" class=\"\">\n\n${Intl.NumberFormat('de-DE', { style: 'currency', currency: item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'currency').value, minimumFractionDigits: item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'decimalPlaces').value, maximumFractionDigits: item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'decimalPlaces').value }).format(item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'value').value / 10 ** item.article.attributes.find(item => item.category === 'finalUnitPrice' && item.key === 'decimalPlaces').value)}\n\n</p>\n</td>\n</tr>\n</tbody></table>\n</td>\n</tr>\n`).join('') }}\n\n\n</td></tr><tr><td align=\"center\" style=\"padding-top: 8px; padding-bottom: 8px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td align=\"center\" style=\"border-radius: 50px; background-color: #2b5ab5;\">\n<a href=\"#\" style=\"font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 700; color: #ffffff; text-decoration: none; padding: 18px 48px; display: inline-block;\" target=\"_blank\">Sendung verfolgen</a>\n</td></tr></tbody></table>\n<p style=\"margin: 16px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 13px; font-style: italic; color: #414754;\">Voraussichtliche Lieferung: 29. Oktober - 31. Oktober</p>\n</td></tr>\n<tr><td style=\"padding-top: 80px;\">\n<table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"width:600px;border-top: 1px solid #dbf1fe;\"><tbody><tr>\n<td valign=\"top\" width=\"300\" style=\"width:300px;padding-top:40px;\">\n<p style=\"margin: 0px; font-family: 'Manrope', Helvetica, Arial, sans-serif; font-size: 20px; font-weight: 800; color: #071e27; letter-spacing: -0.02em;\">fulfillmenttools Shop</p>\n</td>\n<td valign=\"top\" width=\"150\" style=\"width:150px;padding-top:40px;\">\n<p style=\"margin: 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #071e27;\">HILFE</p>\n<p style=\"margin: 12px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px;\"><a href=\"#\" style=\"color: #414754; text-decoration: none;\">Hilfecenter</a><br><a href=\"#\" style=\"color: #414754; text-decoration: none;\">Versandbedingungen</a></p>\n</td>\n<td valign=\"top\" width=\"150\" style=\"width:150px;padding-top:40px;\">\n<p style=\"margin: 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 11px; font-weight: 700; text-transform: uppercase; color: #071e27;\">KONTAKT</p>\n<p style=\"margin: 12px 0 0 0; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 12px;\"><a href=\"mailto:concierge@editorialportal.com\" style=\"color: #414754; text-decoration: none;\">Concierge-E-Mail</a><br><a href=\"#\" style=\"color: #414754; text-decoration: none;\">Live-Chat</a></p>\n</td></tr>\n<tr><td align=\"center\" colspan=\"3\" style=\"padding-top: 40px;\"><p style=\"margin: 0px; font-family: 'Inter', Helvetica, Arial, sans-serif; font-size: 10px; color: #727785; text-transform: uppercase; letter-spacing: 0.1em;\">\u00a9 2023 FULFILLMENTTOOLS SHOP. ALLE RECHTE VORBEHALTEN.</p></td></tr>\n</tbody></table>\n</td></tr>\n</tbody></table>\n</td></tr></tbody></table>\n</body></html>",
"options": {},
"subject": "=Ihre Bestellung {{ $('Handoverjob Handed Over').item.json.payload.tenantOrderId }} bei fulfillmenttools Shop wird geliefert"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "3f10f2a2-a2ce-4eab-a815-5e548e31452d",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1056,
-496
],
"parameters": {
"color": "#FFFF88",
"width": 528,
"height": 800,
"content": "# Send an email to a customer after his Order was shipped\n## How it works\n1. **fulfillmenttools Trigger** finds every created Handoverjob\n2. Data gets **checked** if valid for an email notification\n3. The **used carrier** is read from **fulfillmenttools**\n4. Through a switch the **Language** of the customer is determined\n5. The right email is send through **google Mail**\n\n## Setup\n- [ ] Install **fulfillmenttools** community node\n- [ ] Connect **fulfillmenttools** to the **Trigger** and the **Get used carrier** Action\n- [ ] Add **API Base URL** to connection\n- [ ] Add **Auth key** to connection\n- [ ] Add **User** to connection\n- [ ] Add **Password** to connection\n- [ ] Connect **Gmail** OAuth on both Gmail Nodes\n- [ ] Assure the needed customAttribute **shopLanguage** get send with the Order into fulfillmenttools\n\n## Customize\n- Change the gmail mail Layout to your CI\n- Add or change **Languages** in the **Switch**\n- Adjust the Data Check to your needs. For example change or delete the salesSource check"
},
"typeVersion": 1
},
{
"id": "d3dbeb8e-4afd-45b2-91ff-da06b590eaa8",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
-288
],
"parameters": {
"color": "#D1D1D1",
"width": 496,
"height": 432,
"content": "## Get and check Data\nThe fulfillmenttools Trigger will deliver all Handoverjobs that have been handed over to a carrier and therefore are now in Shippment to the Customer.\nThe Data check assures only valid Order with an email address and from a specif source get processed."
},
"typeVersion": 1
},
{
"id": "49af016e-3590-442e-9d4c-e89cdbb15f28",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
-400
],
"parameters": {
"color": "#D1D1D1",
"width": 496,
"height": 432,
"content": "## Collect needed Data and check for Language\nTo have all the data needed for our email Template this step collects the used carrier for this shipment and checks which language did the customer use inside our Shop. This way we can determine which Language the email should be"
},
"typeVersion": 1
},
{
"id": "78b1de7c-65c0-4a12-a41e-31672fda943a",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
-512
],
"parameters": {
"color": "#D1D1D1",
"width": 496,
"height": 624,
"content": "## Send emails to Customer\nThe Workflow connects to gmail and sends the email in the correct language to the customer. Here a HTML message is used that relies on data from the Workflow, like the Trigger and the collected carrier to personalize the message."
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "89a59232-22d6-466b-9f3e-eb284fd1c8b2",
"nodeGroups": [],
"connections": {
"Select Language": {
"main": [
[
{
"node": "Send shippment email english",
"type": "main",
"index": 0
}
],
[
{
"node": "Send shippment email german",
"type": "main",
"index": 0
}
]
]
},
"Get used carrier": {
"main": [
[
{
"node": "Select Language",
"type": "main",
"index": 0
}
]
]
},
"Check If Data is Valid": {
"main": [
[
{
"node": "Get used carrier",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Handoverjob Handed Over": {
"main": [
[
{
"node": "Check If Data is Valid",
"type": "main",
"index": 0
}
]
]
},
"Send shippment email german": {
"main": [
[]
]
},
"Send shippment email english": {
"main": [
[]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
fulfillmenttoolsApigmailOAuth2
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow listens for fulfillmenttools handover jobs being handed over to a carrier, validates the shipment data, fetches the carrier details from fulfillmenttools, and sends a localized shipment confirmation email to the customer via Gmail in English or German. Triggers…
Source: https://n8n.io/workflows/17423/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Tags: Supply Chain Management, Logistics, Transportation
This workflow implements a lightweight authentication system for n8n web portals using Google Sheets as a simple user and session store. It supports email-based registration, username and password log
This workflow automates the process of retrieving Stripe invoices, validating API responses, generating payment receipts, sending them via email, storing PDFs in Google Drive, and appending details to
This workflow listens for accepted booking updates in Sharetribe, fetches marketplace branding and transaction details, then sends a branded Gmail confirmation email to the customer with an attached .
This workflow receives new signup events, enriches each contact with Twain (and optionally a LinkedIn lookup), drafts a personalized welcome email in Gmail, and posts review-ready previews to Slack, w