AutomationFlowsAI & RAG › Ultimate Browser Agent with Airtop & Slack

Ultimate Browser Agent with Airtop & Slack

Original n8n title: Ultimate Browser Agent

Ultimate Browser Agent. Uses airtopTool, slack, airtop, executeWorkflowTrigger. Event-driven trigger; 24 nodes.

Event trigger★★★★☆ complexityAI-powered24 nodesAirtop ToolSlackAirtopExecute Workflow TriggerTool WorkflowChat TriggerTool ThinkAgent
AI & RAG Trigger: Event Nodes: 24 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Chat Trigger 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
{
  "name": "Ultimate Browser Agent",
  "nodes": [
    {
      "parameters": {
        "resource": "extraction",
        "operation": "query",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Start_Browser` tool\", 'string') }}",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Start_Browser` tool\", 'string') }}",
        "prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', ``, 'string') }}",
        "additionalFields": {}
      },
      "id": "85338306-5acd-4e9b-9a02-7fc5e9a03557",
      "name": "Query",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        0,
        480
      ],
      "typeVersion": 1,
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "window",
        "operation": "load",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Start_Browser` tool\", 'string') }}",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Start_Browser` tool\", 'string') }}",
        "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
        "additionalFields": {}
      },
      "id": "67cee508-c2c0-423e-b1fb-576de026f3ed",
      "name": "Load URL",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        120,
        480
      ],
      "typeVersion": 1,
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "interaction",
        "operation": "type",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Start_Browser` tool\", 'string') }}",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Start_Browser` tool\", 'string') }}",
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}",
        "pressEnterKey": true,
        "elementDescription": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Element_Description', `Search bars usually contain a placeholder that says \"search\"`, 'string') }}",
        "additionalFields": {}
      },
      "id": "e1bab1f8-8127-49a2-b3a3-f672c0687ed6",
      "name": "Type",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        -120,
        480
      ],
      "typeVersion": 1,
      "alwaysOutputData": true,
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "text": "=Watch your agent work!\n\n{{ $json.data.liveViewUrl }}",
        "otherOptions": {
          "includeLinkToWorkflow": false
        }
      },
      "id": "5bc4020c-f677-45c2-b9f6-dc6cf847df1e",
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        -40,
        700
      ],
      "typeVersion": 2.3,
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "profileName": "={{ $json.profile_name }}",
        "additionalFields": {}
      },
      "id": "c40e9b06-cac3-4714-b58b-4b60c978f321",
      "name": "Session",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -400,
        700
      ],
      "typeVersion": 1,
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "window",
        "url": "={{ $('When Executed by Another Workflow').item.json.url }}",
        "getLiveView": true,
        "additionalFields": {}
      },
      "id": "fd8f9014-eff8-45c2-9483-0e6eda4a4979",
      "name": "Window",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -220,
        700
      ],
      "typeVersion": 1,
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "0a0680af-39bd-4bc7-b9cd-84c1766c79a1",
              "name": "sessionId",
              "type": "string",
              "value": "={{ $('Session').item.json.sessionId }}"
            },
            {
              "id": "13940ee8-c1d4-4718-a7b4-176c44c097b7",
              "name": "windowId",
              "type": "string",
              "value": "={{ $('Window').item.json.data.windowId }}"
            },
            {
              "id": "a0f2005c-2cd2-4a8d-891b-a4759b72a124",
              "name": "output",
              "type": "string",
              "value": "Session and window created successfully"
            }
          ]
        },
        "options": {}
      },
      "id": "9e310e8c-910e-431f-9919-94a06eb2eca0",
      "name": "Return IDs",
      "type": "n8n-nodes-base.set",
      "position": [
        140,
        700
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "url"
            },
            {
              "name": "profile_name"
            }
          ]
        }
      },
      "id": "a84101b9-165f-47f4-bbc4-8705abfb6e41",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -580,
        700
      ],
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "name": "Start_Browser",
        "description": "Start a new browser session and window",
        "workflowId": {
          "__rl": true,
          "value": "YOUR WORKFLOW ID",
          "mode": "id"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {},
          "matchingColumns": [],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "id": "385c94f1-27b4-492b-8224-41d26dbb76b4",
      "name": "Start Browser",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        -360,
        480
      ],
      "typeVersion": 2.1
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.1,
      "position": [
        -320,
        220
      ],
      "id": "fa8ea169-c98f-42a3-9f9d-fd1571999bf6",
      "name": "When chat message received"
    },
    {
      "parameters": {
        "operation": "terminate",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Start_Browser` tool\", 'string') }}"
      },
      "id": "05262c94-fb9a-4a51-b1c6-8b4981888850",
      "name": "End Session",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        240,
        480
      ],
      "typeVersion": 1,
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {},
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "typeVersion": 1,
      "position": [
        -580,
        480
      ],
      "id": "f5ee84a5-4b42-4f8c-b43e-9f7d91e6e420",
      "name": "Think"
    },
    {
      "parameters": {
        "options": {
          "systemMessage": "=# Overview\nYou are a smart, advanced web agent connected to tools that let you control a remote web browser. Your primary goal is to fulfill the human's request accurately and efficiently by interacting with web pages using your tools.\n\n## Tools\n\n### Start_Browser\n- Always begin with this tool.\n- It returns a `sessionId` and `windowId` which are **required** for all other tools.\n- You must include these IDs in every subsequent tool call.\n\n### Load URL\n- Loads a website in the browser window.\n- Pass the `sessionId`, `windowId`, and the desired URL (e.g., `\"https://www.bestbuy.com\"`).\n\n### Query\n- You don't have access to the browser screen but you can call this tool to get knowledge and hints of the current browser window.\n- Use this tool to retrieve information that the human asked for.\n\n### Click\n- Use this tool to click on elements like buttons.\n\n### Type\n- Use this to type text into a visible input field. This tool clicks Enter after typing the text so don't send [ENTER] commandes.\n\n### End Session\n- When the task is fully complete, use this tool to properly close the browser session.\n- You must ALWAYS USE THIS TOOL BEFORE RESPONDING TO THE HUMAN\n\n### Think\n- Use when you need to reflect on what you've done and think about what steps to take next\n\n\n## Important\n- Always think step-by-step. Use `Query` whenever you\u2019re unsure what\u2019s on the screen or what to click/type next.\n- You will NEVER need to login",
          "maxIterations": 20,
          "returnIntermediateSteps": false,
          "passthroughBinaryImages": true
        }
      },
      "id": "43e674dd-82e5-49b3-8e4d-f13793e5e6c9",
      "name": "Browser Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -140,
        220
      ],
      "retryOnFail": true,
      "typeVersion": 1.8,
      "waitBetweenTries": 5000
    },
    {
      "parameters": {
        "content": "# Browser Agent\n",
        "height": 240,
        "width": 760,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -400,
        140
      ],
      "id": "14a2d1f7-4011-4b93-935e-43d499b9bb90",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## Browser Tools\n",
        "height": 220,
        "width": 760,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -400,
        400
      ],
      "id": "a0688106-d098-43af-84ea-87cc1a9c55bd",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## Think",
        "height": 220,
        "width": 260
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -680,
        400
      ],
      "id": "60b25dc0-5899-4333-a606-f974dbc57ef4",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## Model / Memory",
        "height": 240,
        "width": 260,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -680,
        140
      ],
      "id": "ab5fdf44-bfd6-49c1-a94a-d0dec9e34c95",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "",
        "height": 200,
        "width": 160,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        380,
        420
      ],
      "id": "a0b512b9-7a84-4eff-8c71-9907b3bc78dc",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "content": "## Start Browser Tool",
        "height": 240,
        "width": 1040,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -680,
        640
      ],
      "id": "b7555d71-d4b9-4a74-8444-5932162fe18d",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "model": "anthropic/claude-3.5-sonnet",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "typeVersion": 1,
      "position": [
        -640,
        240
      ],
      "id": "20cc49d8-d50a-4516-b20d-3ff747205511",
      "name": "3.5 Sonnet",
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {},
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        -540,
        240
      ],
      "id": "bb3e8424-cca2-4a89-a2db-e6e1c61c20a2",
      "name": "Memory"
    },
    {
      "parameters": {
        "resource": "interaction",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Start_Browser` tool\", 'string') }}",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Start_Browser` tool\", 'string') }}",
        "elementDescription": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Element_Description', `Describe in detail the element to click on, e.g. The menu item \"about us\" at the top of the page`, 'string') }}",
        "additionalFields": {
          "waitForNavigation": "domcontentloaded"
        }
      },
      "id": "5e29189a-2b5a-4193-bff1-f4afe1c4b838",
      "name": "ClickTool",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        420,
        480
      ],
      "typeVersion": 1,
      "alwaysOutputData": true,
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "toolDescription": "Use this tool to click on an element",
        "method": "POST",
        "url": "=https://api.airtop.ai/api/v1/sessions/{{ $fromAI('sessionId') }}/windows/{{ $fromAI('windowId') }}/click",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "elementDescription",
              "value": "={{ $fromAI('elementDescription', `the element to click on in as much detail as possible`, 'string') }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        -240,
        480
      ],
      "id": "2e0d8ccf-5d00-421e-994d-2f12aeb90c36",
      "name": "Click",
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "# \ud83d\udee0\ufe0f Setup Guide\n### \ud83d\udc64 Author: [Nate Herk](https://www.youtube.com/@nateherk)\n\n### \ud83d\udd0c Steps to Connect:\n1. **Airtop Setup**  \n   - Visit [Airtop](https://www.airtop.ai/) to generate your API key and connect to the Airtop tools/nodes.  \n   - Set up a profile with credentials (if automating websites like X, \nLinkedIn, or Amazon).  \n   - Connect your profile in the Start Browser tool.\n   - \ud83d\udcb8 Use code **`NateHalfOff`** for **50% off Airtop for 3 months**.\n\n2. **OpenRouter API Key**  \n   - Go to [OpenRouter](https://openrouter.ai/) and generate your API key.  \n   - Paste this key into your **Chat Model** node in n8n.\n\n3. **Start Browser Tool Setup**  \n   - Link your **Start Browser workflow** to the **Start Browser Tool**:\n     - Either link it using the **ID method** (explained in the YouTube video).\n     - Or paste the **Start Browser Tool** workflow into a separate n8n workflow and link it directly.\n\n4. **(Optional) Live Agent Browser View**  \n   - Connect additional services like:\n     - [Slack](https://slack.com/)\n     - [Telegram](https://telegram.org/)\n     - [Gmail](https://mail.google.com/)\n   - This allows you to **receive a live browser link** while your agent is running automations.\n\n---\n\ud83d\udca1 Need help? Ask questions in the [AI Automation Society Community](https://www.skool.com/ai-automation-society/about) or check out Nate\u2019s [YouTube Tutorials](https://www.youtube.com/@nateherk) .\n",
        "height": 740,
        "width": 660
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1360,
        140
      ],
      "id": "471cc91e-e194-42af-91fa-4242c270b7cd",
      "name": "Sticky Note6"
    }
  ],
  "connections": {
    "Type": {
      "ai_tool": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Query": {
      "ai_tool": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Slack": {
      "main": [
        [
          {
            "node": "Return IDs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Window": {
      "main": [
        [
          {
            "node": "Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Session": {
      "main": [
        [
          {
            "node": "Window",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load URL": {
      "ai_tool": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Session",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Browser": {
      "ai_tool": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Browser Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "End Session": {
      "ai_tool": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Think": {
      "ai_tool": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Browser Agent": {
      "main": [
        []
      ]
    },
    "3.5 Sonnet": {
      "ai_languageModel": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Memory": {
      "ai_memory": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "ClickTool": {
      "ai_tool": [
        []
      ]
    },
    "Click": {
      "ai_tool": [
        [
          {
            "node": "Browser Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ce8ba148-75f0-4b8a-9498-0899bb38df20",
  "meta": {
    "templateId": "3592",
    "templateCredsSetupCompleted": true
  },
  "id": "M7oOZ03MG7k97cOe",
  "tags": []
}

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

How this works

This workflow empowers teams to automate complex browser interactions seamlessly, saving hours of manual effort on repetitive web tasks like data entry or monitoring. It's ideal for operations managers or developers who need reliable, event-driven browser automation without coding from scratch. The core process begins with an airtopTool query to interpret user instructions, followed by loading URLs and simulating actions through airtop integration, culminating in Slack notifications for real-time updates.

Use this workflow for dynamic, AI-assisted browser sessions triggered by events, such as scraping live data or testing web apps across multiple sites. Avoid it for simple one-off tasks better suited to basic scripts, or when high-security environments prohibit external tool integrations like airtop. Common variations include adapting the Slack node for email alerts or chaining it with executeWorkflowTrigger to embed in larger automation chains.

About this workflow

Ultimate Browser Agent. Uses airtopTool, slack, airtop, executeWorkflowTrigger. Event-driven trigger; 24 nodes.

Source: https://github.com/Zie619/n8n-workflows — 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

The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C

Perplexity Tool, Memory Buffer Window, Agent +15
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

Turn plain-language chat like “Tomorrow 9 AM: write blog post” into neatly organised Todoist tasks with GPT-4o and n8n—zero code.

Agent, Execute Workflow Trigger, Chat Trigger +5
AI & RAG

The Video Grok Agent is an AI-powered video generation and editing workflow that uses Grok 4.1 Fast (via OpenRouter) and Grok Imagine Video to create and modify videos through natural language.

Tool Workflow, Execute Workflow Trigger, Chat Trigger +5
AI & RAG

Chat with a multi-agent system to write a blog. The orchestrator advances through research, headlines, hooks, outline, intro, draft, and final polish–one phase per reply—outputting options and asking

Agent, Tool Workflow, Memory Buffer Window +9