diff --git a/workflows/Automate Shopify Order Fulfillment Notifications via WhatsApp-9003/automate_shopify_order_fulfillment_notifications_via_whatsapp.json b/workflows/Automate Shopify Order Fulfillment Notifications via WhatsApp-9003/automate_shopify_order_fulfillment_notifications_via_whatsapp.json new file mode 100644 index 000000000..574c0db31 --- /dev/null +++ b/workflows/Automate Shopify Order Fulfillment Notifications via WhatsApp-9003/automate_shopify_order_fulfillment_notifications_via_whatsapp.json @@ -0,0 +1 @@ +{"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":"get all customer data","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":"Loop Over Items","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":"Format Webhook Response Data","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":"Clean Number","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":"verified append row in sheet","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":"Send Message Using Rapiwa","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":"Wait","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":"Check valid whatsapp number Using Rapiwa","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":"If","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":"verified append row in sheet1","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":"Sticky Note","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":"Sticky Note1","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":"Sticky Note2","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":"Sticky Note3","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":"Sticky Note4","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":"Sticky Note5","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":{"If":{"main":[[{"node":"Send Message Using Rapiwa","type":"main","index":0}],[{"node":"verified append row in sheet1","type":"main","index":0}]]},"Wait":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Clean Number":{"main":[[{"node":"Check valid whatsapp number Using Rapiwa","type":"main","index":0}]]},"Loop Over Items":{"main":[[],[{"node":"Clean Number","type":"main","index":0}]]},"Shopify Trigger":{"main":[[{"node":"Format Webhook Response Data","type":"main","index":0}]]},"get all customer data":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Send Message Using Rapiwa":{"main":[[{"node":"verified append row in sheet","type":"main","index":0}]]},"Format Webhook Response Data":{"main":[[{"node":"get all customer data","type":"main","index":0}]]},"verified append row in sheet":{"main":[[{"node":"Wait","type":"main","index":0}]]},"verified append row in sheet1":{"main":[[{"node":"Wait","type":"main","index":0}]]},"Check valid whatsapp number Using Rapiwa":{"main":[[{"node":"If","type":"main","index":0}]]}}} \ No newline at end of file