Rapiwa API를 사용한 Shopify 주문 이행 및 WhatsApp으로 추적 링크 발송
고급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 17개의 노드를 포함합니다.주로 If, Code, Wait, HttpRequest, GoogleSheets 등의 노드를 사용하며. WhatsApp을 통한 Shopify 주문 이행 알림 자동화
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
- •Shopify Admin API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"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": "모든 고객 데이터 가져오기",
"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": "항목 반복 처리",
"type": "n8n-nodes-base.splitInBatches",
"position": [
80,
896
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "0e597ab7-be2c-45fd-8b2b-6a34989b3b9a",
"name": "Shopify 트리거",
"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": "웹훅 응답 데이터 형식 지정",
"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": "번호 정리",
"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": "확인된 항목 시트에 행 추가",
"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": "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": "대기",
"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": "Rapiwa를 사용하여 유효한 WhatsApp 번호 확인",
"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": "조건문",
"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": "확인된 항목 시트1에 행 추가",
"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": "스티커 노트",
"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": "스티커 노트1",
"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": "스티커 노트2",
"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": "스티커 노트3",
"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": "스티커 노트4",
"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": "스티커 노트5",
"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
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Shopify 자동 WhatsApp 감사 메시지 및 로열티 쿠폰 발송 (Rapiwa API 사용)
Rapiwa를 사용한 Shopify에서 WhatsApp 감사 메시지 및 로열티 쿠폰 자동 발송
If
Code
Wait
+
If
Code
Wait
17 노드SpaGreen Creative
콘텐츠 제작
Rapiwa를 사용한 Shopify 포기한 장바구니 WhatsApp 알림 자동화 (제품 링크 포함)
Shopify 포기한 장바구니 WhatsApp 알림 자동화: Rapiwa 통해 제품 링크 포함
If
Code
Wait
+
If
Code
Wait
19 노드SpaGreen Creative
콘텐츠 제작
Rapiwa API를 사용한 Google 스프레드시트에서 자동 WhatsApp 환영 메시지 발송
Google 스프레드시트와 Rapiwa를 활용한 영업 리드 대상 자동화 WhatsApp 환영 메시지 발송
If
Code
Wait
+
If
Code
Wait
17 노드SpaGreen Creative
리드 육성
Apollo 데이터 스크래핑 및 리치 프로세스 1 ✅
Apollo, AI 파싱 및 예정 이메일 후속 조치를 사용한 잠재 고객 자동 생성
If
Code
Wait
+
If
Code
Wait
39 노드Deniz
콘텐츠 제작
WordPress 블로그 자동화 프로페셔널 에디션(심층 연구) v2.1 마켓
GPT-4o, Perplexity AI 및 다국어 지원을 사용한 SEO 최적화 블로그 생성 자동화
If
Set
Xml
+
If
Set
Xml
125 노드Daniel Ng
콘텐츠 제작
TikTok 텍스트 전사
RapidAPI 및 Google Sheets를 사용한 TikTok 비디오 트랜스크립션 자동화
If
Code
Wait
+
If
Code
Wait
21 노드Evoort Solutions
콘텐츠 제작
워크플로우 정보
난이도
고급
노드 수17
카테고리2
노드 유형8
저자
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.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유