---
title: "Contact form messages routed by AI and logged to Sheets"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/4494bf66-89a7-4330-83e1-27987393b1cb"
updated: "2026-11-12"
---

# Contact form messages routed by AI and logged to Sheets

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that classifies each contact form message with AI, emails the matching department and adds a row to a Google Sheet.

Contact form messages routed by AI and logged to Sheets is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow turns a contact form into a routed inbox. A visitor fills in a name, an email address and a message. An AI Text Classifier labels it as a quote request, product information, a general problem, an order question or other. The message is emailed to the matching department and added as a row to a Google Sheet. Thirteen nodes run it, beside one sticky note.

### Who it suits

Online shops and support teams whose contact form serves several departments. Skip it if your form needs more than a name, an address and a message, or if you cannot send message text to OpenAI.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Retail | Online shops | Send quote requests to sales | A shop owner gets bulk price questions in the quotes inbox. |
| Support | Support teams | Separate problems from order questions | A support lead sees damaged goods reports apart from product questions. |
| Wholesale | Distributors | Log every request in one sheet | A distributor reviews the month’s requests by category. |
| Agencies | Small agencies | Route a client’s contact form | An agency sets up one form for a client with three departments. |

You need some n8n, an SMTP account and a Google Sheet: import a file, add three credentials, fill in the addresses and set up the sheet’s headers.

### Where to use it

Any n8n that can reach OpenAI, an SMTP server and Google Sheets will run it. The form is served by n8n itself.

- n8n Cloud: import the file there and share the form’s address
- Your own n8n server: the same file and steps
- Your website: link to the form, or feed the workflow from another form through a webhook
- Google Sheets and email: where the messages land

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Setup takes three credentials, six addresses and a sheet with six headers.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key |
| SMTP | A mail account to send from |
| Google Sheets | A spreadsheet whose first row holds \`DATA\`, \`NOME\`, \`EMAIL\`, \`RICHIESTA\`, \`CATEGORIA\` and \`TO\` |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add an OpenAI credential and select it in `OpenAI`.
3. Add an SMTP credential and select it in the five department nodes. Replace each address placeholder.
4. Add a Google Sheets credential, select it in the five database nodes and replace `<YOUR_SHEET_ID>`.
5. Open the form’s test address from `On form submission`, send a message and look at the inbox and the sheet.

### How to use it

Share the form’s address. Each message lands in one department’s inbox, and a row with its category appears in the sheet. Use your own addresses while you test.

What to change for a different result

| To change | Where |
| --- | --- |
| The categories | \`Text Classifier\` |
| Who gets which message | \`toEmail\` in each department node |
| The email wording | The body in each department node |
| The form | The fields in \`On form submission\` |

### Example

A customer writes that a parcel arrived broken and asks for a replacement. The classifier picks General problem.

The support address gets an email with the message, and the reply address is the customer’s. A row with the time, name, address, message and category appears in the sheet.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Here one box shows the form, one decides the category, five send email and five add rows. Try it first with your own address.

**For experts.** A Form Trigger feeds a Text Classifier with the fallback set to `other`, so it has five outputs. Each output goes to an Email Send node and then to a Google Sheets append node.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`Text Classifier\` | Picks one category for the message | Its outputs follow the order of the categories, with \`other\` last |
| \`Quote Dep.\` | Emails the quote department | The reply address is the visitor’s |
| \`Quote DB\` | Adds one row to the sheet | Each database node writes its own category in \`CATEGORIA\` |
| \`OpenAI\` | The language model for the classifier | It answers in JSON text and calls no tool |

### Good to know

This workflow sends real email, so try it with your own addresses first.

- The repair: OpenAI’s deprecations page, read on 12 November 2026, gives 14 January 2027 as the shutdown date of \`gpt-4o-mini\`. This copy names \`gpt-6-luna\`
- The wiring: the Product info output led nowhere, and the quote output also fed the product department. Each category now reaches its own department
- The sheet: every row used to say \`info prodotti\` in \`CATEGORIA\`. Each node now writes its own category, and a leftover line about a product type is gone from the emails
- Not run: this copy was not run against OpenAI, an SMTP server or Google Sheets
- Your data: the message goes to OpenAI, and the name, address and message go to the departments and the sheet
- Credentials: the JSON holds none

## README

```markdown
# Contact form messages routed by AI and logged to Sheets

