How to Use n8n to Answer Demo Requests With an AI Agent
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-10-24
The short answer: build an n8n Form trigger for demo requests, connect it to an AI Agent node with a chat model, give the agent a HubSpot tool to record the contact and a Gmail tool to send its reply, put the Gmail tool behind a human review step in Slack, add an error workflow, then publish and read the executions list. Each request is one execution however many steps it takes, so 400 demo requests a month sit inside Starter's 2,500 executions, $24 a month on monthly billing, checked on 24 October 2026 on the pricing page.
Disclosure: I may earn a commission through some links on this site. It does not change what this page says.
A demo request is the warmest lead a site produces, and the reply often waits for whoever checks the shared inbox. Here the agent writes the first reply in seconds, and a person still decides whether it goes. Background on the product sits in the n8n glossary entry.
Have these ready:
- The arithmetic for your volume. Each inbound form submission counts one production execution; test runs and error-workflow runs count none (executions docs). For example, 400 requests a month = 400 executions, and 400 / 2,500 = 16% of Starter's allowance.
- What you already have. HubSpot, the Gmail account that sends replies, and a Slack workspace where you can create an app. Approvals answered inside Slack need your instance reachable over public HTTPS, as an n8n Cloud instance is (Slack approvals).
- A written reply policy. Who gets a demo, who gets a self-serve link, and what the agent may never promise.
- A measure. The time between the form's submission and the approval in Slack, which the approval output records as
respondedAt.
Step 1: Build the form
Add the n8n Form trigger and its fields: name, work email, company, team size and a free-text question. While building, use the Test URL: Execute Step opens the form and runs only that node, so you can see the data arrive (Form trigger). Choose basic auth or none under Authentication depending on where the form will live.
Step 2: Add the AI Agent
Connect an AI Agent node after the form and attach a chat model. The agent decides which tools to call, and it needs at least one tool connected (AI Agent node). In the system prompt, paste your reply policy and say plainly which tool needs human approval and what to do when a call is denied: stop, and report what it would have sent. n8n's documentation asks for exactly that, so the agent handles a denial gracefully (human-in-the-loop).
Step 3: Give it a HubSpot tool
Attach the HubSpot node as a tool with the contact operation that creates or updates a record (HubSpot node). As an AI tool, its parameters can be filled by the agent from the form data. If your CRM rules are strict, put this tool behind review too; the docs suggest review for tools that modify records.
Step 4: Give it Gmail, behind a human
Attach the Gmail node with the Send message operation (Gmail node). Then open the agent's Tools connector, find Human review in the Tools Panel, pick Slack as the channel, and connect the Gmail tool to the review step (human-in-the-loop). Write the reviewer's message with the $tool.name and $tool.parameters variables, so the approver sees the recipient and the full draft before deciding. Approve and the email sends as written; deny and the action is cancelled, and the agent is told it was rejected.
This is the one step that should never run unattended. Sending external communication is the first example the docs give of a tool worth reviewing.
Step 5: Make the Slack side safe
The review step needs a Slack credential for the channel you chose (human-in-the-loop). n8n's Slack approvals guide, written for the Slack node's Send and Wait for Response operation, sets out how to make the click happen inside Slack and record who made it: a Slack app with the users:read and users:read.email scopes, Interactivity turned on with the request URL https://<your-n8n-instance>/webhook-waiting-slack, and the app's signing secret in the credential's Signature Secret field (Slack approvals). Whichever route you take, send requests to a private channel or a direct message, and limit who may approve.
Step 6: Add an error workflow
Create a second workflow that starts with the Error Trigger and posts the failed execution's URL and error message to Slack. In the demo workflow, open Settings and select it under Error workflow (error handling). Its runs do not count against your quota.
Step 7: Publish
Switch the form to its Production URL and click Publish. Publishing locks the live version: production runs use it rather than your latest edits, and webhook and form triggers switch to their production URLs (save and publish). If the button shows a partial state, at least one trigger failed to activate; hover over it, fix the trigger and publish again.
Step 8: Read the first week
Open the workflow's executions list each morning for a week. Count requests, approvals and denials, and read every denial: each one is a sentence your reply policy did not cover yet. Add it to the system prompt.
Where n8n's documentation says it goes wrong
- An empty approver list. With the Slack approval mode and no approver list, anyone who can see the message can approve or decline; in a channel, that is every member (Slack approvals).
- A missing signing secret. The buttons render, but clicks do not resume the workflow (same page).
- Testing on the production URL. Data arriving through a production form URL is not visible in the editor, so debug on the Test URL (Form trigger).
- Counting empty requests as free. A webhook request with an empty body still counts as an execution (executions docs).
The template library is there to get a dozen workflows onto your account, because more workflows mean more executions. One tested workflow that answers demo requests is worth more than twelve imported ones nobody reads.
FAQ
Can the agent send an email without approval?
Not through a tool connected to the human review step: the workflow pauses until a person approves or denies that call (human-in-the-loop). Tools not connected to review run on the agent's decision, so connect every tool that writes outside n8n.
Can approvals go to Microsoft Teams or email instead of Slack?
Yes. The review step supports Chat, Slack, Discord, Telegram, Microsoft Teams, Gmail, WhatsApp Business Cloud, Google Chat and Outlook (same page).
Do my test submissions use up executions?
No. Manual executions from the editor do not count toward the quota; only production executions started by triggers do (executions docs).
ABOUT THE AUTHOR
I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.
I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.
A senior operator doing the work: campaigns, channels, CRM and AI agents, live from day one.