{"workflow":{"id":12078,"name":"Send Shopify shipping tracking WhatsApp notifications with full tracking info","views":85,"recentViews":0,"totalViews":85,"createdAt":"2025-12-23T21:25:16.442Z","description":"# Order Fulfillment & Shipping Notification System\n\nAutomatically notify customers via WhatsApp when their orders ship, with intelligent phone validation, multi-country support, and bilingual messaging including complete tracking information.\n\n## What does this workflow do?\n\nWhen you fulfill an order in Shopify, this workflow instantly updates your database, validates the customer's phone number across 23+ countries, and sends a professional WhatsApp notification with full tracking details in their preferred language.\n\n### Key features:\n- 🌍 **23+ Country Phone Validation** - Automatically detects and formats phone numbers for GCC, MENA, and international customers\n- 📦 **Complete Tracking Info** - Includes tracking number, courier name, and clickable tracking URL\n- 🌐 **Smart Bilingual Messaging** - Arabic and English with luxury brand tone\n- 💾 **Real-time Database Sync** - Updates order status and shipping details instantly\n- 🔒 **Test Number Protection** - Blocks notifications to development phone numbers\n- ✨ **Personalized Messages** - Addresses customers by first name\n- ⏱️ **Delivery Expectations** - Communicates clear 7-12 business day timeline\n- 🎯 **International Format** - Handles phone numbers with automatic country code detection\n\n## Setup Requirements\n\n### Integrations Needed:\n1. **Shopify** - For order fulfillment webhooks\n2. **PostgreSQL** - For order and customer data storage\n3. **WhatsApp Business API** - For sending notifications via Facebook Graph API\n\n### Credentials Required:\n- Shopify Access Token (with fulfillment webhook permissions)\n- PostgreSQL database credentials\n- WhatsApp Business API Bearer Token (Facebook Graph API v18.0)\n\n## How to Use\n\n1. **Import the workflow** into your n8n instance\n2. **Configure credentials**:\n   - Add your Shopify store access token\n   - Connect your PostgreSQL database\n   - Add your WhatsApp Business API credentials\n3. **Update test phone numbers** in filter nodes (If10 and If11) with your actual test numbers\n4. **Customize brand name** in WhatsApp message templates if needed (currently \"\" / \"\")\n5. **Activate the workflow** to start sending shipping notifications\n\n## Workflow Structure\n\n### 1. Trigger (Shopify Webhook)\nListens for `fulfillments/create` events when orders are marked as shipped in Shopify\n\n### 2. Update Order Status\nUpdates PostgreSQL database with:\n- Status changed to 'shipped'\n- Shipping company name\n- Tracking number\n\n### 3. Customer Lookup\nRetrieves customer record from database using phone number from fulfillment data\n\n### 4. Phone Validator (Code Node)\nIntelligent phone number formatting:\n- Detects country from shipping address\n- Validates and cleans phone number\n- Adds appropriate country code if missing\n- Supports 23 countries across GCC, MENA, and international markets\n- Ensures proper international format (+CountryCode)\n\n### 5. Get Customer Preferences\nRetrieves language preference and first name for personalization\n\n### 6. Language Detection\nRoutes workflow based on customer's preferred language (Arabic vs. English)\n\n### 7. Test Number Filter\nPrevents notifications to internal/development phone numbers\n\n### 8. WhatsApp Notification\nSends comprehensive shipping notification with tracking details in customer's language\n\n## Supported Countries & Codes\n\n### GCC Region:\n- 🇴🇲 Oman (968)\n- 🇦🇪 UAE (971)\n- 🇸🇦 Saudi Arabia (966)\n- 🇰🇼 Kuwait (965)\n- 🇶🇦 Qatar (974)\n- 🇧🇭 Bahrain (973)\n\n### MENA Region:\n- 🇯🇴 Jordan (962)\n- 🇪🇬 Egypt (20)\n- 🇮🇶 Iraq (964)\n- 🇱🇧 Lebanon (961)\n- 🇸🇾 Syria (963)\n- 🇵🇸 Palestine (970)\n- 🇾🇪 Yemen (967)\n\n### International:\n- 🇺🇸 USA (1)\n- 🇬🇧 UK (44)\n- 🇩🇪 Germany (49)\n- 🇫🇷 France (33)\n- 🇮🇹 Italy (39)\n- 🇪🇸 Spain (34)\n- 🇹🇷 Turkey (90)\n- 🇮🇳 India (91)\n- 🇵🇰 Pakistan (92)\n\n## Message Templates\n\n### Arabic Message (عربي):\n```\nمرحبًا [الاسم]،\n\nيسرّنا إعلامكم بأنه تم شحن طلبكم بنجاح.\nرقم الطلب: [order_id]\nرقم التتبع: [tracking_number]\nشركة الشحن: [courier_name]\nرابط التتبع: [tracking_url]\nالمدة المتوقعة للتوصيل: من 7 إلى 12 يوم عمل.\n\nيمكنكم متابعة حالة الشحنة عبر رقم التتبع، وسنحرص على إبقائكم على اطلاع حتى استلام الطلب.\n\nمع أطيب التحيات،\n```\n\n### English Message:\n```\nHello [Name],\n\nWe are pleased to inform you that your order has been shipped successfully.\n\nOrder No: [order_id]\nTracking No: [tracking_number]\nCourier Company: [courier_name]\nTracking URL: [tracking_url]\nEstimated delivery time: 7–12 business days.\n\nYou may track your shipment using the tracking number provided. We will continue to keep you informed until your order is delivered.\n\nKind regards,\n```\n\n## Database Schema Requirements\n\n### Orders Table:\n```sql\nCREATE TABLE orders (\n  order_id VARCHAR PRIMARY KEY,  -- Shopify order number\n  status VARCHAR,                  -- Order status ('open', 'shipped', 'delivered', 'canceled')\n  shipping_company VARCHAR,        -- Courier service name\n  tracking_number VARCHAR,         -- Package tracking ID\n  customer_id INTEGER              -- Foreign key to customers table\n);\n```\n\n### Customers Table:\n```sql\nCREATE TABLE customers (\n  id SERIAL PRIMARY KEY,\n  website_id INTEGER,              -- Shopify customer ID\n  phone VARCHAR,                   -- Customer phone number\n  language VARCHAR(2),             -- Preferred language ('ar' or 'en')\n  first_name VARCHAR,              -- Customer first name\n  last_name VARCHAR                -- Customer last name\n);\n```\n\n## Phone Validator Logic\n\nThe Phone Validator node intelligently handles phone numbers:\n\n1. **Extracts phone** from fulfillment data (checks destination.phone, shipping_address.phone, or root phone)\n2. **Detects country** from destination.country_code (defaults to 'OM' if not provided)\n3. **Cleans number** by removing whitespace and non-numeric characters (except +)\n4. **Validates length** (minimum 5 digits required)\n5. **Checks for country code** in the number\n6. **Adds country code** automatically if missing based on shipping country\n7. **Ensures + prefix** for international format\n8. **Returns**:\n   - `phone`: Formatted number with country code (+XXX)\n   - `original_phone`: Raw input for reference\n   - `country_code`: ISO country code\n   - `validation_status`: 'success' or 'empty_or_invalid'\n\n## Customization Tips\n\n- **Add more countries**: Extend the `countryCodes` object in Phone Validator node\n- **Change brand name**: Update \"\" / \"\" in WhatsApp message nodes\n- **Adjust delivery time**: Modify \"7–12 business days\" to match your actual shipping times\n- **Add more languages**: Create additional language detection branches (e.g., French, Spanish)\n- **Include product details**: Extend database query to fetch order items and include in message\n- **Add delivery date estimates**: Calculate and include specific delivery date ranges\n- **Email notifications**: Add email nodes for customers who prefer email\n- **SMS fallback**: Add SMS nodes for customers without WhatsApp\n\n## Use Cases\n\n- E-commerce stores shipping to multiple countries\n- Luxury brands requiring premium communication\n- Businesses with Arabic and English speaking customers\n- International retailers with GCC and MENA presence\n- Multi-channel sellers needing unified shipping notifications\n- Stores using various courier services (DHL, FedEx, Aramex, etc.)\n\n## Error Handling\n\n- **Empty phone numbers**: Workflow marks as 'empty_or_invalid' and skips notification\n- **Invalid formats**: Phone validator attempts to fix common issues\n- **Missing data**: Uses fallback values (e.g., 'OM' for country, 'en' for language)\n- **SQL injection protection**: Single quotes escaped in database queries\n- **Test number blocking**: Prevents accidental notifications during testing\n\n## Performance Notes\n\n- **Execution time**: ~2-3 seconds per order\n- **Database queries**: 3 total (1 UPDATE, 2 SELECT)\n- **API calls**: 1 WhatsApp message per order\n- **Scalability**: Handles concurrent fulfillments independently\n- **Rate limits**: WhatsApp Business API applies standard rate limits\n\n## Technical Notes\n\n- WhatsApp API Version: v18.0\n- Phone API format: Country code without '+' (e.g., 962798087441)\n- Database: PostgreSQL with prepared statements\n- Default country: Oman (+968)\n- Default language: English if not specified\n- Workflow processes one fulfillment at a time (runOnceForEachItem)\n\n---\n\n**Tags:** #shopify #whatsapp #fulfillment #shipping #tracking #bilingual #arabic #english #phone-validation #ecommerce #notifications #international","workflow":{"meta":{"instanceId":"473168f370e695cf2681bfe0d87794a129a4b6b91ce9730668db1c27be277998"},"nodes":[{"id":"c7138ff9-2c46-4e55-bef7-19f466c5fd7d","name":"Phone Validator","type":"n8n-nodes-base.code","position":[2064,1152],"parameters":{"mode":"runOnceForEachItem","jsCode":"// قائمة أكواد الدول\nconst countryCodes = {\n  'OM': '968', 'JO': '962', 'AE': '971', 'SA': '966', 'KW': '965',\n  'QA': '974', 'BH': '973', 'EG': '20', 'IQ': '964', 'LB': '961',\n  'SY': '963', 'PS': '970', 'YE': '967', 'US': '1', 'GB': '44',\n  'DE': '49', 'FR': '33', 'IT': '39', 'ES': '34', 'TR': '90',\n  'IN': '91', 'PK': '92'\n};\n\n// جلب البيانات من fulfilment trigger\nconst fulfillmentData = $('fulfilment').item.json;\n\nconst phone = fulfillmentData.destination?.phone ||\n              fulfillmentData.shipping_address?.phone ||\n              fulfillmentData.phone || \n              '';\n\nconst countryCode = fulfillmentData.destination?.country_code ||\n                    fulfillmentData.shipping_address?.country_code ||\n                    'OM';\n\n// تنضيف الرقم\nlet formattedPhone = phone.trim().replace(/\\s+/g, '').replace(/[^0-9+]/g, '');\n\n// لو الرقم فاضي\nif (!formattedPhone || formattedPhone.length < 5) {\n  return {\n    phone: phone,\n    original_phone: phone,\n    country_code: countryCode,\n    validation_status: 'empty_or_invalid'\n  };\n}\n\n// نشيك إذا الرقم بيبدأ بكود دولة\nconst startsWithCode = Object.values(countryCodes).some(code => {\n  const cleanPhone = formattedPhone.replace('+', '');\n  return cleanPhone.startsWith(code);\n});\n\nif (!startsWithCode) {\n  // الرقم ما بيبدأ بكود - نضيف الكود حسب البلد\n  const defaultCode = countryCodes[countryCode] || '968';\n  const cleanPhone = formattedPhone.replace('+', '');\n  formattedPhone = '+' + defaultCode + cleanPhone;\n} else if (!formattedPhone.startsWith('+')) {\n  // الكود موجود بس ما في علامة +\n  formattedPhone = '+' + formattedPhone;\n}\n\nreturn {\n  phone: formattedPhone,\n  original_phone: phone,\n  country_code: countryCode,\n  validation_status: 'success'\n};"},"typeVersion":2},{"id":"a65aa462-8570-4162-b5a0-63f533f69fa6","name":"Update Order Shipped1","type":"n8n-nodes-base.postgres","position":[1632,1152],"parameters":{"query":"UPDATE orders SET status = 'shipped', shipping_company = '{{ ($('fulfilment').item.json.tracking_company || '').replace(/'/g, \"''\") }}', tracking_number = '{{ $('fulfilment').item.json.tracking_number || '' }}' WHERE order_id = {{ $('fulfilment').item.json.order_id }} RETURNING customer_id","options":{},"operation":"executeQuery"},"credentials":{"postgres":{"id":"credential-id","name":"Postgres account"}},"typeVersion":2},{"id":"2b0bb6ff-c294-46f8-b8cd-db64aaa22248","name":"Select rows from a table6","type":"n8n-nodes-base.postgres","position":[1872,1152],"parameters":{"limit":1,"table":{"__rl":true,"mode":"list","value":"customers","cachedResultName":"customers"},"where":{"values":[{"value":"={{ $('fulfilment').item.json.destination.phone }}","column":"phone"}]},"schema":{"__rl":true,"mode":"list","value":"public"},"options":{},"operation":"select"},"credentials":{"postgres":{"id":"credential-id","name":"Postgres account"}},"typeVersion":2.6},{"id":"fa7ad08f-3440-4c37-ae50-dcf3bf525aa2","name":"Get Customer1","type":"n8n-nodes-base.postgres","position":[2256,1152],"parameters":{"query":"SELECT phone, language, first_name FROM customers WHERE website_id = {{ $('Select rows from a table6').item.json.website_id }}","options":{},"operation":"executeQuery"},"credentials":{"postgres":{"id":"credential-id","name":"Postgres account"}},"typeVersion":2},{"id":"5f221872-1c2e-4f0e-90f0-d1fd83b4b142","name":"Check Language","type":"n8n-nodes-base.if","position":[2464,1152],"parameters":{"conditions":{"string":[{"value1":"={{ ($('Get Customer1').item.json.language || 'en').trim().substring(0, 2) }}","value2":"ar"}]}},"typeVersion":1},{"id":"a95ed7ff-3755-4f60-bc45-757436a953b5","name":"If10","type":"n8n-nodes-base.if","position":[2672,960],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"4e62f9c7-e498-4f22-8b94-2d9d2f72a806","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $('Phone Validator').item.json.phone }}","rightValue":"=+96897666604"},{"id":"fe42ee4c-90fa-4daa-a7fb-be978382acb7","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $('Phone Validator').item.json.phone }}","rightValue":"+1234567890"}]}},"typeVersion":2.3},{"id":"b63cc981-23db-413b-82ce-368981374730","name":"If11","type":"n8n-nodes-base.if","position":[2672,1344],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"4e62f9c7-e498-4f22-8b94-2d9d2f72a806","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $('Phone Validator').item.json.phone }}","rightValue":"=+96897666604"},{"id":"fe42ee4c-90fa-4daa-a7fb-be978382acb7","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $('Phone Validator').item.json.phone }}","rightValue":"+1234567890"}]}},"typeVersion":2.3},{"id":"431ba0fb-59f1-43c9-80f4-239525e516d2","name":"WhatsApp Shipped AR","type":"n8n-nodes-base.httpRequest","position":[2912,944],"parameters":{"url":"https://graph.facebook.com/v18.0/819420977915834/messages","method":"POST","options":{},"jsonBody":"={\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{ $('Phone Validator').item.json.phone.replace('+', '') }}\",\n  \"type\": \"text\",\n  \"text\": {\n    \"body\": \"مرحبًا {{ $('Get Customer1').item.json.first_name }}،\\n\\nيسرّنا إعلامكم بأنه تم شحن طلبكم بنجاح.\\nرقم الطلب: {{ $('fulfilment').item.json.order_id }}\\nرقم التتبع: {{ $('fulfilment').item.json.tracking_number }}\\nشركة الشحن: {{ $('fulfilment').item.json.tracking_company }}\\nرابط التتبع : {{ $('fulfilment').item.json.tracking_url }}\\nالمدة المتوقعة للتوصيل: من 7 إلى 12 يوم عمل.\\n\\nيمكنكم متابعة حالة الشحنة عبر رقم التتبع، وسنحرص على إبقائكم على اطلاع حتى استلام الطلب.\\nنشكركم على ثقتكم بعُمان لاكجري.\\n\\nمع أطيب التحيات،\\nعُمان لاكجري\"\n  }\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"credential-id","name":"whatsapp"}},"typeVersion":4},{"id":"6d6fac70-72c3-4c35-9291-11e0b63bd4dd","name":"WhatsApp Shipped EN1","type":"n8n-nodes-base.httpRequest","position":[2912,1328],"parameters":{"url":"https://graph.facebook.com/v18.0/819420977915834/messages","method":"POST","options":{},"jsonBody":"={\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{ $('Phone Validator').item.json.phone.replace('+', '') }}\",\n  \"type\": \"text\",\n  \"text\": {\n    \"body\": \"Hello {{ $('Get Customer1').item.json.first_name }},\\n\\nWe are pleased to inform you that your order has been shipped successfully.\\n\\nOrder No: {{ $('fulfilment').item.json.order_id }}\\nTracking No: {{ $('fulfilment').item.json.tracking_number }}\\nCourier Company: {{ $('fulfilment').item.json.tracking_company }}\\nTracking Url: {{ $('fulfilment').item.json.tracking_url }}\\nEstimated delivery time: 7–12 business days.\\n\\nYou may track your shipment using the tracking number provided. We will continue to keep you informed until your order is delivered.\\nT  }\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"credential-id","name":"whatsapp"}},"typeVersion":4},{"id":"8ba4a7f3-90d8-4a9f-81d5-6c0aba6b5cc2","name":"fulfilment","type":"n8n-nodes-base.shopifyTrigger","position":[1472,1152],"webhookId":"5d5fab2e-489f-4401-bd9a-d2b70e511d5d","parameters":{"topic":"fulfillments/create","authentication":"accessToken"},"credentials":{"shopifyAccessTokenApi":{"id":"credential-id","name":"oman account"}},"typeVersion":1},{"id":"474ccf63-f94e-40e6-bc63-b41448e7c222","name":"Sticky Note15","type":"n8n-nodes-base.stickyNote","position":[736,320],"parameters":{"width":560,"height":1744,"content":"---\n\n## 🎯 Key Features\n- ✅ **Real-time Fulfillment Sync:** Instant database update when order ships\n- ✅ **Complete Tracking Info:** Includes tracking number, company, and URL\n- ✅ **Bilingual Support:** Auto-detects customer language preference from database\n- ✅ **Phone Validation:** Handles 23+ country codes with auto-formatting\n- ✅ **Test Protection:** Prevents notifications to development numbers\n- ✅ **Personalization:** Uses customer first name in greeting\n- ✅ **Delivery Expectations:** Sets clear 7-12 day timeline\n- ✅ **Professional Branding:** Luxury brand tone in both languages\n- ✅ **Trackable Links:** Includes clickable tracking URL\n\n---\n\n## 📊 Database Operations\n\n### **Orders Table Update**\n- **Status Change:** 'open/paid' → 'shipped'\n- **New Fields Added:**\n  - shipping_company: Courier service name\n  - tracking_number: Package tracking ID\n- **Lookup Key:** order_id (from Shopify)\n- **Returns:** customer_id for subsequent queries\n\n### **Customers Table Query**\n- **Lookup:** By website_id (Shopify customer ID)\n- **Retrieved:** phone, language, first_name\n- **Purpose:** Get communication preferences\n\n---\n\n## 📞 Technical Details\n- **WhatsApp API Version:** v18.0\n- **API Endpoint:** graph.facebook.com/v18.0/819420977915834/messages\n- **Authentication:** Bearer YOUR_TOKEN_HERE (credential: \"whatsapp mira\")\n- **Phone Format:** International format with country code (+CountryCode + Number)\n- **API Phone Format:** Removes '+' before sending to WhatsApp API\n- **Database:** PostgreSQL\n- **Credential Name:** \"Postgres account\"\n- **Default Country:** Oman (+968) if country_code not detected\n- **Test Numbers Blocked:** \n  - +96897666604 (Oman)\n  - +962798087441 (Jordan)\n\n---\n\n## 🔄 Data Flow Summary\n1. **Fulfillment created** → Shopify webhook fires\n2. **Update order status** → Mark as 'shipped' with tracking details\n3. **Lookup customer** → Find by phone from fulfillment data\n4. **Validate phone** → Format with country code\n5. **Get preferences** → Retrieve language and name from database\n6. **Detect language** → Route to AR or EN path\n7. **Filter tests** → Skip internal phone numbers\n8. **Send notification** → WhatsApp message with tracking info\n\n---\n\n## 💼 Business Logic\n- **Delivery Window:** Consistently communicates 7-12 business days\n- **Brand Voice:** Professional luxury brand tone\n- **Customer Service:** Proactive communication at shipping milestone\n- **Tracking Empowerment:** Provides all tools for self-service tracking\n- **Multi-channel Sync:** Database, Shopify, and WhatsApp aligned\n\n---\n\n## 🌐 Multi-language Support\n| Element | Arabic | English |\n|---------|--------|---------|\n| Greeting | مرحبًا | Hello |\n| Status | تم شحن طلبكم بنجاح | Successfully shipped |\n| Order No | رقم الطلب | Order No |\n| Tracking No | رقم التتبع | Tracking No |\n| Courier | شركة الشحن | Courier Company |\n| Delivery | من 7 إلى 12 يوم عمل | 7–12 business days |\n"},"typeVersion":1},{"id":"a2592b35-7df6-48c8-b193-48483233cc50","name":"Sticky Note18","type":"n8n-nodes-base.stickyNote","position":[3168,832],"parameters":{"color":6,"width":672,"height":864,"content":"\n### **8A. Arabic Shipping Notification - \"WhatsApp Shipped AR\"**\n- **Type:** HTTP Request (POST)\n- **Endpoint:** Facebook Graph API v18.0 (WhatsApp Business)\n- **Phone Format:** Removes '+' prefix before API call\n- **Message Content (Arabic):**\n  - **Greeting:** \"مرحبًا [first_name]\" (Hello)\n  - **Status:** \"تم شحن طلبكم بنجاح\" (Your order has been shipped successfully)\n  - **Order Details:**\n    - رقم الطلب (Order No): order_id\n    - رقم التتبع (Tracking No): tracking_number\n    - شركة الشحن (Courier): tracking_company\n    - رابط التتبع (Tracking URL): tracking_url\n  - **Delivery Time:** 7-12 business days (in Arabic)\n  - **Instructions:** Can track via tracking number\n- **Tone:** Formal, professional Arabic suitable for luxury brand\n- **Purpose:** Send comprehensive shipping notification to Arabic-speaking customers\n\n---\n\n### **8B. English Shipping Notification - \"WhatsApp Shipped EN1\"**\n- **Type:** HTTP Request (POST)\n- **Endpoint:** Same WhatsApp Business API\n- **Phone Format:** Removes '+' prefix\n- **Message Content (English):**\n  - **Greeting:** \"Hello [first_name]\"\n  - **Status:** \"Your order has been shipped successfully\"\n  - **Order Details:**\n    - Order No: order_id\n    - Tracking No: tracking_number\n    - Courier Company: tracking_company\n    - Tracking URL: tracking_url\n  - **Delivery Time:** 7-12 business days\n  - **Instructions:** Track shipment using tracking number\n  \"\n- **Tone:** Professional, informative English\n- **Purpose:** Send comprehensive shipping notification to English-speaking customers\n\n"},"typeVersion":1}],"pinData":{},"connections":{"If10":{"main":[[{"node":"WhatsApp Shipped AR","type":"main","index":0}]]},"If11":{"main":[[{"node":"WhatsApp Shipped EN1","type":"main","index":0}]]},"fulfilment":{"main":[[{"node":"Update Order Shipped1","type":"main","index":0}]]},"Get Customer1":{"main":[[{"node":"Check Language","type":"main","index":0}]]},"Check Language":{"main":[[{"node":"If10","type":"main","index":0}],[{"node":"If11","type":"main","index":0}]]},"Phone Validator":{"main":[[{"node":"Get Customer1","type":"main","index":0}]]},"Update Order Shipped1":{"main":[[{"node":"Select rows from a table6","type":"main","index":0}]]},"Select rows from a table6":{"main":[[{"node":"Phone Validator","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":12,"nodeTypes":{"n8n-nodes-base.if":{"count":3},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.postgres":{"count":3},"n8n-nodes-base.stickyNote":{"count":2},"n8n-nodes-base.httpRequest":{"count":2},"n8n-nodes-base.shopifyTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Mira Melhem","username":"melhem","bio":"","verified":true,"links":["https://jobotai.site/"],"avatar":"https://gravatar.com/avatar/314fc0a056c4374a2b7e71f0ecd16feedea47f6cb173dbf75f18b549316e091c?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":30,"icon":"file:postgres.svg","name":"n8n-nodes-base.postgres","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-i-chose-n8n-over-zapier-in-2020/","icon":"😍","label":"Why I chose n8n over Zapier in 2020"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/postgres/"}]},"categories":["Development","Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Postgres"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNzkgODEiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTc3LjM5MSA0Ny45MjJjLS40NjYtMS40MTItMS42ODgtMi4zOTYtMy4yNjgtMi42MzItLjc0NS0uMTExLTEuNTk4LS4wNjQtMi42MDguMTQ0LTEuNzYuMzYzLTMuMDY1LjUwMS00LjAxOC41MjggMy41OTYtNi4wNzIgNi41MjEtMTIuOTk3IDguMjA0LTE5LjUxNSAyLjcyMi0xMC41NCAxLjI2OC0xNS4zNDEtLjQzMi0xNy41MTNDNzAuNzcgMy4xODUgNjQuMjA2LjA5NyA1Ni4yODcuMDAyYy00LjIyNC0uMDUyLTcuOTMzLjc4Mi05Ljg2NyAxLjM4MmEzNyAzNyAwIDAgMC01Ljc3LS41MjhjLTMuODA5LS4wNjEtNy4xNzQuNzctMTAuMDUgMi40NzZhNDYgNDYgMCAwIDAtNy4wOTgtMS43ODJDMTYuNTYxLjQxMSAxMC45NjggMS4yOTkgNi44NzYgNC4xOSAxLjkyMiA3LjY4OS0uMzc1IDEzLjc3LjA1IDIyLjI2MmMuMTM1IDIuNjk2IDEuNjQzIDEwLjkgNC4wMTggMTguNjggMS4zNjUgNC40NzIgMi44MiA4LjE4NSA0LjMyNiAxMS4wMzggMi4xMzUgNC4wNDYgNC40MTkgNi40MjggNi45ODQgNy4yODQgMS40MzguNDc5IDQuMDQ5LjgxNCA2Ljc5Ny0xLjQ3M2E2IDYgMCAwIDAgMS40MjkgMS4yM2MuNzgzLjQ5NCAxLjc0Ljg5NyAyLjY5NiAxLjEzNiAzLjQ0Ni44NjIgNi42NzQuNjQ2IDkuNDI3LS41NjFsLjA0MSAxLjM2Mi4wNiAxLjg5OWMuMTYzIDQuMDY0LjQ0IDcuMjIzIDEuMjU5IDkuNDM0LjA0NS4xMjIuMTA1LjMwNy4xNjkuNTAzLjQwOSAxLjI1MSAxLjA5MiAzLjM0NiAyLjgzIDQuOTg3IDEuOCAxLjY5OSAzLjk3OCAyLjIyIDUuOTcyIDIuMjIgMSAwIDEuOTU1LS4xMzEgMi43OTItLjMxMSAyLjk4NC0uNjM5IDYuMzczLTEuNjE0IDguODI0LTUuMTA0IDIuMzE4LTMuMyAzLjQ0NC04LjI3IDMuNjQ4LTE2LjEwMWwuMDc0LS42MzQuMDQ4LS40MTQuNTQ2LjA0OC4xNDEuMDFjMy4wMzkuMTM4IDYuNzU1LS41MDYgOS4wMzctMS41NjYgMS44MDMtLjgzNyA3LjU4Mi0zLjg4OCA2LjIyMS04LjAwNyIvPjxwYXRoIGZpbGw9IiMzMzY3OTEiIGQ9Ik03Mi4xOTUgNDguNzIzYy05LjAzNiAxLjg2NC05LjY1Ny0xLjE5NS05LjY1Ny0xLjE5NSA5LjU0MS0xNC4xNTcgMTMuNTI5LTMyLjEyNyAxMC4wODctMzYuNTI1QzYzLjIzNS0uOTk0IDQ2Ljk4MSA0LjY4IDQ2LjcxIDQuODI3bC0uMDg3LjAxNmMtMS43ODUtLjM3MS0zLjc4My0uNTkxLTYuMDI5LS42MjgtNC4wODktLjA2Ny03LjE5IDEuMDcyLTkuNTQ0IDIuODU3IDAgMC0yOC45OTUtMTEuOTQ1LTI3LjY0NyAxNS4wMjMuMjg3IDUuNzM3IDguMjIzIDQzLjQxIDE3LjY4OSAzMi4wMzEgMy40Ni00LjE2MSA2LjgwMy03LjY3OSA2LjgwMy03LjY3OSAxLjY2IDEuMTAzIDMuNjQ4IDEuNjY2IDUuNzMyIDEuNDYzbC4xNjItLjEzN2E2LjMgNi4zIDAgMCAwIC4wNjUgMS42MmMtMi40MzkgMi43MjUtMS43MjIgMy4yMDMtNi41OTcgNC4yMDYtNC45MzMgMS4wMTctMi4wMzUgMi44MjYtLjE0MyAzLjI5OSAyLjI5NC41NzQgNy42IDEuMzg2IDExLjE4NS0zLjYzM2wtLjE0My41NzNjLjk1Ni43NjUgMS42MjYgNC45NzggMS41MTQgOC43OTdzLS4xODggNi40NDEuNTY1IDguNDg5IDEuNTAzIDYuNjU2IDcuOTEyIDUuMjgyYzUuMzU1LTEuMTQ4IDguMTMtNC4xMjEgOC41MTYtOS4wODEuMjc0LTMuNTI2Ljg5NC0zLjAwNS45MzMtNi4xNThsLjQ5Ny0xLjQ5M2MuNTczLTQuNzguMDkxLTYuMzIyIDMuMzktNS42MDVsLjgwMi4wN2MyLjQyOC4xMSA1LjYwNi0uMzkxIDcuNDcxLTEuMjU3IDQuMDE2LTEuODY0IDYuMzk4LTQuOTc2IDIuNDM4LTQuMTU4Ii8+PHBhdGggZD0iTTMyLjc0NyAyNC42NmMtLjgxNC0uMTEzLTEuNTUyLS4wMDgtMS45MjUuMjc0YS43LjcgMCAwIDAtLjI5Mi40N2MtLjA0Ny4zMzYuMTg4LjcwNy4zMzMuODk4LjQwOS41NDIgMS4wMDYuOTE1IDEuNTk4Ljk5N2EyIDIgMCAwIDAgLjI1Ni4wMThjLjk4NiAwIDEuODgzLS43NjggMS45NjItMS4zMzUuMDk5LS43MS0uOTMyLTEuMTgzLTEuOTMxLTEuMzIybTI2Ljk3NS4wMjJjLS4wNzgtLjU1Ni0xLjA2OC0uNzE1LTIuMDA3LS41ODRzLTEuODQ4LjU1NC0xLjc3MiAxLjExMmMuMDYxLjQzNC44NDQgMS4xNzQgMS43NzEgMS4xNzRxLjExNyAwIC4yMzctLjAxNmMuNjE5LS4wODYgMS4wNzMtLjQ3OSAxLjI4OC0uNzA1LjMyOS0uMzQ1LjUxOC0uNzMuNDg0LS45OG0xNS40NzcgMjMuODI4Yy0uMzQ1LTEuMDQyLTEuNDUzLTEuMzc3LTMuMjk2LS45OTctNS40NzEgMS4xMjktNy40My4zNDctOC4wNzMtLjEyNyA0LjI1Mi02LjQ3OCA3Ljc1LTE0LjMwOCA5LjYzNy0yMS42MTQuODk0LTMuNDYxIDEuMzg4LTYuNjc1IDEuNDI4LTkuMjk0LjA0NS0yLjg3Ni0uNDQ1LTQuOTg4LTEuNDU1LTYuMjc5LTQuMDcyLTUuMjAzLTEwLjA0OC03Ljk5NC0xNy4yODMtOC4wNy00Ljk3My0uMDU2LTkuMTc1IDEuMjE3LTkuOTkgMS41NzVhMjUgMjUgMCAwIDAtNS42MjItLjcyMmMtMy43MzQtLjA2LTYuOTYxLjgzNC05LjYzMyAyLjY1NWE0MyA0MyAwIDAgMC03LjgyOC0yLjA1MmMtNi4zNDItMS4wMjEtMTEuMzgxLS4yNDgtMTQuOTc4IDIuMy00LjI5MSAzLjA0LTYuMjcyIDguNDc1LTUuODg4IDE2LjE1Mi4xMjkgMi41ODMgMS42MDEgMTAuNTI5IDMuOTIzIDE4LjEzOSAzLjA1NyAxMC4wMTYgNi4zOCAxNS42ODYgOS44NzcgMTYuODUyYTQuNCA0LjQgMCAwIDAgMS40MDIuMjMyYzEuMjc2IDAgMi44MzktLjU3NSA0LjQ2Ni0yLjUzMWExNjEgMTYxIDAgMCAxIDYuMTU2LTYuOTY2IDkuOSA5LjkgMCAwIDAgNC40MjkgMS4xOTFsLjAxLjEyMWMtLjMxLjM2OC0uNTY0LjY5LS43ODEuOTY1LTEuMDcgMS4zNTgtMS4yOTMgMS42NDEtNC43MzggMi4zNTEtLjk4LjIwMi0zLjU4Mi43MzgtMy42MiAyLjU2My0uMDQxIDEuOTkzIDMuMDc2IDIuODMgMy40MzEgMi45MTkgMS4yMzguMzEgMi40My40NjMgMy41NjguNDYzIDIuNzY2IDAgNS4yLS45MDkgNy4xNDUtMi42NjgtLjA2IDcuMTA2LjIzNiAxNC4xMDcgMS4wODkgMTYuMjQxLjY5OSAxLjc0NiAyLjQwNiA2LjAxNCA3Ljc5OCA2LjAxNC43OTEgMCAxLjY2Mi0uMDkyIDIuNjItLjI5NyA1LjYyNy0xLjIwNyA4LjA3MS0zLjY5NCA5LjAxNi05LjE3Ny41MDYtMi45MyAxLjM3NC05LjkyOCAxLjc4Mi0xMy42ODIuODYyLjI2OSAxLjk3MS4zOTIgMy4xNy4zOTIgMi41MDEgMCA1LjM4Ny0uNTMxIDcuMTk3LTEuMzcyIDIuMDMzLS45NDQgNS43MDItMy4yNjEgNS4wMzctNS4yNzR6TTYxLjggMjMuMTQ3Yy0uMDE5IDEuMTA4LS4xNzEgMi4xMTQtLjMzMyAzLjE2NC0uMTc0IDEuMTI5LS4zNTQgMi4yOTctLjM5OSAzLjcxNS0uMDQ1IDEuMzc5LjEyOCAyLjgxNC4yOTQgNC4yLjMzNyAyLjgwMS42ODIgNS42ODUtLjY1NSA4LjUzMWExMSAxMSAwIDAgMS0uNTkyLTEuMjE4Yy0uMTY2LS40MDMtLjUyNy0xLjA1LTEuMDI3LTEuOTQ2LTEuOTQ0LTMuNDg3LTYuNDk3LTExLjY1Mi00LjE2Ny0xNC45ODQuNjk0LS45OTIgMi40NTYtMi4wMTEgNi44NzktMS40NjN6TTU2LjQzOSA0LjM3NGM2LjQ4Mi4xNDMgMTEuNjA5IDIuNTY4IDE1LjI0IDcuMjA3IDIuNzg0IDMuNTU4LS4yODIgMTkuNzQ5LTkuMTU4IDMzLjcxNmwtLjI2OS0uMzM5LS4xMTItLjE0YzIuMjk0LTMuNzg4IDEuODQ1LTcuNTM2IDEuNDQ2LTEwLjg1OS0uMTY0LTEuMzY0LS4zMTktMi42NTItLjI4LTMuODYxLjA0MS0xLjI4My4yMS0yLjM4Mi4zNzQtMy40NDYuMjAyLTEuMzExLjQwNy0yLjY2Ny4zNS00LjI2NWExLjggMS44IDAgMCAwIC4wMzctLjYwMWMtLjE0NC0xLjUzMy0xLjg5NC02LjEyLTUuNDYyLTEwLjI3My0xLjk1MS0yLjI3MS00Ljc5Ny00LjgxMy04LjY4Mi02LjUyN2EyOS4zIDI5LjMgMCAwIDEgNi41MTUtLjYxMnpNMjAuMTY3IDUzLjI5OGMtMS43OTMgMi4xNTUtMy4wMzEgMS43NDItMy40MzggMS42MDctMi42NTMtLjg4NS01LjczLTYuNDkxLTguNDQ0LTE1LjM4Mi0yLjM0OC03LjY5My0zLjcyLTE1LjQyOC0zLjgyOS0xNy41OTctLjM0My02Ljg2IDEuMzItMTEuNjQxIDQuOTQzLTE0LjIxIDUuODk2LTQuMTgxIDE1LjU4OS0xLjY3OSAxOS40ODQtLjQwOWwtLjE3LjE2M2MtNi4zOTEgNi40NTUtNi4yNCAxNy40ODMtNi4yMjQgMTguMTU3YTIyIDIyIDAgMCAwIC4wNTEgMS4xMzVjLjExIDEuODU1LjMxNSA1LjMwNy0uMjMyIDkuMjE3LS41MDggMy42MzMuNjEyIDcuMTg5IDMuMDcyIDkuNzU2cS4zODMuMzk4Ljc5NS43NWExNjQgMTY0IDAgMCAwLTYuMDA4IDYuODE0em02LjgzLTkuMTEzYy0xLjk4My0yLjA2OS0yLjg4NC00Ljk0Ny0yLjQ3MS03Ljg5Ni41NzctNC4xMy4zNjQtNy43MjcuMjUtOS42NTlsLS4wMzktLjY5NGMuOTM0LS44MjggNS4yNjEtMy4xNDYgOC4zNDYtMi40MzkgMS40MDguMzIzIDIuMjY2IDEuMjgxIDIuNjIzIDIuOTMxIDEuODQ2IDguNTM5LjI0NCAxMi4wOTgtMS4wNDMgMTQuOTU3LS4yNjUuNTg5LS41MTYgMS4xNDYtLjczIDEuNzIybC0uMTY2LjQ0NWMtLjQyIDEuMTI2LS44MTEgMi4xNzMtMS4wNTMgMy4xNjctMi4xMDgtLjAwNi00LjE1OS0uOTA3LTUuNzE4LTIuNTM0em0uMzI0IDExLjUxNmE1IDUgMCAwIDEtMS40OTQtLjY0MmMuMjcxLS4xMjguNzU0LS4zMDEgMS41OTEtLjQ3NCA0LjA1Mi0uODM0IDQuNjc4LTEuNDIzIDYuMDQ1LTMuMTU4LjMxMy0uMzk4LjY2OS0uODQ5IDEuMTYtMS4zOTguNzMzLS44MjEgMS4wNjgtLjY4MiAxLjY3Ni0uNDMuNDkzLjIwNC45NzIuODIxIDEuMTY3IDEuNTAxLjA5Mi4zMjEuMTk1LjkzLS4xNDMgMS40MDQtMi44NTUgMy45OTctNy4wMTUgMy45NDYtMTAuMDAzIDMuMTk4em0yMS4yMDcgMTkuNzM1Yy00Ljk1NyAxLjA2Mi02LjcxMy0xLjQ2Ny03Ljg2OS00LjM1OS0uNzQ3LTEuODY3LTEuMTEzLTEwLjI4NS0uODUzLTE5LjU4MmExLjEgMS4xIDAgMCAwLS4wNDgtLjM1NiA1IDUgMCAwIDAtLjEzOS0uNjU3Yy0uMzg3LTEuMzUzLTEuMzMxLTIuNDg0LTIuNDYyLTIuOTUzLS40NS0uMTg2LTEuMjc1LS41MjgtMi4yNjctLjI3NC4yMTItLjg3MS41NzgtMS44NTUuOTc2LTIuOTIxbC4xNjctLjQ0OGMuMTg4LS41MDUuNDIzLTEuMDI5LjY3My0xLjU4MyAxLjM0Ny0yLjk5MiAzLjE5Mi03LjA5MSAxLjE5LTE2LjM1LS43NS0zLjQ2OC0zLjI1NC01LjE2MS03LjA1LTQuNzY4LTIuMjc2LjIzNS00LjM1OCAxLjE1NC01LjM5NiAxLjY4cS0uMzM0LjE2OS0uNjE4LjMyOWMuMjktMy40OTQgMS4zODUtMTAuMDI0IDUuNDgxLTE0LjE1NiAyLjU3OS0yLjYwMSA2LjAxNC0zLjg4NiAxMC4xOTktMy44MTcgOC4yNDYuMTM1IDEzLjUzNCA0LjM2NyAxNi41MTggNy44OTMgMi41NzEgMy4wMzkgMy45NjQgNi4xIDQuNTIgNy43NTEtNC4xNzktLjQyNS03LjAyMi40LTguNDYzIDIuNDYtMy4xMzUgNC40ODEgMS43MTUgMTMuMTc4IDQuMDQ2IDE3LjM1OC40MjcuNzY2Ljc5NiAxLjQyOC45MTIgMS43MDkuNzU5IDEuODM5IDEuNzQyIDMuMDY3IDIuNDU5IDMuOTY0LjIyLjI3NS40MzMuNTQxLjU5Ni43NzQtMS4yNjYuMzY1LTMuNTM5IDEuMjA4LTMuMzMyIDUuNDIyLS4xNjcgMi4xMTUtMS4zNTYgMTIuMDE2LTEuOTU5IDE1LjUxNC0uNzk3IDQuNjIxLTIuNDk3IDYuMzQzLTcuMjc5IDcuMzY4em0yMC42OTMtMjMuNjhjLTEuMjk0LjYwMS0zLjQ2IDEuMDUyLTUuNTE4IDEuMTQ4LTIuMjczLjEwNy0zLjQzLS4yNTUtMy43MDItLjQ3Ny0uMTI4LTIuNjI2Ljg1LTIuOTAxIDEuODg0LTMuMTkxLjE2My0uMDQ2LjMyMS0uMDkuNDc0LS4xNDRhNCA0IDAgMCAwIC4zMTMuMjNjMS44MjcgMS4yMDYgNS4wODUgMS4zMzYgOS42ODUuMzg2bC4wNS0uMDFjLS42Mi41OC0xLjY4MiAxLjM1OS0zLjE4NyAyLjA1OHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Postgres","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":5,"name":"Development"}]},{"id":107,"icon":"file:shopify.svg","name":"n8n-nodes-base.shopifyTrigger","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.shopifytrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/shopify/"}]},"categories":["Sales"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Shopify Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNTggNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzk1YmY0NyIgZD0iTTQ5LjI1NSAxMi40ODRhLjYzLjYzIDAgMCAwLS41NjQtLjUyN2MtLjIyNS0uMDM3LTUuMTctLjM3Ni01LjE3LS4zNzZsLTMuNzctMy43N2MtLjM0LS4zNzYtMS4wOTItLjI2Ni0xLjM3Ni0uMTg4LS4wMzcgMC0uNzUyLjIyNS0xLjkyMi42MDUtMS4xMzctMy4zLTMuMTUtNi4zMDYtNi42OTYtNi4zMDZoLS4zMDNDMjguNDM4LjYwNSAyNy4xOTQgMCAyNi4xNDQgMGMtOC4yNTYuMDM3LTEyLjIgMTAuMzMzLTEzLjQzNCAxNS41OTRsLTUuNzcgMS43N2MtMS43Ny41NjQtMS44MzUuNjA1LTIuMDczIDIuMjkzTDAgNTcuMTc1IDM2LjQ2OCA2NGwxOS43NjMtNC4yNmMwLS4wMzctNi45NC00Ni44OTctNi45NzYtNDcuMjU1ek0zNC40MzEgOC44NmMtLjkxNy4zMDMtMS45NjMuNjA1LTMuMS45NDV2LS42OGExNSAxNSAwIDAgMC0uNzUyLTQuOTk5YzEuODQ4LjI4NCAzLjEgMi4zNTcgMy44NDMgNC43MzN6bS02LjA2OC00LjI5OGMuNjAzIDEuNzc4Ljg4MyAzLjY1LjgyNiA1LjUyN3YuMzRsLTYuMzc1IDEuOTYzYzEuMjQ4LTQuNjYgMy41NS02Ljk2MiA1LjU1LTcuODN6bS0yLjQ1LTIuMjkzYTEuOTQgMS45NCAwIDAgMSAxLjA1NS4zMzljLTIuNjYgMS4yMzgtNS40NzIgNC4zNjYtNi42NzggMTAuNjI3bC01LjA0NSAxLjU0NkMxNi42NjggMTAuMDMgMTkuOTg4IDIuMjYgMjUuOTEgMi4yNnoiLz48cGF0aCBmaWxsPSIjNWU4ZTNlIiBkPSJNNDguNjkxIDExLjk1N2MtLjIyNS0uMDM3LTUuMTctLjM3Ni01LjE3LS4zNzZsLTMuNzctMy43N2EuNzUuNzUgMCAwIDAtLjUyNy0uMjI1TDM2LjQ3MiA2NGwxOS43NjMtNC4yNi02Ljk4LTQ3LjIxOGEuNjguNjggMCAwIDAtLjU2NC0uNTY0eiIvPjxwYXRoIGQ9Im0yOS43NTggMjIuOS0yLjQ1NCA3LjI0MmExMS40IDExLjQgMCAwIDAtNC43NTItMS4xMzNjLTMuODQ4IDAtNC4wMzYgMi40MTItNC4wMzYgMy4wMTggMCAzLjI5OCA4LjYzNiA0LjU2NCA4LjYzNiAxMi4zMzMgMCA2LjEtMy44ODUgMTAuMDMtOS4xIDEwLjAzLTYuMjYgMC05LjQ2Ny0zLjg4NS05LjQ2Ny0zLjg4NWwxLjY2NS01LjU1czMuMjggMi44MyA2LjA3MyAyLjgzYTIuNDcgMi40NyAwIDAgMCAyLjU2NC0yLjQ5YzAtNC4zNC03LjEtNC41MjctNy4xLTExLjYxOCAwLTUuOTYyIDQuMjk4LTExLjc3IDEyLjkzNC0xMS43NyAzLjM5NC4wNSA1LjAxOCAxIDUuMDE4IDF6Ii8+PC9nPjwvc3ltYm9sPjwvc3ZnPg=="},"displayName":"Shopify Trigger","typeVersion":1,"nodeCategories":[{"id":2,"name":"Sales"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":45,"name":"Miscellaneous"}],"image":[]}}