{
  "workflow": {
    "id": 10557,
    "name": "Classify and respond to Facebook Messenger inquiries with GPT-4, Slack and Sheets",
    "views": 243,
    "recentViews": 1,
    "totalViews": 243,
    "createdAt": "2025-11-06T07:00:40.916Z",
    "description": "## 📊 Description\nStreamline Facebook Messenger inbox management with an AI-powered categorization and response system. 💬⚙️\n This workflow automatically classifies new messages as Lead, Query, or Spam using GPT-4, routes them for approval via Slack, responds on Facebook once approved, and logs all interactions into Google Sheets for tracking. Perfect for support and marketing teams managing high volumes of inbound DMs. 🚀📈\n\n## What This Template Does\n1️⃣ Trigger – Runs hourly to fetch new Facebook Page messages. ⏰\n 2️⃣ Extract & Format – Collects sender info, timestamps, and message content for analysis. 📋\n 3️⃣ AI Categorization – Uses GPT-4 to identify message type (Lead, Query, Spam) and suggest replies. 🧠\n 4️⃣ Slack Approval Flow – Sends categorized leads and queries to Slack for quick team approval. 💬\n 5️⃣ Facebook Response – Posts AI-suggested replies back to the original sender once approved. 💌\n 6️⃣ Data Logging – Records every message, reply, and approval status into Google Sheets for analytics. 📊\n 7️⃣ Error Handling – Automatically alerts via Slack if the workflow encounters an error. 🚨\n\n## Key Benefits\n✅ Reduces manual message triage on Facebook Messenger\n ✅ Ensures consistent and professional customer replies\n ✅ Provides full visibility via Google Sheets logs\n ✅ Centralizes team approvals in Slack for faster response times\n ✅ Leverages GPT-4 for accurate categorization and natural replies\n\n## Features\n- Hourly Facebook message fetch with Graph API\n- GPT-4 powered text classification and reply suggestion\n- Slack-based dual approval flow\n- Automated Facebook replies post-approval\n- Google Sheets logging for all categorized messages\n- Built-in error detection and Slack alerting\n\n## Requirements\nFacebook Graph API credentials with page message permissions\nOpenAI API key for GPT-4 processing\nSlack API credentials with chat:write permission\nGoogle Sheets OAuth2 credentials\n\n## Environment Variables:\nFACEBOOK_PAGE_ID\nGOOGLE_SHEET_ID\nGOOGLE_SHEET_NAME\nSLACK_CHANNEL_ID\n\n## Target Audience\n- Marketing and lead-generation teams using Facebook Pages 📣\n- Customer support teams managing Messenger queries 💬\n- Businesses seeking automated lead routing and CRM sync 🧾\n- Teams leveraging AI for customer engagement optimization 🤖\n\n## Step-by-Step Setup Instructions\n1️⃣ Connect Facebook Graph API credentials and set your page ID.\n 2️⃣ Add OpenAI API credentials for GPT-4.\n 3️⃣ Configure Slack channel ID and credentials.\n 4️⃣ Link your Google Sheet for message logging.\n 5️⃣ Replace environment variable placeholders with your actual IDs.\n 6️⃣ Test the workflow manually before enabling automation.\n 7️⃣ Activate the schedule trigger for ongoing hourly execution. ✅\n",
    "workflow": {
      "id": "z6unWs848KTz4kx7",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "Classify and Respond to Facebook Messenger Inquiries with GPT-4, Slack, and Google Sheets",
      "tags": [],
      "nodes": [
        {
          "id": "e2f901e3-aa5a-4932-9319-18311a766d20",
          "name": "Error Handler Trigger",
          "type": "n8n-nodes-base.errorTrigger",
          "position": [
            -144,
            928
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "3d6db20c-c4f2-468d-a3fc-2bb5b56fc754",
          "name": "Slack: Send Error Alert",
          "type": "n8n-nodes-base.slack",
          "position": [
            64,
            928
          ],
          "webhookId": "d5eff2c3-ff6e-4116-bdda-59455acd861b",
          "parameters": {
            "text": "=❌ *Error in API Error Catalog Workflow* *Node:* {{ $json.node.name }} *Message:* {{ $json.error.message }} *Time:* {{ $json.timestamp }}",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "id",
              "value": ""
            },
            "otherOptions": {}
          },
          "credentials": {
            "slackApi": {
              "id": "credential-id",
              "name": "slackApi Credential"
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "7c62e0bc-3101-4c78-ae04-820b5db755a6",
          "name": "Workflow Description",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -128,
            -848
          ],
          "parameters": {
            "width": 485,
            "height": 624,
            "content": "## 📋 Classify and Respond to Facebook Messenger Inquiries\n\n### How it works\nThis automation helps you handle Facebook Page messages automatically with GPT-4.  \nEvery hour it checks for new messages, extracts the sender’s details, and sends the content to GPT-4 for classification.  \nMessages are categorized as Lead, Query, or Spam.  \nLeads and Queries trigger a Slack approval request where your team can approve or reject GPT-4’s suggested reply.  \nBased on that response, the workflow sends an approved or fallback message through Facebook Messenger, logs all activity to Google Sheets, and alerts you of any errors in Slack.\n\n### Setup steps\n1. Connect Facebook Graph API, OpenAI, Slack, and Google Sheets credentials.  \n2. Set up environment variables: `FACEBOOK_PAGE_ID`, `GOOGLE_SHEET_ID`, `SLACK_CHANNEL_ID`.  \n3. Create a Google Sheet with columns for Timestamp, Sender, Category, Summary, AI Reply, and Status.  \n4. Adjust the trigger interval if you want faster or slower checks.  \n5. Test with one sample message before enabling the full workflow.  \n6. Enable error notifications so you’re informed if anything breaks.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "89e6bbac-09b9-409a-bda7-a557861e1204",
          "name": "Data Input Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -112,
            -176
          ],
          "parameters": {
            "color": 2,
            "width": 692,
            "height": 482,
            "content": "## Data Input & Formatting \n\nRuns every hour to fetch the latest Facebook Page messages.  \nExtracts message text, sender info, and timestamp, then formats the data for GPT-4 classification.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "f152b261-07cd-455d-82c0-6a8fba802c70",
          "name": "AI Processing Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            608,
            -208
          ],
          "parameters": {
            "color": 2,
            "width": 438,
            "height": 715,
            "content": "## AI Classification \n\n\nSends the formatted message to GPT-4 for analysis.  \nGPT-4 categorizes it as Lead, Query, or Spam, generates a summary, and drafts a suggested reply with confidence scoring.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "ccddf517-2c95-4675-b29d-1320c6ad0532",
          "name": "Routing & Approval Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1056,
            -496
          ],
          "parameters": {
            "color": 2,
            "width": 454,
            "height": 991,
            "content": "## Routing & Approvals \n\nRoutes messages based on category.  \nLeads and Queries trigger a Slack approval message so your team can approve or reject GPT-4’s reply before sending.  \nSpam is logged automatically without further action.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "e0796be2-abeb-43c5-82be-0efa96013b7c",
          "name": "Response & Logging Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1536,
            -544
          ],
          "parameters": {
            "color": 2,
            "width": 662,
            "height": 938,
            "content": "## Responses & Logging \n\nSends approved or fallback replies to users on Messenger.  \nAll responses, summaries, and approval outcomes are recorded in Google Sheets for tracking and analytics.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "21692871-2720-47f0-8224-0fe78c97cbf2",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -208,
            672
          ],
          "parameters": {
            "color": 2,
            "width": 480,
            "height": 464,
            "content": "## Error Notifications \n\n\nIf any part of the workflow fails, this section sends a Slack alert with the error message, node name, and timestamp so you can fix it quickly.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "ba3b8ef4-3836-4630-9ec7-a838bebfe684",
          "name": "Trigger – Fetch New Facebook Messages (Every Hour)",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            -64,
            128
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "hours"
                }
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "e76437d4-2bba-4436-a660-bc137c5e2c81",
          "name": "Format Incoming Message Data",
          "type": "n8n-nodes-base.set",
          "position": [
            416,
            128
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "f1219ab7-44b3-4269-9bdf-d6495508f3f7",
                  "name": "Message",
                  "type": "string",
                  "value": "={{ $json.data[0].messages.data[0].message }}"
                },
                {
                  "id": "2c8d7090-f294-422c-ad52-7ef565f0962a",
                  "name": "Senders Name",
                  "type": "string",
                  "value": "={{ $json.data[0].messages.data[0].from.name }}"
                },
                {
                  "id": "3a2285d0-da92-4dfe-8e9a-c7b7b4af790a",
                  "name": "Sender Email",
                  "type": "string",
                  "value": "={{ $json.data[0].messages.data[0].from.email }}"
                },
                {
                  "id": "e098cf90-95b6-4efd-a18a-74a1e8a9e4bf",
                  "name": "Created Time",
                  "type": "string",
                  "value": "={{ $json.data[0].messages.data[0].created_time }}"
                },
                {
                  "id": "05c62c36-3baa-4553-ab88-0ac77097a442",
                  "name": "Senders ID",
                  "type": "string",
                  "value": "={{ $json.data[0].messages.data[0].from.id }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "c7bda562-5ccd-431f-b59f-f0e1ea42e724",
          "name": "Fetch Facebook Conversations (Graph API)",
          "type": "n8n-nodes-base.facebookGraphApi",
          "position": [
            192,
            128
          ],
          "parameters": {
            "edge": "conversations",
            "options": {
              "fields": {
                "field": [
                  {
                    "name": "messages{message,from,to,created_time}"
                  }
                ]
              },
              "queryParameters": {
                "parameter": [
                  {
                    "name": "access_token",
                    "value": "="
                  }
                ]
              }
            },
            "graphApiVersion": "v23.0"
          },
          "credentials": {
            "facebookGraphApi": {
              "id": "credential-id",
              "name": "facebookGraphApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "b6c407c7-5728-4a60-b21e-f8ee9bd3a60a",
          "name": "Model – GPT-4 Language Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            640,
            352
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "options": {
              "temperature": 0.3
            }
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "0f74cfa6-2dc6-4696-bb13-36623f4a8cae",
          "name": "AI – Classify Message (Lead / Query / Spam)",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            704,
            128
          ],
          "parameters": {
            "text": "=You received a new message on Facebook Page.\n\nMessage: \"{{ $json[\"Message\"] }}\"\nSender Name: \"{{ $json[\"Senders Name\"] }}\"\nSender Email: \"{{ $json[\"Sender Email\"] }}\"\nCreated Time: \"{{ $json[\"Created Time\"] }}\"\n\nClassify this message according to the defined categories and provide a short suggested reply if needed.\n",
            "options": {
              "systemMessage": "=You are an AI assistant that analyzes incoming Facebook Page messages and classifies them into one of three categories: Lead, Query, or Spam.\n\nDefinitions:\n- Lead: A potential customer or business opportunity showing intent to purchase, collaborate, or request a quote.\n- Query: A general question, support request, or informational inquiry that doesn’t indicate a sales intent.\n- Spam: Any irrelevant, promotional, scam-like, or inappropriate message.\n\nFor each input message, you must:\n1. Identify the category.\n2. Summarize the message meaning briefly.\n3. Suggest an appropriate automated reply if applicable.\n\nReturn your answer strictly as a JSON object matching the defined schema.\n"
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2.1
        },
        {
          "id": "e6ce995d-5181-4c2c-b587-15dd7294d279",
          "name": "Parse AI Output (JSON Parser)",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            896,
            352
          ],
          "parameters": {
            "jsonSchemaExample": "{\n  \"category\": \"Lead\",\n  \"summary\": \"The user is interested in discussing a project collaboration.\",\n  \"suggested_reply\": \"Thanks for reaching out! I’d be happy to discuss your project. Could you please share more details or your preferred contact method?\",\n  \"confidence_score\": 0.92\n}\n"
          },
          "typeVersion": 1.3
        },
        {
          "id": "f629f045-44aa-4cc3-a20a-4965b6ababb4",
          "name": "Memory – Conversation Context Buffer",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "position": [
            768,
            352
          ],
          "parameters": {
            "sessionKey": "=\"Message Categorization\"",
            "sessionIdType": "customKey"
          },
          "typeVersion": 1.3
        },
        {
          "id": "66651a42-9f47-426e-8ebf-a2549fcea1ca",
          "name": "Route Messages by Category",
          "type": "n8n-nodes-base.switch",
          "position": [
            1104,
            112
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "c6291a4b-54a6-432f-8703-513bd802891b",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output.category }}",
                        "rightValue": "Lead"
                      }
                    ]
                  }
                },
                {
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "5aa04688-17b2-4c74-a808-8f514a0efdf9",
                        "operator": {
                          "name": "filter.operator.equals",
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output.category }}",
                        "rightValue": "Query"
                      }
                    ]
                  }
                },
                {
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "4e7842c6-8a80-46ba-b2e2-8d6cfd9d1aa8",
                        "operator": {
                          "name": "filter.operator.equals",
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output.category }}",
                        "rightValue": "Spam"
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "c415da31-10ef-4047-947c-090343d7bf1e",
          "name": "Slack Approval – Lead Message",
          "type": "n8n-nodes-base.slack",
          "position": [
            1328,
            -256
          ],
          "webhookId": "e08fcd90-aee1-442c-9d7d-ff158b25132a",
          "parameters": {
            "select": "channel",
            "message": "=🎯 *New Lead Detected!*\n\n*Summary:* {{ $json.output.summary }}\n*Confidence:* {{ $json.output.confidence_score }}\n\n📝 *Suggested Response:*\n{{ $json.output.suggested_reply }}\n\n💼 _Follow up required for conversion_",
            "options": {},
            "channelId": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "operation": "sendAndWait",
            "approvalOptions": {
              "values": {
                "approvalType": "double"
              }
            }
          },
          "credentials": {
            "slackApi": {
              "id": "credential-id",
              "name": "slackApi Credential"
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "d054bc66-22e1-47c7-b991-344183ee1581",
          "name": "Check Lead Approval Status",
          "type": "n8n-nodes-base.switch",
          "position": [
            1552,
            -256
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "6e0c8eba-353f-49a1-b6fb-e8ebf7cefb67",
                        "operator": {
                          "type": "boolean",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.data.approved }}",
                        "rightValue": true
                      }
                    ]
                  }
                },
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "a76ce745-1e69-4ebe-b9db-c99d89ef49bd",
                        "operator": {
                          "type": "boolean",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.data.approved }}",
                        "rightValue": false
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3.3
        },
        {
          "id": "ec81ca69-1395-4b32-93e1-31a558d4674a",
          "name": "Send AI Reply – Lead Approved",
          "type": "n8n-nodes-base.facebookGraphApi",
          "position": [
            1776,
            -352
          ],
          "parameters": {
            "edge": "messages",
            "options": {
              "queryParameters": {
                "parameter": [
                  {
                    "name": "access_token",
                    "value": "="
                  },
                  {
                    "name": "recipient",
                    "value": "={{ JSON.stringify({ id: $('Format Incoming Message Data').item.json[\"Senders ID\"] }) }}"
                  },
                  {
                    "name": "message",
                    "value": "={{ JSON.stringify({ text: $('AI – Classify Message (Lead / Query / Spam)').item.json.output.suggested_reply }) }}"
                  }
                ]
              }
            },
            "graphApiVersion": "v23.0",
            "httpRequestMethod": "POST"
          },
          "credentials": {
            "facebookGraphApi": {
              "id": "credential-id",
              "name": "facebookGraphApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "35b5dd45-19ef-4a79-b108-6f9f6f56a1dd",
          "name": "Send Fallback Reply – Lead Rejected",
          "type": "n8n-nodes-base.facebookGraphApi",
          "position": [
            1776,
            -160
          ],
          "parameters": {
            "edge": "messages",
            "options": {
              "queryParameters": {
                "parameter": [
                  {
                    "name": "access_token",
                    "value": "="
                  },
                  {
                    "name": "recipient",
                    "value": "={{ JSON.stringify({ id: $('Format Incoming Message Data').item.json[\"Senders ID\"] }) }}"
                  },
                  {
                    "name": "message",
                    "value": "={{ JSON.stringify({ text: \"Thank you for your interest! 🙏\\\\n\\\\nWe\\\\'re excited to help you. One of our team members will reach out to you shortly with personalized information.\\\\n\\\\nIn the meantime, feel free to share any specific questions you have, and we\\\\'ll make sure to address them!\\\\n\\\\nLooking forward to connecting with you!\" }) }}"
                  }
                ]
              }
            },
            "graphApiVersion": "v23.0",
            "httpRequestMethod": "POST"
          },
          "credentials": {
            "facebookGraphApi": {
              "id": "credential-id",
              "name": "facebookGraphApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "9ad6d7b3-4a55-4fdd-ab22-1dc109fd4680",
          "name": "Log to Google Sheets – Lead Approved",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2000,
            -352
          ],
          "parameters": {
            "columns": {
              "value": {
                "Status": "Approved",
                "Summary": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.summary }}",
                "AI Reply": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.suggested_reply }}",
                "Category": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.category }}",
                "Sender ID": "={{ $('Format Incoming Message Data').item.json[\"Senders ID\"] }}",
                "Timestamp": "={{ $('Format Incoming Message Data').item.json[\"Created Time\"] }}",
                "Sender Name": "={{ $('Format Incoming Message Data').item.json[\"Senders Name\"] }}"
              },
              "schema": [
                {
                  "id": "Timestamp",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender Name",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender ID",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender ID",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Category",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Category",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Summary",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Summary",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "AI Reply",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "AI Reply",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Status",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "Timestamp"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "="
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "bbfbcb8d-3710-4134-a194-fb2ee42edf18",
          "name": "Log to Google Sheets – Lead Rejected",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2000,
            -160
          ],
          "parameters": {
            "columns": {
              "value": {
                "Status": "Pending",
                "Summary": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.summary }}",
                "AI Reply": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.suggested_reply }}",
                "Category": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.category }}",
                "Sender ID": "={{ $('Format Incoming Message Data').item.json[\"Senders ID\"] }}",
                "Timestamp": "={{ $('Format Incoming Message Data').item.json[\"Created Time\"] }}",
                "Sender Name": "={{ $('Format Incoming Message Data').item.json[\"Senders Name\"] }}"
              },
              "schema": [
                {
                  "id": "Timestamp",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender Name",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender ID",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender ID",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Category",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Category",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Summary",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Summary",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "AI Reply",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "AI Reply",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Status",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "Timestamp"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "="
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "cde4b565-bcee-43da-9284-14ca66ff914a",
          "name": "Slack Approval – Query Message",
          "type": "n8n-nodes-base.slack",
          "position": [
            1328,
            128
          ],
          "webhookId": "e08fcd90-aee1-442c-9d7d-ff158b25132a",
          "parameters": {
            "select": "channel",
            "message": "=🔔 *New Customer Query*\n\n*Summary:* {{ $json.output.summary }}\n*Confidence:* {{ $json.output.confidence_score }}\n\n📝 *Suggested Reply:*\n{{ $json.output.suggested_reply }}\n\n⏰ _Requires immediate response_",
            "options": {},
            "channelId": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "operation": "sendAndWait",
            "approvalOptions": {
              "values": {
                "approvalType": "double"
              }
            }
          },
          "credentials": {
            "slackApi": {
              "id": "credential-id",
              "name": "slackApi Credential"
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "ea4c37f5-59ac-4035-9305-070566bf139e",
          "name": "Check Query Approval Status",
          "type": "n8n-nodes-base.switch",
          "position": [
            1552,
            128
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "6e0c8eba-353f-49a1-b6fb-e8ebf7cefb67",
                        "operator": {
                          "type": "boolean",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.data.approved }}",
                        "rightValue": true
                      }
                    ]
                  }
                },
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "a76ce745-1e69-4ebe-b9db-c99d89ef49bd",
                        "operator": {
                          "type": "boolean",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.data.approved }}",
                        "rightValue": false
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3.3
        },
        {
          "id": "94b98665-d925-4cdb-80b1-556095bf2505",
          "name": "Send AI Reply – Query Approved",
          "type": "n8n-nodes-base.facebookGraphApi",
          "position": [
            1776,
            32
          ],
          "parameters": {
            "edge": "messages",
            "options": {
              "queryParameters": {
                "parameter": [
                  {
                    "name": "access_token",
                    "value": "="
                  },
                  {
                    "name": "recipient",
                    "value": "={{ JSON.stringify({ id: $('Format Incoming Message Data').item.json[\"Senders ID\"] }) }}"
                  },
                  {
                    "name": "message",
                    "value": "={{ JSON.stringify({ text: $('AI – Classify Message (Lead / Query / Spam)').item.json.output.suggested_reply }) }}"
                  }
                ]
              }
            },
            "graphApiVersion": "v23.0",
            "httpRequestMethod": "POST"
          },
          "credentials": {
            "facebookGraphApi": {
              "id": "credential-id",
              "name": "facebookGraphApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "e707ddb9-b8d7-4aa6-87d1-039f65d55ce8",
          "name": "Send Fallback Reply – Query Rejected",
          "type": "n8n-nodes-base.facebookGraphApi",
          "position": [
            1776,
            224
          ],
          "parameters": {
            "edge": "messages",
            "options": {
              "queryParameters": {
                "parameter": [
                  {
                    "name": "access_token",
                    "value": "="
                  },
                  {
                    "name": "recipient",
                    "value": "={{ JSON.stringify({ id: $('Format Incoming Message Data').item.json[\"Senders ID\"] }) }}"
                  },
                  {
                    "name": "message",
                    "value": "={{ JSON.stringify({ text: \"Thank you for reaching out! 🙏\\n\\nWe've received your question and our team is looking into it. We'll get back to you with a detailed answer as soon as possible.\\n\\nYour patience is appreciated! If you have any additional information to share, feel free to send it our way.\" }) }}"
                  }
                ]
              }
            },
            "graphApiVersion": "v23.0",
            "httpRequestMethod": "POST"
          },
          "credentials": {
            "facebookGraphApi": {
              "id": "credential-id",
              "name": "facebookGraphApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "66ff77a0-23b7-44df-95dc-a509a884717a",
          "name": "Log to Google Sheets – Query Approved",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2000,
            32
          ],
          "parameters": {
            "columns": {
              "value": {
                "Status": "Approved",
                "Summary": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.summary }}",
                "AI Reply": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.suggested_reply }}",
                "Category": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.category }}",
                "Sender ID": "={{ $('Format Incoming Message Data').item.json[\"Senders ID\"] }}",
                "Timestamp": "={{ $('Format Incoming Message Data').item.json[\"Created Time\"] }}",
                "Sender Name": "={{ $('Format Incoming Message Data').item.json[\"Senders Name\"] }}"
              },
              "schema": [
                {
                  "id": "Timestamp",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender Name",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender ID",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender ID",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Category",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Category",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Summary",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Summary",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "AI Reply",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "AI Reply",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Status",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "Timestamp"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "="
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "d1345c3f-04bc-47b4-8d4d-baf122453043",
          "name": "Log to Google Sheets – Query Rejected",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            2000,
            224
          ],
          "parameters": {
            "columns": {
              "value": {
                "Status": "Pending",
                "Summary": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.summary }}",
                "AI Reply": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.suggested_reply }}",
                "Category": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.category }}",
                "Sender ID": "={{ $('Format Incoming Message Data').item.json[\"Senders ID\"] }}",
                "Timestamp": "={{ $('Format Incoming Message Data').item.json[\"Created Time\"] }}",
                "Sender Name": "={{ $('Format Incoming Message Data').item.json[\"Senders Name\"] }}"
              },
              "schema": [
                {
                  "id": "Timestamp",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender Name",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender ID",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender ID",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Category",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Category",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Summary",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Summary",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "AI Reply",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "AI Reply",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Status",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "Timestamp"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "="
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "ba6e9cba-f2a7-444d-8cfb-a7b9ff4dffc6",
          "name": "Log to Google Sheets – Spam Messages",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            1328,
            320
          ],
          "parameters": {
            "columns": {
              "value": {
                "Status": "Spam",
                "Summary": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.summary }}",
                "AI Reply": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.suggested_reply }}",
                "Category": "={{ $('AI – Classify Message (Lead / Query / Spam)').item.json.output.category }}",
                "Sender ID": "={{ $('Format Incoming Message Data').item.json[\"Senders ID\"] }}",
                "Timestamp": "={{ $('Format Incoming Message Data').item.json[\"Created Time\"] }}",
                "Sender Name": "={{ $('Format Incoming Message Data').item.json[\"Senders Name\"] }}"
              },
              "schema": [
                {
                  "id": "Timestamp",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender Name",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Sender ID",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Sender ID",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Category",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Category",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Summary",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Summary",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "AI Reply",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "AI Reply",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Status",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "Timestamp"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "id",
              "value": "="
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "="
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "24e3f2f7-f1c9-4e6e-a2ba-19c7861faec7",
      "connections": {
        "Error Handler Trigger": {
          "main": [
            [
              {
                "node": "Slack: Send Error Alert",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check Lead Approval Status": {
          "main": [
            [
              {
                "node": "Send AI Reply – Lead Approved",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Send Fallback Reply – Lead Rejected",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Route Messages by Category": {
          "main": [
            [
              {
                "node": "Slack Approval – Lead Message",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Slack Approval – Query Message",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Log to Google Sheets – Spam Messages",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check Query Approval Status": {
          "main": [
            [
              {
                "node": "Send AI Reply – Query Approved",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Send Fallback Reply – Query Rejected",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Incoming Message Data": {
          "main": [
            [
              {
                "node": "AI – Classify Message (Lead / Query / Spam)",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Parse AI Output (JSON Parser)": {
          "ai_outputParser": [
            [
              {
                "node": "AI – Classify Message (Lead / Query / Spam)",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Model – GPT-4 Language Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI – Classify Message (Lead / Query / Spam)",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Send AI Reply – Lead Approved": {
          "main": [
            [
              {
                "node": "Log to Google Sheets – Lead Approved",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Slack Approval – Lead Message": {
          "main": [
            [
              {
                "node": "Check Lead Approval Status",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Send AI Reply – Query Approved": {
          "main": [
            [
              {
                "node": "Log to Google Sheets – Query Approved",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Slack Approval – Query Message": {
          "main": [
            [
              {
                "node": "Check Query Approval Status",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Send Fallback Reply – Lead Rejected": {
          "main": [
            [
              {
                "node": "Log to Google Sheets – Lead Rejected",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Memory – Conversation Context Buffer": {
          "ai_memory": [
            [
              {
                "node": "AI – Classify Message (Lead / Query / Spam)",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "Send Fallback Reply – Query Rejected": {
          "main": [
            [
              {
                "node": "Log to Google Sheets – Query Rejected",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Fetch Facebook Conversations (Graph API)": {
          "main": [
            [
              {
                "node": "Format Incoming Message Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI – Classify Message (Lead / Query / Spam)": {
          "main": [
            [
              {
                "node": "Route Messages by Category",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Trigger – Fetch New Facebook Messages (Every Hour)": {
          "main": [
            [
              {
                "node": "Fetch Facebook Conversations (Graph API)",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 29,
      "nodeTypes": {
        "n8n-nodes-base.set": {
          "count": 1
        },
        "n8n-nodes-base.slack": {
          "count": 3
        },
        "n8n-nodes-base.switch": {
          "count": 3
        },
        "n8n-nodes-base.stickyNote": {
          "count": 6
        },
        "n8n-nodes-base.errorTrigger": {
          "count": 1
        },
        "n8n-nodes-base.googleSheets": {
          "count": 5
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        },
        "n8n-nodes-base.facebookGraphApi": {
          "count": 5
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.outputParserStructured": {
          "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": 12,
        "icon": "fa:bug",
        "name": "n8n-nodes-base.errorTrigger",
        "codex": {
          "data": {
            "details": "In n8n, when a workflow execution fails, it can start another workflow. This second workflow can be any arbitrary workflow on your n8n instance. Use the Error Trigger node as your Trigger in the Error workflow.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/creating-error-workflows-in-n8n/",
                  "icon": "🌪",
                  "label": "Creating Error Workflows in n8n"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Other Trigger Nodes"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Error Trigger",
          "color": "#0000FF"
        },
        "iconData": {
          "icon": "bug",
          "type": "icon"
        },
        "displayName": "Error Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core 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": 38,
        "icon": "fa:pen",
        "name": "n8n-nodes-base.set",
        "codex": {
          "data": {
            "alias": [
              "Set",
              "JS",
              "JSON",
              "Filter",
              "Transform",
              "Map"
            ],
            "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/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting 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/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/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/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "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/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "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/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/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.set/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Edit Fields"
        },
        "iconData": {
          "icon": "pen",
          "type": "icon"
        },
        "displayName": "Edit Fields (Set)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 40,
        "icon": "file:slack.svg",
        "name": "n8n-nodes-base.slack",
        "codex": {
          "data": {
            "alias": [
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "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"
                },
                {
                  "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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                },
                {
                  "url": "https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/",
                  "icon": "👏",
                  "label": "How to automatically give kudos to contributors with GitHub, Slack, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/slack/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Slack"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Slack",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 112,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.switch",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "If",
              "Path",
              "Filter",
              "Condition",
              "Logic",
              "Branch",
              "Case"
            ],
            "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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Switch",
          "color": "#506000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "Switch",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 314,
        "icon": "file:facebook.svg",
        "name": "n8n-nodes-base.facebookGraphApi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.facebookgraphapi/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/facebookgraph/"
                }
              ]
            },
            "categories": [
              "Development"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Facebook Graph API"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MCA2MCI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTU5LjUgMzBDNTkuNSAxMy43MSA0Ni4yOS41IDMwIC41Uy41IDEzLjcxLjUgMzBjMCAxNC43MiAxMC43OSAyNi45MyAyNC44OSAyOS4xNFYzOC41M0gxNy45VjMwaDcuNDl2LTYuNWMwLTcuMzkgNC40LTExLjQ4IDExLjE0LTExLjQ4IDMuMjMgMCA2LjYuNTggNi42LjU4djcuMjZoLTMuNzJjLTMuNjYgMC00LjgxIDIuMjctNC44MSA0LjYxVjMwaDguMThsLTEuMzEgOC41M0gzNC42djIwLjYxQzQ4LjcxIDU2LjkzIDU5LjUgNDQuNzIgNTkuNSAzMCIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik00MS40OCAzOC41MyA0Mi43OSAzMGgtOC4xOHYtNS41M2MwLTIuMzMgMS4xNC00LjYxIDQuODEtNC42MWgzLjcyVjEyLjZzLTMuMzgtLjU4LTYuNi0uNThjLTYuNzQgMC0xMS4xNCA0LjA4LTExLjE0IDExLjQ4VjMwaC03LjV2OC41M2g3LjQ5djIwLjYxYzEuNS4yNCAzLjA0LjM2IDQuNjEuMzZzMy4xMS0uMTIgNC42MS0uMzZWMzguNTN6Ii8+PC9zdmc+"
        },
        "displayName": "Facebook Graph API",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          }
        ]
      },
      {
        "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": 839,
        "icon": "fa:clock",
        "name": "n8n-nodes-base.scheduleTrigger",
        "codex": {
          "data": {
            "alias": [
              "Time",
              "Scheduler",
              "Polling",
              "Cron",
              "Interval"
            ],
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\",\"schedule\"]",
        "defaults": {
          "name": "Schedule Trigger",
          "color": "#31C49F"
        },
        "iconData": {
          "icon": "clock",
          "type": "icon"
        },
        "displayName": "Schedule 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": 1153,
        "icon": "file:openAiLight.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1163,
        "icon": "fa:database",
        "name": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Memory"
              ],
              "Memory": [
                "For beginners"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Simple Memory"
        },
        "iconData": {
          "icon": "database",
          "type": "icon"
        },
        "displayName": "Simple Memory",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1179,
        "icon": "fa:code",
        "name": "@n8n/n8n-nodes-langchain.outputParserStructured",
        "codex": {
          "data": {
            "alias": [
              "json",
              "zod"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Output Parsers"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Structured Output Parser"
        },
        "iconData": {
          "icon": "code",
          "type": "icon"
        },
        "displayName": "Structured Output Parser",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 40,
        "name": "Support Chatbot"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}