{
  "workflow": {
    "id": 10838,
    "name": "Sync HighLevel CRM to Google Sheets with GPT-4o daily reports via Gmail",
    "views": 52,
    "recentViews": 0,
    "totalViews": 52,
    "createdAt": "2025-11-14T14:52:29.693Z",
    "description": "## 📘 Description:\n This workflow automates a complete CRM → Sheets → AI → Email reporting pipeline for HighLevel opportunities.\n It fetches fresh opportunity data from HighLevel, validates and normalizes every record, syncs all structured opportunities into a Google Sheet, merges them into a single dataset, and then uses GPT-4o to generate a clean, Gmail-friendly HTML report summarizing all opportunities for the day.\n Finally, it emails the formatted report directly to the sales inbox—creating a fully automated, zero-touch Daily Opportunity Insight System.\n Invalid or incomplete CRM entries are logged automatically, ensuring data hygiene and auditability.\n\n## ⚙️ What This Workflow Does (Step-by-Step)\n\n▶️ When Clicking ‘Execute Workflow’ (Manual Trigger)\n Starts the daily reporting pipeline manually or on schedule.\n\n📥 Fetch Opportunities from HighLevel CRM\n Retrieves the latest opportunities (limit = 5) from HighLevel along with company, contact, source, and pipeline metadata.\n Acts as the primary CRM input.\n\n🔍 Validate Opportunity Data Payload (IF Node)\n Checks whether each record contains a valid id.\n ✅ Valid → proceed to extraction and normalization\n ❌ Invalid → sent to Google Sheets for cleanup\n\n⚠️ Log Invalid Opportunities to Google Sheets\n Saves corrupt or incomplete CRM payloads into an error sheet.\n Supports CRM maintenance and future corrective actions.\n\n🧾 Extract Key Fields from HighLevel Data (Code Node)\n Pulls only essential fields from each opportunity:\n id, name, company, email, phone, source, assignedTo, pipelineId, stageId, tags, monetaryValue, and timestamps.\n Produces a simplified, uniform data structure.\n\n🛠 Normalize Opportunity Structure (Code Node)\n Cleans and standardizes each opportunity’s schema:\n ensures consistent field naming, fills contact info when nested, resolves pipeline/stage fields, and finalizes structure for sheet update.\n\n📊 Update Opportunity Records in Google Sheets\n Upserts (append/update) each opportunity into the ghl database tab of sample_leads_50.\n Matching key: id\n Keeps HighLevel CRM and Google Sheets fully synced.\n\n🧩 Merge All Opportunities into a Single JSON Array\n Combines every normalized opportunity into one array named opportunities.\n This consolidated payload is passed to GPT-4o for table generation.\n\n🧠 Configure GPT-4o Model (Azure OpenAI)\n Initializes GPT-4o as the AI engine responsible for generating the final HTML summary.\n\n📄 Generate Daily Opportunity Summary Report (AI Agent)\n GPT-4o transforms the merged opportunity dataset into a structured HTML report:\n<h2>Daily Opportunity Summary</h2>\nA short descriptive paragraph\nA full-width Gmail-friendly table with padded cells\nHeader background #f5f5f5\nColumns in fixed order:\nName, Company, Email, Phone, Source, Pipeline ID, Stage ID, Value, Created At\nAll nulls replaced with “–”\n Output is pure HTML—no markdown.\n\n📧 Send Daily Opportunity Summary via Gmail\n Emails the final HTML report to the internal sales inbox with subject:\n“Daily Opportunity Report – Summary of New Leads”\n Optimized for Gmail + Outlook rendering.\n\n## 🧩 Prerequisites\nHighLevel OAuth connection\nAzure OpenAI GPT-4o credentials\nGoogle Sheets OAuth (Techdome account)\nGmail API connection for report delivery\n\n## 💡 Key Benefits\n ✅ Automatic syncing of HighLevel CRM opportunities into Sheets\n ✅ AI-generated HTML dashboards without manual formatting\n ✅ Clean, readable daily insights for sales teams\n ✅ Built-in error logging for bad CRM records\n ✅ Zero manual intervention required after setup\n\n## 👥 Perfect For\nSales & Growth Teams using HighLevel CRM\nOperations teams maintaining CRM hygiene\nAgencies needing daily pipeline visibility\nOrganizations wanting automated AI-generated opportunity summaries\n",
    "workflow": {
      "id": "XDPNH4sW5lnVmzdE",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "AI-Powered HighLevel → Google Sheets Sync & Daily HTML Report Workflow (GPT-4o + Gmail)",
      "tags": [],
      "nodes": [
        {
          "id": "f28f8aca-d06c-4fd1-9783-42614b274efa",
          "name": "When clicking ‘Execute workflow’",
          "type": "n8n-nodes-base.manualTrigger",
          "position": [
            -896,
            0
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "7b33aaf1-c1a5-45d2-a0b5-401f59c03bff",
          "name": "Configure GPT-4o Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
          "position": [
            992,
            512
          ],
          "parameters": {
            "model": "gpt-4o",
            "options": {}
          },
          "credentials": {
            "azureOpenAiApi": {
              "id": "credential-id",
              "name": "azureOpenAiApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "c36b8ef9-44fd-4758-a548-46a5714845b4",
          "name": "Fetch Opportunities from HighLevel CRM",
          "type": "n8n-nodes-base.highLevel",
          "position": [
            -640,
            0
          ],
          "parameters": {
            "limit": 5,
            "filters": {},
            "resource": "opportunity",
            "operation": "getAll",
            "requestOptions": {}
          },
          "credentials": {
            "highLevelOAuth2Api": {
              "id": "credential-id",
              "name": "highLevelOAuth2Api Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "8ff4a19e-7a48-4fb9-b9db-ab71e40d0453",
          "name": "Validate Opportunity Data Payload",
          "type": "n8n-nodes-base.if",
          "position": [
            -304,
            0
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "e2adb005-2b3c-4d1e-8445-442df1fe925a",
                  "operator": {
                    "type": "string",
                    "operation": "notEmpty",
                    "singleValue": true
                  },
                  "leftValue": "={{ $json.id }}",
                  "rightValue": ""
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "2e5c99f5-43e0-4e6c-bc22-716c0e66dab9",
          "name": "Log Invalid Opportunities to Google Sheets",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            48,
            496
          ],
          "parameters": {
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "",
              "cachedResultUrl": "",
              "cachedResultName": ""
            },
            "documentId": {
              "__rl": true,
              "mode": "url",
              "value": ""
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "f778a6a3-977b-434a-88c1-ee88d5ea1ac4",
          "name": "Extract Key Fields from HighLevel Data",
          "type": "n8n-nodes-base.code",
          "position": [
            48,
            0
          ],
          "parameters": {
            "jsCode": "return items.map(item => {\n  const o = item.json;\n\n  return {\n    json: {\n      id: o.id,\n      name: o.name,\n      company: o.contact?.companyName || null,\n      email: o.contact?.email || null,\n      phone: o.contact?.phone || null,\n      source: o.source || null,\n      assignedTo: o.assignedTo || null,\n      pipelineId: o.pipelineId,\n      stageId: o.pipelineStageId,\n      tags: o.contact?.tags?.join(\", \") || null,\n      monetaryValue: o.monetaryValue || 0,\n      createdAt: o.createdAt,\n      updatedAt: o.updatedAt,\n      lastStageChangeAt: o.lastStageChangeAt\n    }\n  };\n});\n"
          },
          "typeVersion": 2
        },
        {
          "id": "afd30f6f-9eac-43d1-9e07-0788c7b4206e",
          "name": "Normalize Opportunity Structure",
          "type": "n8n-nodes-base.code",
          "position": [
            368,
            0
          ],
          "parameters": {
            "mode": "runOnceForEachItem",
            "jsCode": "const op = item.json;\n\nreturn {\n  json: {\n    id: op.id,\n    name: op.name,\n    company: op.company || op.contact?.companyName || null,\n    email: op.email || op.contact?.email || null,\n    phone: op.phone || op.contact?.phone || null,\n    source: op.source,\n    assignedTo: op.assignedTo,\n    pipelineId: op.pipelineId,\n    stageId: op.stageId || op.pipelineStageId,\n    tags: op.tags,\n    monetaryValue: op.monetaryValue,\n    createdAt: op.createdAt,\n    updatedAt: op.updatedAt,\n    lastStageChangeAt: op.lastStageChangeAt\n  }\n};\n"
          },
          "typeVersion": 2,
          "alwaysOutputData": false
        },
        {
          "id": "8d3c0c7b-6399-46ff-ac75-4f449da38428",
          "name": "Update Opportunity Records in Google Sheets",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            752,
            -624
          ],
          "parameters": {
            "columns": {
              "value": {
                "id": "={{ $json.id }}",
                "name": "={{ $json.name }}",
                "email": "={{ $json.email }}",
                "phone": "={{ $json.phone }}",
                "source": "={{ $json.source }}",
                "company": "={{ $json.company }}",
                "stageId": "={{ $json.stageId }}",
                "createdAt": "={{ $json.createdAt }}",
                "updatedAt": "={{ $json.updatedAt }}",
                "assignedTo": "={{ $json.assignedTo }}",
                "pipelineId": "={{ $json.pipelineId }}",
                "monetaryValue": "={{ $json.monetaryValue }}",
                "lastStageChangeAt": "={{ $json.lastStageChangeAt }}"
              },
              "schema": [
                {
                  "id": "id",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "id",
                  "defaultMatch": true,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "company",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "company",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "email",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "email",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "phone",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "phone",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "source",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "source",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "assignedTo",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "assignedTo",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "pipelineId",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "pipelineId",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "stageId",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "stageId",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "monetaryValue",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "monetaryValue",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "createdAt",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "createdAt",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "updatedAt",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "updatedAt",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "lastStageChangeAt",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "lastStageChangeAt",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "id"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 1423466972,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=1423466972",
              "cachedResultName": "ghl database"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
              "cachedResultName": "sample_leads_50"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "5ed73d10-d43b-448e-bca6-5b48dfb4c1d5",
          "name": "Merge All Opportunities into Single JSON Array",
          "type": "n8n-nodes-base.code",
          "position": [
            736,
            0
          ],
          "parameters": {
            "jsCode": "// All items come as array: items = [{json: {...}}, {json: {...}}, ...]\n\n// Extract only JSON data into a single array\nconst merged = items.map(i => i.json);\n\n// Return ONE item containing the whole array\nreturn [\n  {\n    json: {\n      opportunities: merged\n    }\n  }\n];\n"
          },
          "typeVersion": 2
        },
        {
          "id": "6dc96226-3f51-42fc-9f72-7f8bd2c06dd2",
          "name": "Send Daily Opportunity Summary via Gmail",
          "type": "n8n-nodes-base.gmail",
          "position": [
            1456,
            0
          ],
          "webhookId": "0c82c299-6938-42ed-bda6-5007d79af34f",
          "parameters": {
            "sendTo": "=newscctv22@gmail.com",
            "message": "={{ $json.output }}",
            "options": {},
            "subject": "=Daily Opportunity Report – Summary of New Leads"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "credential-id",
              "name": "gmailOAuth2 Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "e47b8d9d-6bac-47bd-b0fa-eba96ce7ec52",
          "name": "Generate Daily Opportunity Summary Report",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            992,
            0
          ],
          "parameters": {
            "text": "=You are given an array of opportunities in JSON format below.\n\nUse ONLY this data. \nDo NOT guess, invent, fill missing fields, or add any extra information.\nIf a field is null, replace it with \"-\".\n\nInput JSON:\n{{ JSON.stringify($json[\"opportunities\"], null, 2) }}\n\nYour task:\nGenerate a clean HTML report summarizing these opportunities.\n\nSTRICT RULES:\n- Output ONLY VALID HTML (no markdown, no backticks).\n- Use a simple, clean, Gmail-friendly table.\n- Include ALL rows exactly as they appear.\n- Column order must be:\n  Name, Company, Email, Phone, Source, Pipeline ID, Stage ID, Value, Created At\n\nHTML requirements:\n- <h2>Daily Opportunity Summary</h2>\n- A small description paragraph\n- A bordered table with header background (#f5f5f5)\n- Padding 8px in cells\n- Full width table\n- Use “-” for null values\n",
            "options": {
              "systemMessage": "=You must not invent or guess data. All values must come only from the user-provided JSON. Output only valid HTML with no markdown or code blocks.\n"
            },
            "promptType": "define"
          },
          "typeVersion": 2.1
        },
        {
          "id": "ba5645ff-e058-44f1-8c0a-120ba75c5441",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1536,
            -704
          ],
          "parameters": {
            "width": 656,
            "height": 496,
            "content": "## 📊 AI-Powered HighLevel → Google Sheets Sync & Daily HTML Report Workflow (GPT-4o + Gmail)  \nThis workflow syncs CRM opportunities from HighLevel into Google Sheets and automatically creates a daily HTML summary email using GPT-4o.\n\n### 🔹 Workflow Overview\n1️⃣ Fetch opportunities from HighLevel CRM  \n2️⃣ Validate records for completeness  \n3️⃣ Extract & normalize key fields  \n4️⃣ Update opportunities in Google Sheets  \n5️⃣ Merge all data into a single array  \n6️⃣ Use GPT-4o to create an HTML sales summary table  \n7️⃣ Email the final report to the sales team  \n\n### 🔹 Tools & Integrations\n- HighLevel CRM → Opportunity data source  \n- Google Sheets → Data storage  \n- Azure OpenAI (GPT-4o) → AI report generator  \n- Gmail → Automated daily summary delivery  \n- JavaScript Nodes → Data cleaning and transformation  \n"
          },
          "typeVersion": 1
        },
        {
          "id": "c5053949-91d9-499b-b9fa-09c4ad533c0c",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -704,
            -304
          ],
          "parameters": {
            "color": 7,
            "height": 544,
            "content": "## 🔗 Fetch Opportunities from HighLevel CRM  \nPulls recent opportunity data (limit: 5 by default) from your HighLevel CRM account.  \nIncludes contact details, company, source, and stage info.  \nThis is the main data entry point.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "023f1cfd-864e-4038-b968-2923840da53c",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -384,
            -272
          ],
          "parameters": {
            "color": 7,
            "height": 480,
            "content": "## 🧩 Validate Opportunity Data Payload  \nChecks whether each opportunity record has a valid “id” field.  \n✅ Valid → moves to extraction  \n❌ Invalid → logged into Google Sheets for review.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "8a4b16a5-cb5e-40af-9641-b8f3f6633927",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -32,
            304
          ],
          "parameters": {
            "color": 7,
            "height": 432,
            "content": "## ⚠️ Log Invalid Opportunities  \nStores invalid or incomplete opportunities in a dedicated Google Sheet.  \nUseful for cleaning CRM data and tracking integration issues.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "1b3035c5-1c4f-4bee-8466-e22e20ea2a6b",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -16,
            -384
          ],
          "parameters": {
            "color": 7,
            "height": 576,
            "content": "## 🧾 Extract Key Fields from HighLevel Data  \nExtracts only the essential details from CRM opportunities, including:  \n- id, name, company, email, phone  \n- source, assignedTo, pipelineId, stageId  \n- tags, monetary value, timestamps  \nSimplifies data for consistency before sheet update.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "b73f368f-a4fa-470b-8b0a-9b765db17460",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            304,
            -256
          ],
          "parameters": {
            "color": 7,
            "height": 416,
            "content": "## ⚙️ Normalize Opportunity Structure  \nEnsures every opportunity has standardized field names.  \nFills missing contact info, adjusts IDs, and prepares for sheet update and reporting.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "effc05a4-472f-4621-adc2-d32c9f43548a",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            656,
            -240
          ],
          "parameters": {
            "color": 7,
            "height": 416,
            "content": "## 🧠 Merge All Opportunities  \nCombines all normalized records into a single JSON array under the field `opportunities`.  \nPrepares data for AI processing and HTML report generation.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "6d55cf17-fb56-488c-9fc6-09a5bcea2ec9",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            672,
            -976
          ],
          "parameters": {
            "color": 7,
            "width": 256,
            "height": 544,
            "content": "## 📋 Update Opportunity Records in Google Sheets  \nUpserts (append or update) opportunity data into the “ghl database” tab inside your master sheet (`sample_leads_50`).  \nMatching key: `id`.  \nKeeps CRM and sheet data fully synced.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "a29730a2-550a-4292-8662-0b61eab146ed",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            944,
            -368
          ],
          "parameters": {
            "color": 7,
            "width": 352,
            "height": 576,
            "content": "## 🧠 Generate Daily Opportunity Summary Report  \nGPT-4o analyzes the merged opportunities JSON and generates a clean HTML report.  \nStructure:\n- <h2> title: “Daily Opportunity Summary”  \n- Description paragraph  \n- Styled table with:  \n  Name, Company, Email, Phone, Source, Pipeline ID, Stage ID, Value, Created At  \n- Nulls replaced with “-”  \n- Gmail-friendly design (bordered table, padded cells)\n"
          },
          "typeVersion": 1
        },
        {
          "id": "6447a496-aa1c-4c7b-8dc6-6a0a392b744c",
          "name": "Sticky Note9",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1376,
            -320
          ],
          "parameters": {
            "color": 7,
            "height": 496,
            "content": "## 📧 Send Daily Opportunity Summary via Gmail  \nSends the AI-generated HTML report to the sales inbox.  \nSubject: “Daily Opportunity Report – Summary of New Leads.”  \nAutomatically formatted for Gmail rendering.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "93ef3968-0b83-48d9-b108-d14ba2997201",
          "name": "Sticky Note10",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            912,
            288
          ],
          "parameters": {
            "color": 7,
            "height": 368,
            "content": "## ⚙️ Configure GPT-4o Model  \nConnects to the Azure OpenAI GPT-4o model.  \nUsed as the AI engine for generating HTML reports and summaries.\n"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "34b619f9-f2f5-489d-986e-66c86661fb25",
      "connections": {
        "Configure GPT-4o Model": {
          "ai_languageModel": [
            [
              {
                "node": "Generate Daily Opportunity Summary Report",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Normalize Opportunity Structure": {
          "main": [
            [
              {
                "node": "Update Opportunity Records in Google Sheets",
                "type": "main",
                "index": 0
              },
              {
                "node": "Merge All Opportunities into Single JSON Array",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Validate Opportunity Data Payload": {
          "main": [
            [
              {
                "node": "Extract Key Fields from HighLevel Data",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Log Invalid Opportunities to Google Sheets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "When clicking ‘Execute workflow’": {
          "main": [
            [
              {
                "node": "Fetch Opportunities from HighLevel CRM",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Key Fields from HighLevel Data": {
          "main": [
            [
              {
                "node": "Normalize Opportunity Structure",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Fetch Opportunities from HighLevel CRM": {
          "main": [
            [
              {
                "node": "Validate Opportunity Data Payload",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Generate Daily Opportunity Summary Report": {
          "main": [
            [
              {
                "node": "Send Daily Opportunity Summary via Gmail",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Merge All Opportunities into Single JSON Array": {
          "main": [
            [
              {
                "node": "Generate Daily Opportunity Summary Report",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 22,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 3
        },
        "n8n-nodes-base.gmail": {
          "count": 1
        },
        "n8n-nodes-base.highLevel": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 11
        },
        "n8n-nodes-base.googleSheets": {
          "count": 2
        },
        "n8n-nodes-base.manualTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "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-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-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/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "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/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "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/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "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"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "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-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/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "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": 356,
        "icon": "file:gmail.svg",
        "name": "n8n-nodes-base.gmail",
        "codex": {
          "data": {
            "alias": [
              "email",
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "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/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "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-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/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Gmail"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"
        },
        "displayName": "Gmail",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "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": 825,
        "icon": "file:highLevel.svg",
        "name": "n8n-nodes-base.highLevel",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.highlevel/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/highlevel/"
                }
              ]
            },
            "categories": [
              "Marketing",
              "Sales"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "HighLevel"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iNS43NzczNCIgeT0iNi44MDQyIiB3aWR0aD0iNS4yOTIxNiIgaGVpZ2h0PSIzMi44ODciIGZpbGw9IiNGREM0MDAiLz4KPHJlY3QgeD0iMjguODM1OSIgeT0iNi44MDQyIiB3aWR0aD0iNS4yOTIxNiIgaGVpZ2h0PSIzMi44ODciIGZpbGw9IiM0QUNGMjciLz4KPHJlY3QgeD0iMTYuOTI4NyIgeT0iMTguOTk1MSIgd2lkdGg9IjYuMDQ4MTkiIGhlaWdodD0iMjAuNjk2MSIgZmlsbD0iIzI4OTZGQiIvPgo8cGF0aCBkPSJNOC40NzA2NCAwTDE2Ljk0MTMgOC45MzA1M0gwTDguNDcwNjQgMFoiIGZpbGw9IiNGREM0MDAiLz4KPHBhdGggZD0iTTMxLjUyOTIgMEwzOS45OTk5IDguOTMwNTNIMjMuMDU4NkwzMS41MjkyIDBaIiBmaWxsPSIjNEFDRjI3Ii8+CjxwYXRoIGQ9Ik0xOS45OTk5IDEyLjY2MzNMMjguNDcwNiAyMS41OTM5SDExLjUyOTNMMTkuOTk5OSAxMi42NjMzWiIgZmlsbD0iIzI4OTZGQiIvPgo8cGF0aCBkPSJNNS43NzczNCA4LjkzMDQySDExLjA2OTVWMTQuMjIyNkw1Ljc3NzM0IDguOTMwNDJaIiBmaWxsPSIjREFBOTAwIi8+CjxwYXRoIGQ9Ik0yOC44MzU5IDguOTMwNDJIMzQuMTI4MVYxNC4yMjI2TDI4LjgzNTkgOC45MzA0MloiIGZpbGw9IiM1MUIzNDYiLz4KPHBhdGggZD0iTTE2LjkyODcgMjEuNTk0SDIyLjk3NjlWMjcuNjQyMkwxNi45Mjg3IDIxLjU5NFoiIGZpbGw9IiMxRjgxREIiLz4KPC9zdmc+Cg=="
        },
        "displayName": "HighLevel",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 2,
            "name": "Sales"
          },
          {
            "id": 27,
            "name": "Marketing"
          }
        ]
      },
      {
        "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"
          }
        ]
      },
      {
        "id": 838,
        "icon": "fa:mouse-pointer",
        "name": "n8n-nodes-base.manualTrigger",
        "codex": {
          "data": {
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "When clicking ‘Execute workflow’",
          "color": "#909298"
        },
        "iconData": {
          "icon": "mouse-pointer",
          "type": "icon"
        },
        "displayName": "Manual Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1253,
        "icon": "file:azure.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Azure OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjQyIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTguOTcyJSIgeDI9IjM3LjE5MSUiIHkxPSI3LjQxMSUiIHkyPSIxMDMuNzYyJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzExNEE4QiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzA2NjlCQyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iNTkuNzE5JSIgeDI9IjUyLjY5MSUiIHkxPSI1Mi4zMTMlIiB5Mj0iNTQuODY0JSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1vcGFjaXR5PSIuMyIvPjxzdG9wIG9mZnNldD0iNy4xJSIgc3RvcC1vcGFjaXR5PSIuMiIvPjxzdG9wIG9mZnNldD0iMzIuMSUiIHN0b3Atb3BhY2l0eT0iLjEiLz48c3RvcCBvZmZzZXQ9IjYyLjMlIiBzdG9wLW9wYWNpdHk9Ii4wNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImMiIHgxPSIzNy4yNzklIiB4Mj0iNjIuNDczJSIgeTE9IjQuNiUiIHkyPSI5OS45NzklIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjM0NDQkY0Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMjg5MkRGIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCNhKSIgZD0iTTg1LjM0My4wMDNoNzUuNzUzTDgyLjQ1NyAyMzNhMTIuMDggMTIuMDggMCAwIDEtMTEuNDQyIDguMjE2SDEyLjA2QTEyLjA2IDEyLjA2IDAgMCAxIC42MzMgMjI1LjMwM0w3My44OTggOC4yMTlBMTIuMDggMTIuMDggMCAwIDEgODUuMzQzIDB6Ii8+PHBhdGggZmlsbD0iIzAwNzhENCIgZD0iTTE5NS40MjMgMTU2LjI4Mkg3NS4yOTdhNS41NiA1LjU2IDAgMCAwLTMuNzk2IDkuNjI3bDc3LjE5IDcyLjA0N2ExMi4xNCAxMi4xNCAwIDAgMCA4LjI4IDMuMjZoNjguMDJ6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTg1LjM0My4wMDNhMTEuOTggMTEuOTggMCAwIDAtMTEuNDcxIDguMzc2TC43MjMgMjI1LjEwNWExMi4wNDUgMTIuMDQ1IDAgMCAwIDExLjM3IDE2LjExMmg2MC40NzVhMTIuOTMgMTIuOTMgMCAwIDAgOS45MjEtOC40MzdsMTQuNTg4LTQyLjk5MSA1Mi4xMDUgNDguNmExMi4zMyAxMi4zMyAwIDAgMCA3Ljc1NyAyLjgyOGg2Ny43NjZsLTI5LjcyMS04NC45MzUtODYuNjQzLjAyTDE2MS4zNy4wMDN6Ii8+PHBhdGggZmlsbD0idXJsKCNjKSIgZD0iTTE4Mi4wOTggOC4yMDdBMTIuMDYgMTIuMDYgMCAwIDAgMTcwLjY3LjAwM0g4Ni4yNDVjNS4xNzUgMCA5Ljc3MyAzLjMwMSAxMS40MjggOC4yMDRMMTcwLjk0IDIyNS4zYTEyLjA2MiAxMi4wNjIgMCAwIDEtMTEuNDI4IDE1LjkyaDg0LjQyOWExMi4wNjIgMTIuMDYyIDAgMCAwIDExLjQyNS0xNS45MnoiLz48L3N2Zz4="
        },
        "displayName": "Azure OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 39,
        "name": "CRM"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}