Shopify-Auftragsabwicklung über Rapiwa API und Versand von Tracking-Links über WhatsApp
Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 17 Nodes. Hauptsächlich werden If, Code, Wait, HttpRequest, GoogleSheets und andere Nodes verwendet. Automatisierung der Shopify-Auftragsbenachrichtigung über WhatsApp
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •Google Sheets API-Anmeldedaten
- •Shopify Admin API-Anmeldedaten
Verwendete Nodes (17)
Kategorie
{
"id": "qIxpz1WNuNQMj4Hq",
"meta": {
"instanceId": "cb9a1e5321767b6316634728341237e564b2587ab15b74ca0a89eb02a53484d6",
"templateCredsSetupCompleted": true
},
"name": "Shopify Order Fulfillment & Send Tracking Link via WhatsApp Using Rapiwa API",
"tags": [],
"nodes": [
{
"id": "bb285dab-fc99-4d5b-8b3b-36959d591a4f",
"name": "Alle Kundendaten abrufen",
"type": "n8n-nodes-base.httpRequest",
"position": [
-112,
896
],
"parameters": {
"url": "=https://your_domain.myshopify.com/admin/api/2025-07/orders/{{ $json.order_id }}.json",
"method": "=GET",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Shopify-Access-Token",
"value": "your_shopify_accesstoken like this➡️shpat_57xx78xxxxx90fxxx67"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "357f157e-ebd1-4865-8384-c2202c69461a",
"name": "Über Elemente iterieren",
"type": "n8n-nodes-base.splitInBatches",
"position": [
80,
896
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "0e597ab7-be2c-45fd-8b2b-6a34989b3b9a",
"name": "Shopify Trigger",
"type": "n8n-nodes-base.shopifyTrigger",
"position": [
-624,
896
],
"webhookId": "a8c45cbe-04b8-4c78-8418-1e50b9b8fd06",
"parameters": {
"topic": "fulfillments/create",
"authentication": "accessToken"
},
"credentials": {
"shopifyAccessTokenApi": {
"id": "cWoMnmp2EszIQYpj",
"name": "Shopify Access Token account"
}
},
"typeVersion": 1
},
{
"id": "e9854c40-304b-49a8-a3e2-f3aae6a0996a",
"name": "Webhook Antwortdaten formatieren",
"type": "n8n-nodes-base.code",
"position": [
-448,
896
],
"parameters": {
"jsCode": "const result = $input.all().map(item => {\n const body = item.json;\n\n return {\n customer_id: body.id,\n fulfillment_id: body.id,\n order_id: body.order_id,\n status: body.status,\n created_at: body.created_at,\n updated_at: body.updated_at,\n tracking_company: body.tracking_company,\n tracking_number: body.tracking_number,\n tracking_url: body.tracking_url,\n product_title: body.line_items?.[0]?.title || '',\n customer_name: body.destination?.name || '',\n country: body.destination?.country || '',\n shop_domain: item.json.headers?.['x-shopify-shop-domain'] || '',\n };\n});\n\nreturn result;"
},
"typeVersion": 2
},
{
"id": "9df911dd-af84-4a81-8b15-4c758ed36c9e",
"name": "Nummer bereinigen",
"type": "n8n-nodes-base.code",
"position": [
304,
992
],
"parameters": {
"jsCode": "const items = $input.all();\n\nconst updatedItems = items.map((item) => {\n const customer = item?.json?.order?.customer || {};\n\n const rawPhone = customer?.phone || \"\";\n const phoneStr = typeof rawPhone === 'string' ? rawPhone : String(rawPhone || \"\");\n const cleanedPhone = phoneStr.replace(/\\D/g, \"\");\n\n // Combine first and last name into full name\n const firstName = customer.first_name || \"\";\n const lastName = customer.last_name || \"\";\n const fullName = `${firstName} ${lastName}`.trim();\n\n return {\n json: {\n customer_id: customer.id || \"\",\n name: fullName,\n email: customer.email || \"\",\n phone: cleanedPhone\n }\n };\n});\n\nreturn updatedItems;\n"
},
"typeVersion": 2
},
{
"id": "9c7f6119-154c-4abf-8336-3ebe8133f479",
"name": "Verifizierte Zeile in Tabelle anhängen",
"type": "n8n-nodes-base.googleSheets",
"position": [
1184,
1008
],
"parameters": {
"columns": {
"value": {
"email": "={{ $('Clean Number').item.json.email }}",
"name ": "={{ $('Clean Number').item.json.name }}",
"number": "={{ $('Clean Number').item.json.phone }}",
"status": "verified",
"customer_id": "={{ $('Clean Number').item.json.customer_id }}",
"tracking_url": "={{ $('Format Webhook Response Data').item.json.tracking_url }}",
"product_title": "={{ $('Format Webhook Response Data').item.json.product_title }}",
"tracking_number": "={{ $('Format Webhook Response Data').item.json.tracking_number }}",
"tracking_company": "={{ $('Format Webhook Response Data').item.json.tracking_company }}"
},
"schema": [
{
"id": "customer_id",
"type": "string",
"display": true,
"required": false,
"displayName": "customer_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name ",
"type": "string",
"display": true,
"required": false,
"displayName": "name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "number",
"type": "string",
"display": true,
"required": false,
"displayName": "number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tracking_company",
"type": "string",
"display": true,
"required": false,
"displayName": "tracking_company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tracking_number",
"type": "string",
"display": true,
"required": false,
"displayName": "tracking_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tracking_url",
"type": "string",
"display": true,
"required": false,
"displayName": "tracking_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_title",
"type": "string",
"display": true,
"required": false,
"displayName": "product_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vxocktoY-y-PYBZNxmUDuQv02b5F8QKhbQ0yLHjwjBY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1vxocktoY-y-PYBZNxmUDuQv02b5F8QKhbQ0yLHjwjBY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vxocktoY-y-PYBZNxmUDuQv02b5F8QKhbQ0yLHjwjBY/edit?usp=drivesdk",
"cachedResultName": "Shopify - Send tracking link via WhatsApp"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gFH3Wjq6yYqSEAei",
"name": "Google Sheets"
}
},
"typeVersion": 4.6
},
{
"id": "ed921c20-60e1-4c65-a946-cd477658d7e1",
"name": "Nachricht über Rapiwa senden",
"type": "n8n-nodes-base.httpRequest",
"position": [
960,
1008
],
"parameters": {
"url": "=https://app.rapiwa.com/api/send-message",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "number",
"value": "={{ $json.data.number }}"
},
{
"name": "message_type",
"value": "text"
},
{
"name": "message",
"value": "=Hi {{ $('Loop Over Items').item.json.name }},\nGood news! Your order has just been fulfilled.\n\nTracking Number: *{{ $('Format Webhook Response Data').item.json.tracking_number }}*\n\nTrack your package here: *{{ $('Format Webhook Response Data').item.json.tracking_url }}*\n\nThank you for shopping with us. \n-Team SpaGreen Creative\n"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "jnaHCyYia9OAFozh",
"name": "Rapiwa Bearer Auth"
}
},
"typeVersion": 4.2
},
{
"id": "53198fba-bd3b-4169-bfed-647f13caa22a",
"name": "Warten",
"type": "n8n-nodes-base.wait",
"position": [
1184,
1216
],
"webhookId": "6c474e54-eb3c-4fcd-b455-948322cd0121",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "af670da1-14e9-4a4d-9d06-6e8d2bcbe051",
"name": "Gültige whatsapp Nummer über Rapiwa prüfen",
"type": "n8n-nodes-base.httpRequest",
"position": [
528,
992
],
"parameters": {
"url": "=https://app.rapiwa.com/api/verify-whatsapp",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "number",
"value": "={{ $json.phone }}"
}
]
},
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "jnaHCyYia9OAFozh",
"name": "Rapiwa Bearer Auth"
}
},
"typeVersion": 4.2
},
{
"id": "63985bfb-4fcd-427a-b6f5-ca56972dfa4a",
"name": "Wenn",
"type": "n8n-nodes-base.if",
"position": [
720,
1120
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3ab8725a-9268-45fd-b91c-0e055fe6fa7c",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.data.exists }}",
"rightValue": "=\"true\""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ef4e6f6f-5c3b-4598-ace3-bb47d91882fe",
"name": "Verifizierte Zeile in Tabelle1 anhängen",
"type": "n8n-nodes-base.googleSheets",
"position": [
976,
1216
],
"parameters": {
"columns": {
"value": {
"email": "={{ $('Clean Number').item.json.email }}",
"name ": "={{ $('Clean Number').item.json.name }}",
"number": "={{ $('Clean Number').item.json.phone }}",
"status": "unverified",
"customer_id": "={{ $('Clean Number').item.json.customer_id }}",
"tracking_url": "={{ $('Format Webhook Response Data').item.json.tracking_url }}",
"product_title": "={{ $('Format Webhook Response Data').item.json.product_title }}",
"tracking_number": "={{ $('Format Webhook Response Data').item.json.tracking_number }}",
"tracking_company": "={{ $('Format Webhook Response Data').item.json.tracking_company }}"
},
"schema": [
{
"id": "customer_id",
"type": "string",
"display": true,
"required": false,
"displayName": "customer_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name ",
"type": "string",
"display": true,
"required": false,
"displayName": "name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "number",
"type": "string",
"display": true,
"required": false,
"displayName": "number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tracking_company",
"type": "string",
"display": true,
"required": false,
"displayName": "tracking_company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tracking_number",
"type": "string",
"display": true,
"required": false,
"displayName": "tracking_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tracking_url",
"type": "string",
"display": true,
"required": false,
"displayName": "tracking_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "product_title",
"type": "string",
"display": true,
"required": false,
"displayName": "product_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vxocktoY-y-PYBZNxmUDuQv02b5F8QKhbQ0yLHjwjBY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1vxocktoY-y-PYBZNxmUDuQv02b5F8QKhbQ0yLHjwjBY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vxocktoY-y-PYBZNxmUDuQv02b5F8QKhbQ0yLHjwjBY/edit?usp=drivesdk",
"cachedResultName": "Shopify - Send tracking link via WhatsApp"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "gFH3Wjq6yYqSEAei",
"name": "Google Sheets"
}
},
"typeVersion": 4.6
},
{
"id": "92e8dfd3-a657-49a7-8c6f-f9a77e467b72",
"name": "Kurznotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2576,
192
],
"parameters": {
"color": 4,
"width": 1728,
"height": 3536,
"content": "# Shopify Order Fulfillment & Send Tracking Link via WhatsApp Using Rapiwa API\n\n\n# Overview\nThis **n8n workflow** automatically sends **WhatsApp notifications** to customers when their **Shopify orders are fulfilled**. It extracts order details, validates customer phone numbers for WhatsApp compatibility using the **Rapiwa API**, sends tracking information via WhatsApp, and logs all interactions in **Google Sheets** with appropriate verification status.\n---\n## Features\n- Listens to **Shopify fulfillment creation** via webhook\n- Retrieves detailed **order and customer information** from Shopify\n- **Cleans and formats** customer phone numbers\n- **Validates WhatsApp numbers** using Rapiwa's verification API\n- Sends **automated WhatsApp messages** with tracking details to verified numbers\n- Logs customer data in **Google Sheets** with verification status\n- Includes **Wait node** to space out API calls and prevent rate limiting\n- Handles both **verified and unverified** numbers with appropriate branching\n---\n## Requirements\n### Tools & Services\n- **Shopify store** with API access\n- **Google Sheet** formatted with required columns\n- **Rapiwa API account** with:\n - Valid **Bearer Token**\n - Access to `verify-whatsapp` and `send-message` endpoints\n - Connected WhatsApp number\n- **Active Rapiwa subscription** (~$5/month)\n### n8n Credentials\n- **Shopify Access Token API** credentials\n- **Rapiwa Bearer Auth** credentials\n- **Google Sheets OAuth2** credentials\n### Google Sheet Required Columns:\n- `customer_id`\n- `name ` (note the trailing space)\n- `email`\n- `number`\n- `tracking_company`\n- `tracking_number`\n- `tracking_url`\n- `product_title`\n- `status` (either `verified` or `unverified`)\n> **Note:** Field `name ` contains a trailing space. Keep it as-is.\n---\n## Nodes Used in the Workflow\n- **Shopify Trigger** (webhook for fulfillment creation)\n- **Format Webhook Response Data** (code node for data extraction)\n- **get all customer data** (HTTP request to Shopify API)\n- **Clean Number** (code node for phone number formatting)\n- **Loop Over Items** (split in batches node)\n- **Check valid whatsapp number Using Rapiwa** (HTTP request)\n- **If** (conditional branching based on verification)\n- **Send Message Using Rapiwa** (HTTP request for WhatsApp messaging)\n- **verified append row in sheet** (Google Sheets node)\n- **verified append row in sheet1** (Google Sheets node for unverified)\n- **Wait** (delay node)\n---\n## How to Use This Workflow\n### 1. Trigger: New Fulfillment Created\n- **Node**: `Shopify Trigger`\n- **Event**: `fulfillments/create`\n- **Function**: Shopify sends payload when a new fulfillment is created.\n### 2. Format Webhook Response\n- **Node**: `Format Webhook Response Data`\n- **Function**: Extracts key information including:\n - `order_id`, `fulfillment_id`, `status`\n - `tracking_company`, `tracking_number`, `tracking_url`\n - `product_title`, `customer_name`, `country`\n - `shop_domain`\n### 3. Retrieve Customer Data\n- **Node**: `get all customer data`\n- **Method**: `GET`\n- **URL**: `https://your_domain.myshopify.com/admin/api/2025-07/orders/{{ $json.order_id }}.json`\n- **Headers**: Includes Shopify access token\n- **Function**: Retrieves complete order and customer information\n### 4. Clean Phone Numbers\n- **Node**: `Clean Number`\n- **Function**: \n - Extracts phone number from customer data\n - Removes all non-numeric characters\n - Combines first and last name into full name\n - Formats customer data for downstream processing\n### 5. Process in Batches\n- **Node**: `Loop Over Items`\n- **Function**: Processes customers one at a time\n### 6. Verify WhatsApp Number\n- **Node**: `Check valid whatsapp number Using Rapiwa`\n- **Method**: `POST`\n- **URL**: `https://app.rapiwa.com/api/verify-whatsapp`\n- **Authentication**: Bearer token\n- **Function**: Checks if the phone number is active on WhatsApp\n### 7. Branch Based on Verification\n- **Node**: `If`\n- **Condition**: If `data.exists === \"true\"`, then verified\n- **Function**: Routes to appropriate path based on verification status\n### 8. Send WhatsApp Message (if verified)\n- **Node**: `Send Message Using Rapiwa`\n- **Method**: `POST`\n- **URL**: `https://app.rapiwa.com/api/send-message`\n- **Authentication**: Bearer token\n- **Function**: Sends tracking information via WhatsApp\n#### Message Template:\n```\nHi [Customer Name],\nGood news! Your order has just been fulfilled.\nTracking Number: [Tracking Number]\nTrack your package here: [Tracking URL]\nThank you for shopping with us.\n-Team SpaGreen Creative\n```\n### 9. Log to Google Sheets\n- **Node**: `verified append row in sheet` → Logs verified users\n- **Node**: `verified append row in sheet1` → Logs unverified users\n- **Node**: `Wait` → Adds delay to avoid API rate limits\n---\n## Google Sheet Column\n**A Google Sheet** formatted like this ➤ [Sample](https://docs.google.com/spreadsheets/d/1vxocktoY-y-PYBZNxmUDuQv02b5F8QKhbQ0yLHjwjBY/edit?usp=sharing)\n| customer_id | name | email | number | tracking_company | tracking_number | tracking_url | product_title | status |\n|---------------|-----------------|--------------------------------|---------------|------------------|-----------------|---------------------------------------------|----------------------------------------|------------|\n| 8986XXXX06 | Abdul Mannan | contact@spagreen.net | 8801322827799 | Amazon Logistics | SG-OT-02 | https://traxxxG-OT-02 | S25 Ultra 5G Smartphone | verified |\n| 883XXX7982 | Abdul Mannan | contact@spagreen.net | 8801322827799 | Amazon Logistics | SG-OT-N03 | https://traxxxGOT-N03| Samsung Galaxy S24 Ultra | verified |\n\n> **Note**: The `name ` column includes a **trailing space**. Do not remove it.\n---\n## Customization Ideas\n- Modify the WhatsApp message template to include additional order details\n- Add product images to the WhatsApp messages\n- Create separate sheets for different product categories or regions\n- Extend logic to send follow-up messages after delivery\n- Add notifications to store administrators for failed message deliveries\n---\n## Notes & Warnings\n- Ensure your Rapiwa account has a valid, connected WhatsApp number\n- Google Sheets credentials must allow write access to the specified sheet\n- The Wait node helps prevent rate limiting but may need adjustment based on volume\n- The workflow uses the Shopify API version 2025-07, which may need updating in the future\n- Rapiwa is an unofficial WhatsApp API and delivery rates are not guaranteed\n- Make sure to comply with WhatsApp's terms of service and customer privacy regulations\n\n## Useful Links\n- **Dashboard:** [https://app.rapiwa.com](https://app.rapiwa.com/login)\n- **Official Website:** [https://rapiwa.com](https://rapiwa.com/)\n- **Documentation:** [https://docs.rapiwa.com](https://docs.rapiwa.com/)\n\n## Support & Help\n- **WhatsApp**: [Chat on WhatsApp](https://wa.me/8801322827799)\n- **Discord**: [SpaGreen Community](https://discord.gg/SsCChWEP)\n- **Facebook Group**: [SpaGreen Support](https://www.facebook.com/groups/spagreenbd)\n- **Website**: [https://spagreen.net](https://spagreen.net)\n- **Developer Portfolio**: [Codecanyon SpaGreen](https://codecanyon.net/user/spagreen/portfolio)\n"
},
"typeVersion": 1
},
{
"id": "9242aaa7-3458-4bba-8965-4ee434a92421",
"name": "Kurznotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
192
],
"parameters": {
"color": 4,
"width": 592,
"height": 1056,
"content": "## 1. Node: Shopify Trigger\n**Purpose:** \nThis node monitors your Shopify store for the `fulfillments/create` webhook event. It automatically triggers when an order is marked as fulfilled.\n\n**When it’s Triggered:** \nWhenever an order is fulfilled (i.e., shipped or marked as complete) in your Shopify store.\n\n**Webhook Event:** \n`fulfillments/create`\n\n## 2. Node: Format Webhook Response Data\n**Purpose:** \nThis node takes the raw data from the Shopify webhook and extracts the key information you need. It organizes the data in a cleaner format for further processing or use.\n\n**Data Extracted Includes:**\n\n- Order ID \n- Tracking number and tracking link \n- Total Price\n- Per Product Price\n- Product Image link\n- Customer’s name and country \n- Product title(s)\n"
},
"typeVersion": 1
},
{
"id": "21e5181e-236e-47aa-aec2-a90b8980972d",
"name": "Kurznotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-160,
192
],
"parameters": {
"color": 5,
"width": 384,
"height": 1232,
"content": "## 1. Node: get all customer data\n**Purpose:**\n- Uses the `order_id` to make a Shopify API request and get full customer details for that order.\n\n\n## 2. Node: Loop Over Items\n**Purpose:**\n- Loops through each item (e.g., fulfillment) in the workflow — useful if multiple fulfillments come through at once."
},
"typeVersion": 1
},
{
"id": "0b192c42-a681-458e-9c04-b327c8c1d3fe",
"name": "Kurznotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
256,
192
],
"parameters": {
"color": 6,
"width": 432,
"height": 1232,
"content": "## 1. Node: Check Valid WhatsApp Number Using Rapiwa\n**Purpose:**\nThis node uses [Rapiwa’s API](https://rapiwa.com) to verify whether a given phone number is registered and active on WhatsApp.\n\n\n## 2. Node: Clean Number\n**Purpose:**\n- Extracts and cleans up the customer’s phone number.\n- Formats full name from first and last name.\n- Prepares `customer_id`, email, phone, and name.\n"
},
"typeVersion": 1
},
{
"id": "28edb9e1-79e8-4519-940b-17fba681a694",
"name": "Kurznotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
192
],
"parameters": {
"color": 4,
"width": 656,
"height": 1232,
"content": "## 1. Node: If\n**Purpose:**\nChecks the result of the WhatsApp verification:\nIf number exists (i.e., valid WhatsApp number), go one way.\nIf number does not exist, go another way.\n\n## 2. Node: Send Message Using Rapiwa\n**Purpose:**\nSends a personalized WhatsApp message to the customer using Rapiwa, with tracking details and a thank-you note.\n\n## 3. Node: verified append row in sheet\n**Purpose:**\nLogs customer and tracking info to Google Sheets with the status verified (i.e., they have WhatsApp and message was sent).\n\n## 4. Node: verified append row in sheet1\n**Purpose:**\nLogs the same data to Google Sheets, but with the status unverified (i.e., customer doesn't have WhatsApp, so message wasn't sent).\n\n## 5. Node: Wait\n**Purpose:**\nPauses briefly before processing the next item — helps to avoid rate-limiting or API overload.\n"
},
"typeVersion": 1
},
{
"id": "0cd9fd3c-ef9a-4ff3-bbdb-d6be4ac3a962",
"name": "Kurznotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
-96
],
"parameters": {
"color": 3,
"width": 2112,
"height": 272,
"content": "# Workflow Summary\n- Webhook receives new Order Fulfillment event from Shopify\n- Retrieves full customer details using the Shopify API\n- Extracts and formats customer data (name, phone, product, tracking info)\n- Cleans and verifies the customer's phone number\n- Checks if the number is valid on WhatsApp using Rapiwa\n- Sends personalized WhatsApp message with tracking details (if verified)\n- Logs all fulfillment and contact info in Google Sheets\n- Marks contacts as verified or unverified based on WhatsApp status\n- Fully automated, with batching and throttling to prevent overload\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "a4f318ef-c966-4231-8931-721438e6c92f",
"connections": {
"63985bfb-4fcd-427a-b6f5-ca56972dfa4a": {
"main": [
[
{
"node": "ed921c20-60e1-4c65-a946-cd477658d7e1",
"type": "main",
"index": 0
}
],
[
{
"node": "ef4e6f6f-5c3b-4598-ace3-bb47d91882fe",
"type": "main",
"index": 0
}
]
]
},
"53198fba-bd3b-4169-bfed-647f13caa22a": {
"main": [
[
{
"node": "357f157e-ebd1-4865-8384-c2202c69461a",
"type": "main",
"index": 0
}
]
]
},
"9df911dd-af84-4a81-8b15-4c758ed36c9e": {
"main": [
[
{
"node": "af670da1-14e9-4a4d-9d06-6e8d2bcbe051",
"type": "main",
"index": 0
}
]
]
},
"357f157e-ebd1-4865-8384-c2202c69461a": {
"main": [
[],
[
{
"node": "9df911dd-af84-4a81-8b15-4c758ed36c9e",
"type": "main",
"index": 0
}
]
]
},
"0e597ab7-be2c-45fd-8b2b-6a34989b3b9a": {
"main": [
[
{
"node": "e9854c40-304b-49a8-a3e2-f3aae6a0996a",
"type": "main",
"index": 0
}
]
]
},
"bb285dab-fc99-4d5b-8b3b-36959d591a4f": {
"main": [
[
{
"node": "357f157e-ebd1-4865-8384-c2202c69461a",
"type": "main",
"index": 0
}
]
]
},
"ed921c20-60e1-4c65-a946-cd477658d7e1": {
"main": [
[
{
"node": "9c7f6119-154c-4abf-8336-3ebe8133f479",
"type": "main",
"index": 0
}
]
]
},
"e9854c40-304b-49a8-a3e2-f3aae6a0996a": {
"main": [
[
{
"node": "bb285dab-fc99-4d5b-8b3b-36959d591a4f",
"type": "main",
"index": 0
}
]
]
},
"9c7f6119-154c-4abf-8336-3ebe8133f479": {
"main": [
[
{
"node": "53198fba-bd3b-4169-bfed-647f13caa22a",
"type": "main",
"index": 0
}
]
]
},
"ef4e6f6f-5c3b-4598-ace3-bb47d91882fe": {
"main": [
[
{
"node": "53198fba-bd3b-4169-bfed-647f13caa22a",
"type": "main",
"index": 0
}
]
]
},
"af670da1-14e9-4a4d-9d06-6e8d2bcbe051": {
"main": [
[
{
"node": "63985bfb-4fcd-427a-b6f5-ca56972dfa4a",
"type": "main",
"index": 0
}
]
]
}
}
}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?
Experte - Content-Erstellung, Multimodales KI
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
SpaGreen Creative
@spagreenSpaGreen Creative is a leading software company specializing in SaaS solutions, AI automation, and Laravel/Vue.js development. With 800+ eCommerce platforms and 8,000+ global clients, we deliver powerful tools for OTT, CRM, ERP, and WhatsApp marketing. We combine innovation and tech to build scalable digital products.
Diesen Workflow teilen