AutomationFlowsData & Sheets › Collect & Store Restaurant Customer Feedback with Google Sheets and Email Forms

Collect & Store Restaurant Customer Feedback with Google Sheets and Email Forms

ByOneclick AI Squad @oneclick-ai on n8n.io

This n8n template demonstrates how to create an automated customer feedback collection system for restaurants. The workflow triggers when new customer emails are added to an Excel sheet, automatically sends personalized feedback forms, and stores all responses in a separate…

Event trigger★★★★☆ complexity7 nodesGoogle Sheets TriggerEmail SendForm TriggerGoogle Sheets
Data & Sheets Trigger: Event Nodes: 7 Complexity: ★★★★☆ Added:

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

This workflow follows the Emailsend → Form 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
{
  "id": "RoxQsRKHo66PYIoi",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Customer Feedback Collector \u2013 Food & Restaurant Experience",
  "tags": [],
  "nodes": [
    {
      "id": "fb14cccc-1a19-4af8-b646-cd2d831b832e",
      "name": "Google Sheets Trigger: New Feedback Entry",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        240,
        500
      ],
      "parameters": {
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WFcRiJk_kh_1UZo9PzS07Fsl5WS7zviePzhFOz9hFaA/edit#gid=0",
          "cachedResultName": "user detail"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1WFcRiJk_kh_1UZo9PzS07Fsl5WS7zviePzhFOz9hFaA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WFcRiJk_kh_1UZo9PzS07Fsl5WS7zviePzhFOz9hFaA/edit?usp=drivesdk",
          "cachedResultName": "Whatsapp"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "77e0ee27-71f0-41c2-b605-6bfb8fb52fb0",
      "name": "Wait for All Data (Code)",
      "type": "n8n-nodes-base.code",
      "position": [
        460,
        500
      ],
      "parameters": {
        "jsCode": "console.log(\"Waiting...\");\n\nsetTimeout(() => {\n  console.log(\"5 seconds passed.\");\n}, 5000);\n"
      },
      "typeVersion": 2
    },
    {
      "id": "508cc37e-4ecf-4839-ae40-3825aaf85428",
      "name": "Send Email: Notify Team About Feedback",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        680,
        500
      ],
      "parameters": {
        "text": "Please give us your valuable feedback at:\nhttps://n8n-devops.oneclicksales.xyz/form/feedback/list\n",
        "options": {
          "appendAttribution": false
        },
        "subject": "Feedback",
        "toEmail": "={{ $json.Email }}",
        "fromEmail": "user@example.com",
        "emailFormat": "text"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "3ddcf937-bd44-43d6-9818-1df26792b9b2",
      "name": "Trigger: Form Submitted",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        240,
        760
      ],
      "parameters": {
        "options": {
          "path": "feedback/list",
          "customCss": ":root {\n--font-family: 'Roboto', sans-serif;\n  --font-weight-normal: 400;\n  --font-weight-bold: 700;\n  --font-size-body: 13px;\n  --font-size-label: 15px;\n  --font-size-test-notice: 12px;\n  --font-size-input: 15px;\n  --font-size-header: 20px;\n  --font-size-paragraph: 16px;\n  --font-size-link: 14px;\n  --font-size-error: 12px;\n  --font-size-html-h1: 30px;\n  --font-size-html-h2: 24px;\n  --font-size-html-h3: 18px;\n  --font-size-html-h4: 16px;\n  --font-size-html-h5: 14px;\n  --font-size-html-h6: 12px;\n  --font-size-subheader: 16px;\n  --color-background: #f5f7fa;\n  --color-test-notice-text: #e6a23d;\n  --color-test-notice-bg: #fefaf6;\n  --color-test-notice-border: #f6dcb7;\n  --color-card-bg: linear-gradient(145deg, #ffffff, #f8f9fa);\n  --color-card-border: #ced4da;\n  --color-card-shadow: rgba(0, 0, 0, 0.1);\n  --color-link: #007bff;\n  --color-header: #343a40;\n  --color-label: #495057;\n  --color-input-border: #ced4da;\n  --color-input-text: #495057;\n  --color-focus-border: #007bff;\n  --color-submit-btn-bg: #007bff;\n  --color-submit-btn-text: #ffffff;\n  --color-error: #dc3545;\n  --color-required: #ff6d5a;\n  --color-clear-button-bg: #6c757d;\n  --color-html-text: #343a40;\n  --color-html-link: #007bff;\n  --color-header-subtext: #6c757d;\n  --border-radius-card: 12px;\n  --border-radius-input: 8px;\n  --border-radius-clear-btn: 50%;\n  --card-border-radius: 12px;\n  --padding-container-top: 40px;\n  --padding-card: 32px;\n  --padding-test-notice-vertical: 12px;\n  --padding-test-notice-horizontal: 24px;\n  --margin-bottom-card: 20px;\n  --padding-form-input: 14px;\n  --card-padding: 32px;\n  --card-margin-bottom: 20px;\n  --container-width: 500px;\n  --submit-btn-height: 50px;\n  --checkbox-size: 20px;\n  --box-shadow-card: 0px 6px 20px 0px var(--color-card-shadow);\n  --opacity-placeholder: 0.6;\n  --spacing-question-gap: 320px; /* Added for question spacing */\n}\n\n/* Add company logo to form header */\n.form-header {\n\tposition: relative;\n\ttext-align: center;\n\tpadding-top: 80px; /* Space for logo */\n\tmargin-bottom: 20px;\n}\n\n.form-header::before {\n\tcontent: '';\n\tdisplay: block;\n\twidth: 200px; /* Adjust based on logo size */\n\theight: 60px; /* Adjust based on logo size */\n\tbackground-image: url('https://d1rdz15x9x7c4f.cloudfront.net/assets/payload-images/oc-blue-logo.svg');\n\tbackground-size: contain;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n\n/* Ensure form title and description don't overlap */\n.form-header h1, .form-header p {\n\tposition: relative;\n\tz-index: 1;\n}\n\n/* Hide the 'Form automated with' footer */\n.form-footer, [class*=\"form-footer\"], [class*=\"powered-by\"], [class*=\"branding\"] {\n\tdisplay: none !important;\n}\n\n/* Ensure form inputs are modern and clean */\ninput, select, textarea {\n\tborder: 1px solid var(--color-input-border);\n\tborder-radius: var(--border-radius-input);\n\tpadding: var(--padding-form-input);\n\tfont-size: var(--font-size-input);\n\tfont-family: var(--font-family);\n\tcolor: var(--color-input-text);\n}\n\ninput:focus, select:focus, textarea:focus {\n\tborder-color: var(--color-focus-border);\n\tbox-shadow: 0 0 5px rgba(0, 123, 255, 0.3);\n\toutline: none;\n}\n\n/* Style submit button */\nbutton[type=\"submit\"] {\n\tbackground-color: var(--color-submit-btn-bg);\n\tcolor: var(--color-submit-btn-text);\n\tborder-radius: var(--border-radius-input);\n\theight: var(--submit-btn-height);\n\tfont-weight: var(--font-weight-bold);\n\tfont-size: var(--font-size-input);\n\ttransition: background-color 0.3s ease;\n}\n\nbutton[type=\"submit\"]:hover {\n\tbackground-color: #0056b3;\n}",
          "appendAttribution": false
        },
        "formTitle": "Customer Feedback Questions for IT Services",
        "formFields": {
          "values": [
            {
              "fieldLabel": "What is your Name?",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Email ID",
              "requiredField": true
            },
            {
              "fieldLabel": "Contact Number",
              "placeholder": "(e.g, +1234567890)",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "How was the cleanliness of the dining area?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Very Dissatisfied"
                  },
                  {
                    "option": "Dissatisfied"
                  },
                  {
                    "option": "Neutral"
                  },
                  {
                    "option": "Satisfied"
                  },
                  {
                    "option": "Very Satisfied"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Did you like the taste of the food?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Yes"
                  },
                  {
                    "option": "No"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldLabel": "What dish did you enjoy the most?",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Was your order accurate and timely?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Yes"
                  },
                  {
                    "option": "No"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Was our staff polite and helpful?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Yes"
                  },
                  {
                    "option": "No"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Was the food presentation appealing?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Good"
                  },
                  {
                    "option": "Average"
                  },
                  {
                    "option": "Bad"
                  },
                  {
                    "option": "Very Bad"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "How would you rate your overall dining experience?",
              "fieldOptions": {
                "values": [
                  {
                    "option": "1"
                  },
                  {
                    "option": "2"
                  },
                  {
                    "option": "3"
                  },
                  {
                    "option": "4"
                  },
                  {
                    "option": "5"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Any additional comments or suggestions?",
              "requiredField": true
            }
          ]
        }
      },
      "notesInFlow": false,
      "typeVersion": 2.2
    },
    {
      "id": "4a36cd39-a72e-4e8c-94c1-458a1eaed29d",
      "name": "Wait: Pause Before Processing",
      "type": "n8n-nodes-base.wait",
      "position": [
        460,
        760
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "38d3fdab-d3df-44d4-80af-b3427095c551",
      "name": "Append or Update Row in Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        680,
        760
      ],
      "parameters": {
        "columns": {
          "value": {
            "Name": "={{ $json['What is your Name?'] }}",
            "E-Mail": "={{ $json['Email ID'] }}",
            "Timestamp": "={{ $json.submittedAt }}",
            "Contact Number": "={{ $json['Contact Number'] }}",
            "Was our staff polite and helpful?": "={{ $json['Was the food presentation appealing?'] }}",
            "What dish did you enjoy the most?": "={{ $json['What dish did you enjoy the most?'] }}",
            "Did you like the taste of the food?": "={{ $json['Did you like the taste of the food?'] }}",
            "Was your order accurate and timely?": "={{ $json['Was your order accurate and timely?'] }}",
            "Was the food presentation appealing?": "={{ $json['Was the food presentation appealing?'] }}",
            "Any additional comments or suggestions?": "={{ $json['Any additional comments or suggestions?'] }}",
            "How was the cleanliness of the dining area?": "={{ $json['How was the cleanliness of the dining area?'] }}",
            "How would you rate your overall dining experience?": "={{ $json['How would you rate your overall dining experience?'] }}"
          },
          "schema": [
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "E-Mail",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "E-Mail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contact Number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Contact Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "How was the cleanliness of the dining area?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "How was the cleanliness of the dining area?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Did you like the taste of the food?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Did you like the taste of the food?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "What dish did you enjoy the most?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "What dish did you enjoy the most?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Was your order accurate and timely?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Was your order accurate and timely?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Was our staff polite and helpful?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Was our staff polite and helpful?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Was the food presentation appealing?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Was the food presentation appealing?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "How would you rate your overall dining experience?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "How would you rate your overall dining experience?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Any additional comments or suggestions?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Any additional comments or suggestions?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "E-Mail"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2016314922,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WFcRiJk_kh_1UZo9PzS07Fsl5WS7zviePzhFOz9hFaA/edit#gid=2016314922",
          "cachedResultName": "Food_feedback"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1WFcRiJk_kh_1UZo9PzS07Fsl5WS7zviePzhFOz9hFaA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WFcRiJk_kh_1UZo9PzS07Fsl5WS7zviePzhFOz9hFaA/edit?usp=drivesdk",
          "cachedResultName": "Whatsapp"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "6636ce99-7ebf-4b12-98e6-2d04e4fa663e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        220
      ],
      "parameters": {
        "color": 2,
        "width": 520,
        "height": 200,
        "content": "## Description\n\nThis workflow collects customer feedback about food and restaurant experience through a form, stores the responses in a Google Sheet, and optionally notifies the team via email. It helps track guest satisfaction and improve service quality."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c77e2a83-9b68-4198-8956-9b80d47c3b57",
  "connections": {
    "Trigger: Form Submitted": {
      "main": [
        [
          {
            "node": "Wait: Pause Before Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for All Data (Code)": {
      "main": [
        [
          {
            "node": "Send Email: Notify Team About Feedback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait: Pause Before Processing": {
      "main": [
        [
          {
            "node": "Append or Update Row in Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append or Update Row in Google Sheet": {
      "main": [
        []
      ]
    },
    "Google Sheets Trigger: New Feedback Entry": {
      "main": [
        [
          {
            "node": "Wait for All Data (Code)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

About this workflow

This n8n template demonstrates how to create an automated customer feedback collection system for restaurants. The workflow triggers when new customer emails are added to an Excel sheet, automatically sends personalized feedback forms, and stores all responses in a separate…

Source: https://n8n.io/workflows/5848/ — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

This n8n workflow automates the collection and processing of trip feedback data using Google Sheets as the backend. When new users are added to the system, they automatically receive feedback forms vi

Form Trigger, Google Sheets, Email Send +1
Data & Sheets

This template implements a professional Double Opt-In email verification system using Google Sheets as a database. The workflow collects user emails, generates unique verification codes, stores them s

Form Trigger, Form, Email Send +1
Data & Sheets

This automation streamlines the process of collecting user information using a Form Node, enabling individuals to join a waitlist managed via Google Sheets.

Google Sheets, Email Send, Form +2
Data & Sheets

Track website traffic and backlinks effortlessly using the Website Traffic Checker - Ahref API. This n8n workflow automates data retrieval and logging into Google Sheets, making it perfect for SEO pro

Form Trigger, HTTP Request, Email Send +1
Data & Sheets

This powerful no-code workflow automates plagiarism detection using Plagiarism Checker AI Powered. Users submit text through Google Sheets. The system checks for duplication using the API, sends a det

Google Sheets Trigger, HTTP Request, Email Send +1