An n8n workflow with a contact form for an online shop. A Text Classifier sorts each message as a quote request, product information, a general problem, an order question or other. The message is then emailed to the matching department and added as a row to a Google Sheet.

## What is inside

- `workflow.json`: the workflow as n8n exports it, fourteen nodes: thirteen that do the work and one sticky note. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

- The credential links are gone. Select your own for OpenAI, SMTP and Google Sheets.
- The model was `gpt-4o-mini`. OpenAI's deprecations page, read on 12 November 2026, gives 14 January 2027 as its shutdown date and names `gpt-6-luna`.
- The Text Classifier reads the model's reply as JSON text and does not call a tool, as n8n's source shows. The `OpenAI` node therefore names `gpt-6-luna`.
- The Product info output led nowhere, and the Request Quote output fed the product department as well as the quote department. Request Quote now goes to `Quote Dep.` only, and Product info goes to `Prod. Dep.`.
- All five Google Sheets nodes wrote the same value, `info prodotti`, in `CATEGORIA`. Each one now writes its own category: `Request Quote`, `Product info`, `General problem`, `Order` or `other`.
- The email body ended with a `Tipo prodotto` line that reads a field the form does not have. That line is removed.
- The addresses and the sheet id are placeholders: `<YOUR_QUOTES_EMAIL>`, `<YOUR_PRODUCTS_EMAIL>`, `<YOUR_SUPPORT_EMAIL>`, `<YOUR_ORDERS_EMAIL>`, `<YOUR_OTHER_EMAIL>`, `<YOUR_SENDER_EMAIL>` and `<YOUR_SHEET_ID>`. The tab is named `Sheet1`.
- The note is rewritten, with a setup list.
- Nothing else.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An OpenAI API key.
- An SMTP account to send from, and the address it sends as.
- A Google Sheet whose first row holds the headers `DATA`, `NOME`, `EMAIL`, `RICHIESTA`, `CATEGORIA` and `TO`.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Add an OpenAI credential and select it in `OpenAI`.
3. Add an SMTP credential and select it in the five department nodes. Replace each `<YOUR_..._EMAIL>` placeholder with the address that should receive that kind of message.
4. Add a Google Sheets credential and select it in the five database nodes. Replace `<YOUR_SHEET_ID>` in each one with your spreadsheet's id and check the tab name.
5. Open the form's test address from `On form submission`, send a message and look at the inbox and the sheet.

## How a run goes

1. `On form submission` shows a form titled Contacts with the required fields Name, Email and Message. It answers the visitor when the last node finishes.
2. `Text Classifier` reads the message and picks one of four categories, or the fallback `other`.
3. One of the five department nodes sends an email. The subject starts with `[n8n Contacts]` and the department, and the reply address is the visitor's.
4. The matching database node adds a row. `DATA` is the submission time, `NOME`, `EMAIL` and `RICHIESTA` come from the form, `CATEGORIA` is the category and `TO` is the recipient.

## Change the look

- The categories and their descriptions: `Text Classifier`. A new category adds an output, which needs its own email and sheet nodes.
- Who gets which message: `toEmail` in each department node.
- The email wording: the body in each department node.
- The form's fields: `On form submission`.

## Good to know

- The workflow sends real email, so use your own addresses while you test.
- A message that fits no category goes to `Other Dep.`, because the fallback option is set to `other`.
- This copy was not run against OpenAI, an SMTP server or Google Sheets.
- The message text goes to OpenAI. The name, address and message go to the departments and the sheet.
- The JSON holds no credential.
```

## What is in it

3 files, 26 KB, downloaded as a zip.

```text
NOTICE.md  669 B
README.md  4 KB
workflow.json  22 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 12 steps, starting on a form
- AI: 1 step calls an AI model: Text Classifier
- Sign-ins: Signs in to: Email, Google Sheets and OpenAI
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 4 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/4494bf66-89a7-4330-83e1-27987393b1cb)
- [Its page on Mindket](https://mindket.com/p/4494bf66-89a7-4330-83e1-27987393b1cb)
