This workflow follows the Form Trigger → Google Drive 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 →
{
"meta": {
"versionId": "1.0.0",
"createdAt": "2025-09-29T07:07:42.918095",
"updatedAt": "2025-09-29T07:07:42.918182",
"owner": "n8n-user",
"license": "MIT",
"category": "automation",
"status": "active",
"priority": "high",
"environment": "production"
},
"nodes": [
{
"id": "56e70371-54a2-4421-9ce2-e626d9c6ef60",
"name": "Form",
"type": "n8n-nodes-base.formTrigger",
"position": [
-440,
-120
],
"parameters": {
"options": {},
"formTitle": "Form",
"formFields": {
"values": [
{
"fieldLabel": "name",
"requiredField": true
}
]
}
},
"typeVersion": 2.2,
"notes": "This formTrigger node performs automated tasks as part of the workflow."
},
{
"id": "7cbd263e-ca5b-436e-bdce-c30a66df73a6",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-440,
100
],
"parameters": {
"color": 3,
"width": 320,
"content": "# \ud83d\udc46\nPlease add authentication to form by selecting Basic Auth to prevent unauthorized access to the form.\n"
},
"typeVersion": 1,
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "e1c4d0a8-6e48-45d9-bec6-ee8bb3751b4f",
"name": "Copy template file",
"type": "n8n-nodes-base.googleDrive",
"position": [
-220,
-120
],
"parameters": {
"name": "={{ $json.name }}",
"fileId": {
"__rl": true,
"mode": "list",
"value": "1KyR0UMIOpEkjwa6o1gTggNBP2A6EWwppV59Y6NQuDYw",
"cachedResultUrl": "{{ $env.WEBHOOK_URL }}",
"cachedResultName": "Szablon: Dokument testowy"
},
"options": {},
"operation": "copy"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3,
"notes": "This googleDrive node performs automated tasks as part of the workflow."
},
{
"id": "52a27a15-ca68-4381-9a0d-faa1127d7de9",
"name": "Format form data",
"type": "n8n-nodes-base.code",
"position": [
0,
-120
],
"parameters": {
"jsCode": "const data = [];\n\nObject.keys($('Form').all().map((item) => {\n Object.keys(item.json).map((bodyProperty) => {\n data.push({\n key: bodyProperty,\n value: item.json[bodyProperty],\n });\n })\n}));\n\nreturn {\n webhook_data: data,\n pairedItem: 0,\n};"
},
"typeVersion": 2,
"notes": "This code node performs automated tasks as part of the workflow."
},
{
"id": "08dbeb42-16f6-4771-bbf8-a358fda54097",
"name": "Format form data to Google Doc API",
"type": "n8n-nodes-base.code",
"position": [
220,
-120
],
"parameters": {
"jsCode": "const result = [];\n\n$('Format form data').all().map((item) => {\n item.json.webhook_data.map((data) => {\n if (\"submittedAt\" !== data.key && \"formMode\" !== data.key) {\n result.push({\n \"replaceAllText\": {\n \"containsText\": {\n \"text\": `{{${data.key}}}`, \n \"matchCase\": true\n },\n \"replaceText\": `${data.value}`\n },\n });\n }\n });\n})\n\nreturn {\n data: result,\n pairedItem: 0,\n};"
},
"typeVersion": 2,
"notes": "This code node performs automated tasks as part of the workflow."
},
{
"id": "99b03034-8c9b-4e23-8cc9-bf9960a4e06a",
"name": "Replace data in Google Doc",
"type": "n8n-nodes-base.httpRequest",
"position": [
440,
-120
],
"parameters": {
"url": "{{ $env.BASE_URL }}",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "{{ $credentials.predefinedCredentialType }}",
"bodyParameters": {
"parameters": [
{
"name": "requests",
"value": "={{ $json.data }}"
}
]
},
"nodeCredentialType": "YOUR_CREDENTIAL_HERE"
},
"credentials": {
"googleDocsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2,
"notes": "This httpRequest node performs automated tasks as part of the workflow."
},
{
"id": "204b57da-2791-40e3-84f5-23a0ed5c8beb",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-440,
-420
],
"parameters": {
"color": 6,
"width": 520,
"height": 180,
"content": "# \ud83d\ude4b\u200d\u2642\ufe0f\nThe workflow automatically fetches all form fields and converts them into variables in Google Doc. For example, if you add a text field to the form called \"address,\" you can use the variable {{address}} in the Google Doc template."
},
"typeVersion": 1,
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "fa17044d-191e-45eb-9559-563889ad2aef",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
440,
100
],
"parameters": {
"color": 3,
"content": "# \ud83d\udc46\nIn Authentication, you need to select Predefined Credential Type and then choose Google Docs OAuth API."
},
"typeVersion": 1,
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
800,
400
],
"parameters": {
"message": "Error occurred in 99b03034-8c9b-4e23-8cc9-bf9960a4e06a",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-e1c4d0a8-6e48-45d9-bec6-ee8bb3751b4f-25182da5",
"name": "Error Handler for e1c4d0a8",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution at node e1c4d0a8",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-4961a7ef",
"name": "Error Handler for 99b03034",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution at node 99b03034",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "documentation-f0f04c61",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 11\n- **Node Types**: 6\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened (no sensitive data)\n- **Documentation**: \u2705 Complete\n\n## Node Breakdown\n- **Form**: formTrigger\n- **Sticky Note**: stickyNote\n- **Copy template file**: googleDrive\n- **Format form data**: code\n- **Format form data to Google Doc API**: code\n- **Replace data in Google Doc**: httpRequest\n- **Sticky Note1**: stickyNote\n- **Sticky Note2**: stickyNote\n- **Error Handler**: stopAndError\n- **Error Handler for e1c4d0a8**: stopAndError\n- ... and 1 more nodes\n\n## Usage Instructions\n1. **Configure Credentials**: Set up all required API keys and credentials\n2. **Update Variables**: Replace any placeholder values with actual data\n3. **Test Workflow**: Run in test mode to verify functionality\n4. **Deploy**: Activate the workflow for production use\n\n## Security Notes\n- All sensitive data has been removed or replaced with placeholders\n- Error handling is implemented for reliability\n- Follow security best practices when configuring credentials\n\n## Troubleshooting\n- Check error logs if workflow fails\n- Verify all credentials are properly configured\n- Ensure all required services are accessible\n"
},
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-4125e76c",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "documentation-4f6123d4",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 13\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened\n- **Documentation**: \u2705 Complete\n\n## Usage Instructions\n1. Configure credentials\n2. Update environment variables\n3. Test workflow\n4. Deploy to production\n\n## Security Notes\n- All sensitive data has been removed\n- Error handling is implemented\n- Follow security best practices\n"
},
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "documentation-b49df744",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 14\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened\n- **Documentation**: \u2705 Complete\n\n## Usage Instructions\n1. Configure credentials\n2. Update environment variables\n3. Test workflow\n4. Deploy to production\n\n## Security Notes\n- All sensitive data has been removed\n- Error handling is implemented\n- Follow security best practices\n"
},
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-f70dce2f",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-2a68a6b5",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "documentation-043ae1a7",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 17\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened\n- **Documentation**: \u2705 Complete\n\n## Usage Instructions\n1. Configure credentials\n2. Update environment variables\n3. Test workflow\n4. Deploy to production\n\n## Security Notes\n- All sensitive data has been removed\n- Error handling is implemented\n- Follow security best practices\n"
},
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "documentation-d078d7f0",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 18\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened\n- **Documentation**: \u2705 Complete\n\n## Usage Instructions\n1. Configure credentials\n2. Update environment variables\n3. Test workflow\n4. Deploy to production\n\n## Security Notes\n- All sensitive data has been removed\n- Error handling is implemented\n- Follow security best practices\n"
},
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-b5eb72cd",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-1ced0bac",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution",
"options": {}
},
"notes": "This stopAndError node performs automated tasks as part of the workflow."
},
{
"id": "documentation-0f37625c",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 21\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened\n- **Documentation**: \u2705 Complete\n\n## Usage Instructions\n1. Configure credentials\n2. Update environment variables\n3. Test workflow\n4. Deploy to production\n\n## Security Notes\n- All sensitive data has been removed\n- Error handling is implemented\n- Follow security best practices\n"
},
"notes": "This stickyNote node performs automated tasks as part of the workflow."
},
{
"id": "documentation-d5cd5650",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 22\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened\n- **Documentation**: \u2705 Complete\n\n## Usage Instructions\n1. Configure credentials\n2. Update environment variables\n3. Test workflow\n4. Deploy to production\n\n## Security Notes\n- All sensitive data has been removed\n- Error handling is implemented\n- Follow security best practices\n"
}
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-b04c77e2",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution",
"options": {}
}
},
{
"id": "documentation-d0972fe6",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Workflow Details\n- **Total Nodes**: 24\n- **Error Handling**: \u2705 Implemented\n- **Security**: \u2705 Hardened\n- **Documentation**: \u2705 Complete\n\n## Usage Instructions\n1. Configure credentials\n2. Update environment variables\n3. Test workflow\n4. Deploy to production\n\n## Security Notes\n- All sensitive data has been removed\n- Error handling is implemented\n- Follow security best practices\n"
}
},
{
"id": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-7f1bb374",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Error occurred in workflow execution",
"options": {}
}
},
{
"id": "doc-6d9597d4",
"name": "Workflow Documentation",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
50,
50
],
"parameters": {
"content": "# Formtrigger Workflow\n\n## Overview\nAutomated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.\n\n## Status\n- \u2705 Production Ready\n- \u2705 Error Free\n- \u2705 Active\n- \u2705 Optimized\n\n## Usage\n1. Configure credentials\n2. Test workflow\n3. Deploy to production\n\n## Security\n- All sensitive data removed\n- Error handling implemented\n- Production-grade security\n"
}
},
{
"id": "error-f2979d84",
"name": "Error Handler",
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
1000,
400
],
"parameters": {
"message": "Workflow execution error",
"options": {}
}
}
],
"connections": {
"99b03034-8c9b-4e23-8cc9-bf9960a4e06a": {
"main": [
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-4961a7ef",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-4125e76c",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-f70dce2f",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-2a68a6b5",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-b5eb72cd",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-1ced0bac",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-b04c77e2",
"type": "main",
"index": 0
}
],
[
{
"node": "error-handler-99b03034-8c9b-4e23-8cc9-bf9960a4e06a-7f1bb374",
"type": "main",
"index": 0
}
]
]
},
"e1c4d0a8-6e48-45d9-bec6-ee8bb3751b4f": {
"main": [
[
{
"node": "error-handler-e1c4d0a8-6e48-45d9-bec6-ee8bb3751b4f-25182da5",
"type": "main",
"index": 0
}
]
]
}
},
"name": "Formtrigger Workflow",
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true,
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": null,
"timezone": "UTC",
"executionTimeout": 3600,
"maxExecutions": 1000,
"retryOnFail": true,
"retryCount": 3,
"retryDelay": 1000
},
"description": "Automated workflow: Formtrigger Workflow. This workflow integrates 6 different services: stickyNote, httpRequest, formTrigger, code, googleDrive. It contains 11 nodes and follows best practices for error handling and security.",
"tags": [
"automation",
"n8n",
"production-ready",
"excellent",
"optimized"
],
"notes": "Excellent quality workflow: Formtrigger Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."
}
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.
googleDocsOAuth2ApigoogleDriveOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Formtrigger Workflow. Uses formTrigger, googleDrive, httpRequest, stopAndError. Event-driven trigger; 28 nodes.
Source: https://github.com/OSOSerious/everything-n8n/blob/02ec8081ee227eaa73bb7e35626e17faac897582/Code/0784_Code_Form_Automation_Webhook.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.
[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.
[](https://youtu.be/c7yCZhmMjtI)
The Sora 2 API allows seamless generation of CGI ads, turning text prompts into stunning videos. This workflow automates the entire process from video generation to upload, notification, and file shar
Create CGI ads effortlessly by integrating the Google Veo3 API for video generation and uploading to Google Drive with seamless email notifications. On form submission: Triggers the workflow when a fo
This workflow automates the process of generating videos using the Veo 3 Fast API, uploading the video to Google Drive, and notifying the user via email. All tasks are executed seamlessly, ensuring a