AutomationFlowsAI & RAG › Reply to Facebook Ad Comments with Openrouter Ai, Google Docs and Slack

Reply to Facebook Ad Comments with Openrouter Ai, Google Docs and Slack

BySalman Mehboob @salmanmehboob on n8n.io

Every comment on your Facebook ad is a sales opportunity. But manually replying to dozens of comments every day - in the right tone, in the right language, at the right speed - is simply not scalable.

Webhook trigger★★★★☆ complexityAI-powered20 nodesHTTP RequestOpenRouter ChatAgentGoogle Docs ToolSlackOutput Parser Structured
AI & RAG Trigger: Webhook Nodes: 20 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #14711 — we link there as the canonical source.

This workflow follows the Agent → Googledocstool recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "91af8447-d196-4f6f-bab3-61bc76e03b7f",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -208,
        -224
      ],
      "parameters": {
        "path": "192a8e70-65c5-4673-9081-abab7ebdf778",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "32cb6315-edd5-4b33-99c5-ce8d20984145",
      "name": "Get Commnet Details",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        240,
        -224
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v25.0/{{ $json.body.entry[0].changes[0].value.comment_id }}",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "fields",
              "value": "message,attachment,from,permalink_url"
            }
          ]
        }
      },
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "9a136131-d233-4051-b011-051800babe1d",
      "name": "Get FB Post Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        688,
        -224
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v25.0/{{ $('Filleter Author Comment and Reqular Post').item.json.body.entry[0].changes[0].value.post.id }}",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "fields",
              "value": "message,permalink_url"
            }
          ]
        }
      },
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "27170cfa-75b4-4d05-9153-b11ed768a912",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1520,
        112
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "053c054b-0feb-4ab2-8859-85ac01d58038",
      "name": "Filleter Author Comment and Reqular Post",
      "type": "n8n-nodes-base.filter",
      "position": [
        16,
        -224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7bf75737-cdef-44d3-8f1f-b837d0272633",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.body.entry[0].changes[0].value.from.name }}",
              "rightValue": "you-page-name"
            },
            {
              "id": "6d9aee44-9dd1-4f25-8912-5665a246c6b2",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.body.entry[0].changes[0].value.item }}",
              "rightValue": "comment"
            },
            {
              "id": "bd43d42b-0729-414f-9e4a-7c023e3dcf95",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.body.entry[0].changes[0].value.post.promotion_status }}",
              "rightValue": "active"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "e093e597-af52-4926-a17d-07decc06136a",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        1488,
        -256
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "POSITIVE_REVIEW",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "449a4c2a-b65a-4216-9309-0549aa6e48ec",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.classification }}",
                    "rightValue": "POSITIVE_REVIEW"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "NEGATIVE_REVIEW",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "68de3120-4bf9-4889-8244-1f00db5aaf4b",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.classification }}",
                    "rightValue": "NEGATIVE_REVIEW"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "QUERY",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b6052353-4759-47c0-9ff4-7ee5fabbbf45",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.classification }}",
                    "rightValue": "QUERY"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "SPAM",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "e1cd3422-a952-4896-9600-2247dc13f54d",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.classification }}",
                    "rightValue": "SPAM"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "7345e965-93e4-4ccd-9622-81fed33639ec",
      "name": "Clean Data",
      "type": "n8n-nodes-base.set",
      "position": [
        912,
        -224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "18dbc49c-012a-406c-9ca6-c0a50075c30c",
              "name": "post_text",
              "type": "string",
              "value": "={{ $json.message }}"
            },
            {
              "id": "e776ff33-0112-44b0-b9ed-71f77c6bf81f",
              "name": "post_permalink_url",
              "type": "string",
              "value": "={{ $json.permalink_url }}"
            },
            {
              "id": "db8ce601-2ad9-4fa8-9459-c1006d3d528b",
              "name": "comment_text",
              "type": "string",
              "value": "={{ $('Get Commnet Details').item.json.message }}"
            },
            {
              "id": "6d3ca870-89d2-4e1f-b3c4-1e7cf9eea570",
              "name": "comment_permalink_url",
              "type": "string",
              "value": "={{ $('Get Commnet Details').item.json.permalink_url }}"
            },
            {
              "id": "5d390e42-c777-40a9-bf1a-b3802e6a9b82",
              "name": "comment_id",
              "type": "string",
              "value": "={{ $('Get Commnet Details').item.json.id }}"
            },
            {
              "id": "d5f4f6d4-3f36-4c36-bf16-ae16e2b74d2c",
              "name": "commentator_name",
              "type": "string",
              "value": "={{ $('Get Commnet Details').item.json.from.name }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "09305c83-a6ae-4b2c-8fb1-5a530af38797",
      "name": "Comment Classifier",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1136,
        -224
      ],
      "parameters": {
        "text": "=Post Text: {{ $json.post_text }}\nComment Text: {{ $json.comment_text }}\n\nClassify this comment now.",
        "options": {
          "systemMessage": "=# Role\nYou are a professional comment classifier for a business \nrunning service ads on Facebook and Instagram.\nYou have one job only \u2014 read a comment and classify it \ninto exactly one category.\n\n# Goal\nAnalyze the post text to understand what service or product \nis being advertised. Then analyze the comment to understand \nthe commenter's intention. Return a classification based on \nboth pieces of information together.\n\n# Classification Categories\n\nQUERY\nThe person is asking a question or requesting information.\nExamples:\n- Asking about price or packages\n- Asking how the service works\n- Asking about results or timeline\n- Asking for contact details\n- Asking if the service works for their niche or business\n\nPOSITIVE_REVIEW\nThe person is expressing satisfaction or giving a compliment.\nExamples:\n- Saying the service is good or recommended\n- Sharing a positive personal experience\n- Tagging someone to look at a good service\n- Saying masha Allah, bohat acha, great work\n\nNEGATIVE_REVIEW\nThe person is complaining or expressing dissatisfaction.\nExamples:\n- Calling the service fake or scam\n- Sharing a bad personal experience\n- Warning others not to use the service\n- Expressing anger or frustration about results\n\nSPAM\nThe comment is irrelevant or promotional.\nExamples:\n- Random emojis with no meaning\n- Someone promoting their own service or profile\n- Completely unrelated comment\n- Bot like repetitive text\n\n# Rules\n- Always read the post text first to understand context\n- Then read the comment to understand intention\n- Works for comments in Urdu, English, or mixed language\n- If comment is very short like \"nice\" or \"good\" \n  classify as POSITIVE_REVIEW\n- If comment is very short like \"?\" classify as QUERY\n- If you cannot determine clearly choose the more \n  serious category\n- Never classify based on comment alone without \n  considering post context\n- Return ONLY the JSON below with no extra text \n  no explanation no markdown\n\n# Output Format\n{\n  \"classification\": \"QUERY\" or \"POSITIVE_REVIEW\" \n  or \"NEGATIVE_REVIEW\" or \"SPAM\",\n  \"confidence\": \"LOW\" or \"MEDIUM\" or \"HIGH\"\n}\n\n# Confidence Guide\nHIGH \u2014 comment intention is very clear and obvious\nMEDIUM \u2014 comment intention is mostly clear \n  but has some ambiguity\nLOW \u2014 comment intention is unclear or could mean \n  multiple things"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "d423e58e-1d3c-4bb1-b648-39c9d16438a5",
      "name": "Knowledge Base",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        2112,
        -144
      ],
      "parameters": {
        "operation": "get",
        "documentURL": "1iJH4TTrQgnzu8FTErlprGH-Hm4-wp7o9IFBIvPLkUeA"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "44da7ca8-0e23-4d8d-afb5-9fadba3255d6",
      "name": "Comment Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1968,
        -368
      ],
      "parameters": {
        "text": "=Post Text: {{ $('Clean Data').first().json.post_text }}\n\nComment Text: {{ $('Clean Data').first().json.comment_text }}\n\nComment Classification: {{ $json.output.classification }}\nConfidence: {{ $json.output.confidence }}\n\nWrite a public reply to this comment now.",
        "options": {
          "systemMessage": "=# Role\nYou are a professional and friendly social media reply \nagent for RankFlow Digital Agency. You write public \nreplies to comments on Facebook and Instagram posts \non behalf of the agency.\n\n# Goal\nWrite a short, warm, human sounding public reply to \nthe comment. The reply will be published directly \nas a comment \u2014 so output ONLY the reply text and \nnothing else.\n\n# Tool Usage\nYou have access to one tool: Knowledge Base\n\nUse the Knowledge Base tool ONLY when the comment \nis a QUERY and you need to find specific information \nlike prices, services, timelines or FAQs.\n\nDo NOT use the Knowledge Base tool when the comment \nis a POSITIVE_REVIEW. You already know how to reply \nto positive feedback.\n\n# How to Handle QUERY Comments\nStep 1 \u2014 Search the Knowledge Base for the answer\nStep 2 \u2014 If answer is found write a clear helpful reply\nStep 3 \u2014 End with a soft invitation to contact us\n\nIf the answer is NOT found in the Knowledge Base:\nDo not make up information.\nReply with this instead:\n\"Please DM us we will \nanswer all your questions personally.\"\nAdjust the language to match the comment language.\n\n# How to Handle POSITIVE_REVIEW Comments\nStep 1 \u2014 Do not use the Knowledge Base tool\nStep 2 \u2014 Thank the person warmly and genuinely\nStep 3 \u2014 Keep it to 2 sentences maximum\nStep 4 \u2014 Subtly encourage others to try the service\n\n# Reply Rules\n- Reply in the SAME language as the comment\n- Urdu comment \u2192 reply in Urdu\n- English comment \u2192 reply in English\n- Mixed comment \u2192 reply in mixed\n- Keep reply between 2 to 4 sentences\n- Sound human and warm \u2014 never robotic\n- Never start with Hello or Dear Customer\n- Use commenter first name if provided\n- Never mention you are an AI\n- Maximum 1 emoji per reply\n- Never use quotation marks in the reply\n- Never add any label or prefix like \"Reply:\" \n  or \"Response:\" before the text\n\n# Critical Output Rule\nOutput ONLY the reply text that will be posted \nas a public comment. No explanation. No JSON. \nNo markdown. No extra words. Just the reply."
        },
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "49ea0c06-7095-42fc-9a91-8afce90af4a7",
      "name": "Reply to Comment",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2320,
        -272
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v25.0/{{ $('Clean Data').first().json.comment_id }}/comments",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "message",
              "value": "={{ $json.output }}"
            }
          ]
        },
        "genericAuthType": "httpQueryAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        },
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "8d01aa87-e53e-4e82-bc6d-d65467df5a1c",
      "name": "Inform User",
      "type": "n8n-nodes-base.slack",
      "position": [
        2240,
        96
      ],
      "parameters": {
        "text": "=\ud83d\udea8 NEGATIVE REVIEW ALERT\n\n\ud83d\udc64 Commenter: {{ $('Clean Data').first().json.commentator_name }}\n\ud83d\udcac Comment: {{ $('Clean Data').first().json.comment_text }}\n\ud83d\udcc4 Post Link: {{ $('Clean Data').first().json.post_permalink_url }}\n\ud83d\udd17 Comment Link: {{ $('Clean Data').first().json.comment_permalink_url }}\n\u26a0\ufe0f Confidence: HIGH\n\n\u2757 Please review and reply manually on Facebook.",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U09C6U7038V",
          "cachedResultName": "salmanmehboob1947"
        },
        "select": "user",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "90e59add-0883-467f-809e-ba4c4ced5062",
      "name": "Skip If Coment Contains Attachment",
      "type": "n8n-nodes-base.switch",
      "position": [
        464,
        -224
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Attachment Comment",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "01bf52a0-ffa6-4150-a381-4dd408c8af4c",
                    "operator": {
                      "type": "object",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.attachment }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Text Comment",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "9490b10c-6ae4-4c2e-bf42-b5ad82c0c1c5",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.message }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "25b6b42e-bf41-40f6-a343-41c6decf9c68",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        -528
      ],
      "parameters": {
        "width": 480,
        "height": 736,
        "content": "## Auto-Reply to Facebook Ad Comments with AI - Built for Agencies & Businesses\n\n### How it works\n\n1. Triggers via a webhook when a new comment arrives.\n2. Retrieves comment and related Facebook post details.\n3. Filters and cleans the data for AI processing.\n4. Utilizes AI to determine the comment's nature.\n5. Generates a response or notifies the user depending on the AI's output.\n\n### Setup steps\n\n- [ ] Configure the Webhook node to receive incoming HTTP requests.\n- [ ] Set up the Facebook API details for the HTTP request nodes.\n- [ ] Ensure the AI agent nodes are configured with appropriate models and endpoints.\n- [ ] Connect and configure the Slack node to notify users.\n\n### Customization\n\nYou can customize the AI models and endpoints for different comment categorizations and response behaviors."
      },
      "typeVersion": 1
    },
    {
      "id": "a8c6839c-d1a4-4496-aeb9-bd91fa8fd1e8",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -352
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 304,
        "content": "## Initial trigger and filter\n\nActivates on new comments and filters them based on authorship and post type."
      },
      "typeVersion": 1
    },
    {
      "id": "924b8a31-b800-4de4-9d0e-79ecde337b61",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -336
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 272,
        "content": "## Fetch Facebook details\n\nRetrieves comment and post details from Facebook."
      },
      "typeVersion": 1
    },
    {
      "id": "d4f92b3d-1bae-4f1f-84fb-cbfa4c7fcef5",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -480
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 624,
        "content": "## Data cleaning and AI classification\n\nCleans gathered data and classifies comments using AI."
      },
      "typeVersion": 1
    },
    {
      "id": "a29d0415-3793-4f5a-b08a-32ef82c6a4a1",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        -416
      ],
      "parameters": {
        "color": 7,
        "height": 416,
        "content": "## processing and response decision\n\nProcesses comments through switch and decides the next steps."
      },
      "typeVersion": 1
    },
    {
      "id": "f9f0fe48-7794-439a-af5c-74a0e562be89",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1696,
        -496
      ],
      "parameters": {
        "color": 7,
        "width": 992,
        "height": 736,
        "content": "## Generate response or notification\n\nAI generates a response to comments or notifies user via Slack."
      },
      "typeVersion": 1
    },
    {
      "id": "10744180-df03-4591-b4af-cefb2709acd8",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1216,
        0
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"classification\": \"string\",\n  \"confidence\": \"string\"\n}"
      },
      "typeVersion": 1.3
    }
  ],
  "connections": {
    "Switch": {
      "main": [
        [
          {
            "node": "Comment Generator",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Inform User",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Comment Generator",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Filleter Author Comment and Reqular Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Data": {
      "main": [
        [
          {
            "node": "Comment Classifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Knowledge Base": {
      "ai_tool": [
        [
          {
            "node": "Comment Generator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get FB Post Data": {
      "main": [
        [
          {
            "node": "Clean Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Comment Generator": {
      "main": [
        [
          {
            "node": "Reply to Comment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Comment Classifier": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Commnet Details": {
      "main": [
        [
          {
            "node": "Skip If Coment Contains Attachment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Comment Generator",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Comment Classifier",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Comment Classifier",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Skip If Coment Contains Attachment": {
      "main": [
        [],
        [
          {
            "node": "Get FB Post Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filleter Author Comment and Reqular Post": {
      "main": [
        [
          {
            "node": "Get Commnet Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Every comment on your Facebook ad is a sales opportunity. But manually replying to dozens of comments every day - in the right tone, in the right language, at the right speed - is simply not scalable.

Source: https://n8n.io/workflows/14711/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Never miss a lead from your Instagram ads again. This workflow automatically monitors every comment on your Instagram ad posts in real time, classifies the comment using AI, and takes the right action

Agent, Output Parser Structured, OpenRouter Chat +3
AI & RAG

This template is perfect for: Market Researchers tracking industry trends. Tech Teams wanting to stay updated on specific technologies (e.g., "AI", "Cybersecurity"). Content Creators looking for curat

HTTP Request, Agent, OpenRouter Chat +5
AI & RAG

Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.

Tool Think, Tool Calculator, Agent Tool +18
AI & RAG

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13
AI & RAG

Fully automates your service order pipeline from incoming booking to supplier confirmation — with built-in SLA enforcement and automatic escalation if a supplier goes silent. 📥 Receives orders via web

HTTP Request, Google Sheets, Agent +4