This workflow follows the Form Trigger → Gmail 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 →
{
"name": "My workflow",
"nodes": [
{
"parameters": {
"content": "# \u7576\u6709\u4eba\u586b\u5beb\u8868\u55ae",
"height": 224,
"width": 224
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1088,
0
],
"id": "e8bb4fe4-16f1-45b0-ad46-e855e24cd6b5",
"name": "Sticky Note"
},
{
"parameters": {
"content": "# AI \u5beb\u611f\u8b1d\u4fe1",
"height": 224,
"width": 288
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1376,
0
],
"id": "51c13a56-4cc5-49b6-af36-1bd987da8d35",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "# \u5bc4\u51fa\u611f\u8b1d\u4fe1\uff08Gmail\uff09",
"height": 224,
"width": 224
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1728,
0
],
"id": "44010aa5-b38a-4a2a-b769-42946e10d375",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "# \u628a\u9019\u500b\u8cc7\u6599\u5beb\u5165 Google Sheets",
"height": 224,
"width": 304
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
2048,
0
],
"id": "1fd1a9ea-3316-479b-8ea0-b13e796431f4",
"name": "Sticky Note3"
},
{
"parameters": {
"formTitle": "\u8acb\u586b\u4f60\u7684\u56de\u8986",
"formDescription": "test",
"formFields": {
"values": [
{
"fieldLabel": "email",
"requiredField": true
},
{
"fieldLabel": "\u8acb\u554f\u60a8\u7684\u540d\u5b57\u662f\uff5e",
"requiredField": true
},
{
"fieldLabel": "\u56de\u994b",
"requiredField": true
}
]
},
"options": {}
},
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.6,
"position": [
1152,
96
],
"id": "8d861359-b228-4b1c-b54c-b1e308ab65d2",
"name": "On form submission"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1-mini",
"mode": "list",
"cachedResultName": "GPT-4.1-MINI"
},
"responses": {
"values": [
{
"content": "=\u5beb\u4e00\u6bb5\u611f\u8b1d\u4fe1\u7d66\u7528\u6236\uff0c\u5982\u679c\u6709\u597d\u7684\u56de\u994b\uff0c\u8ddf\u4ed6\u8aaa\u8b1d\u8b1d\u90a3\u500b\u56de\u994b\uff0c\u5982\u679c\u6709\u4e0d\u597d\u7684\u56de\u994b\uff0c\u8ddf\u4ed6\u8aaa\u6211\u5011\u6703\u6aa2\u8a0e\uff0c\u4e5f\u5e0c\u671b\u4e4b\u5f8c\u6709\u6a5f\u6703\u518d\u898b\u9762\u7684\u8a71\uff0c\u53ef\u4ee5\u8b93\u4ed6\u770b\u5230\u6211\u5011\u7684\u6210\u9577\u3002\n\n\u4f60\u5728\u5beb\u9019\u6bb5\u6587\u5b57\u7684\u6642\u5019\uff0c\u5c31\u5beb\u4e00\u6bb5\u6587\u5b57\u5c31\u597d\u4e86\uff0c\u8a18\u5f97\u8981\u63d0\u53ca\u4ed6\u7684\u540d\u5b57\u3002\u5982\u679c\u4ed6\u6709\u59d3\u6c0f\u7684\u8a71\uff0c\u628a\u59d3\u6c0f\u62ff\u6389\uff0c\u8b93\u6574\u500b\u611f\u89ba\u518d\u66f4\u89aa\u5207\u4e00\u9ede\n\n\n\u59d3\u540d\uff1a{{ $json['\u8acb\u554f\u60a8\u7684\u540d\u5b57\u662f\uff5e'] }}\n\u4fe1\u7bb1\uff1a{{ $json.email }}\n\u56de\u994b\uff1a{{ $json['\u56de\u994b'] }}"
}
]
},
"builtInTools": {},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.3,
"position": [
1408,
96
],
"id": "fe3892f1-2d28-46d8-b915-e105dbdf9853",
"name": "Message a model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "={{ $('On form submission').item.json.email }}",
"subject": "=\u611f\u8b1d\u60a8\u7684\u56de\u994b\uff0c{{ $('On form submission').item.json['\u8acb\u554f\u60a8\u7684\u540d\u5b57\u662f\uff5e'] }}\uff01",
"emailType": "html",
"message": "=<div style=\"font-family: 'Helvetica Neue', Arial, sans-serif; max-width: 560px; margin: 0 auto; padding: 32px 16px;\">\n <div style=\"background-color: #ffffff; border: 1px solid #eeeeee; border-radius: 12px; padding: 40px; box-shadow: 0 4px 16px rgba(0,0,0,0.06);\">\n <h1 style=\"color: #ea4b71; font-size: 22px; margin: 0 0 24px;\">\u611f\u8b1d\u60a8\u7684\u56de\u994b \ud83d\ude4f</h1>\n <p style=\"color: #333333; font-size: 15px; line-height: 1.8; white-space: pre-line; margin: 0 0 32px;\">{{ $json.output[0].content[0].text }}</p>\n <div style=\"text-align: center; margin: 32px 0;\">\n <a href=\"https://n8n.io\" target=\"_blank\" style=\"background-color: #ea4b71; color: #ffffff; text-decoration: none; padding: 14px 32px; border-radius: 8px; font-weight: 600; font-size: 14px; display: inline-block;\">\u4e86\u89e3\u66f4\u591a n8n \u81ea\u52d5\u5316</a>\n </div>\n <hr style=\"border: none; border-top: 1px solid #eeeeee; margin: 32px 0 16px;\" />\n <p style=\"color: #aaaaaa; font-size: 12px; text-align: center; margin: 0;\">\u6b64\u4fe1\u4ef6\u7531\u81ea\u52d5\u5316\u6d41\u7a0b\u5bc4\u51fa</p>\n </div>\n</div>",
"options": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
1792,
96
],
"id": "35e9fd2e-67fe-4376-8d93-7c3dcfb7c00b",
"name": "Send a message",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "# \u539f\u59cb\u8cc7\u6599\u5eab",
"height": 704,
"width": 1008,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
0,
0
],
"id": "329a1dfa-99e3-47e7-be6b-159a8fa7ebd2",
"name": "Sticky Note4"
},
{
"parameters": {
"content": "# \u65b0\u8cc7\u6599",
"height": 80,
"width": 1008,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
0,
704
],
"id": "bc972f33-c53f-412f-8de2-7c54495734b3",
"name": "Sticky Note5"
},
{
"parameters": {
"resource": "sheet",
"operation": "append",
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"email": "={{ $('On form submission').item.json.email }}",
"name": "={{ $('On form submission').item.json['\u8acb\u554f\u60a8\u7684\u540d\u5b57\u662f\uff5e'] }}",
"feedback": "={{ $('On form submission').item.json['\u56de\u994b'] }}",
"thank_you_letter": "={{ $('Message a model').item.json.output[0].content[0].text }}",
"submitted_at": "={{ $now.toISO() }}"
},
"matchingColumns": [],
"schema": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
2144,
96
],
"id": "dc71e067-a17c-4c93-91f1-07515fda5c9b",
"name": "Append row in sheet"
}
],
"connections": {
"On form submission": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Send a message": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate"
},
"versionId": "517b0f7a-d350-42ad-bb8a-3dfcad496b1e",
"meta": {
"templateCredsSetupCompleted": true
},
"nodeGroups": [],
"id": "i4zsPSr5hvKS3jWO",
"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.
gmailOAuth2openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Form Email. Uses formTrigger, openAi, gmail, googleSheets. Event-driven trigger; 10 nodes.
Source: https://github.com/JacobHsu/n8n/blob/c88fecb64da386d6a681c79a25320f120907c858/email/form_email.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
An n8n-based automation that generates client proposals from a form, lets you review everything in one place, and sends the proposal only when you approve it.
Reimbursements used to be a headache.
This workflow captures client inquiries via an n8n Form, uses OpenAI to generate an internal brief and client-facing summary, logs the submission to Google Sheets, creates a Google Drive folder, notif
++Who is this for++ Small business owners, freelancers, and agencies who receive inbound leads through a web form and want instant, personalized follow-up — without manually reading every submission.
Template Description: > Stop manually reading every CV and copy-pasting data into a spreadsheet. This workflow acts as an AI recruiting assistant, automating your entire initial screening process.