Workflow: GoogleSheets MySQL Integration
Integrations: compareDatasets, googleSheets, if, manualTrigger, mySql, noOp, scheduleTrigger, set, stickyNote, stopAndError

{"id": "VtiRiIGkdeUhyh0N", "meta": {"instanceId": "workflow-c8a3b2bb", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:52.146983", "updatedAt": "2025-09-29T07:07:52.147030", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "GoogleSheets MySQL Integration", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "ec43f0df-338b-462f-9195-b20024e83ba1", "name": "When clicking \"Execute Workflow\"", "type": "n8n-nodes-base.manualTrigger", "position": [720, 500], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow."}, {"id": "e9fd1af3-dcf8-4442-958d-cb8390c85263", "name": "Compare Datasets", "type": "n8n-nodes-base.compareDatasets", "position": [1380, 380], "parameters": {"options": {"skipFields": "record_created,record_updated,id"}, "mergeByFields": {"values": [{"field1": "timestamp", "field2": "timestamp"}, {"field1": "source_name", "field2": "source_name"}]}}, "typeVersion": 2.3, "notes": "This compareDatasets node performs automated tasks as part of the workflow."}, {"id": "5b14d739-9037-48a8-9990-5b8ac3318b1c", "name": "Send Notifications", "type": "n8n-nodes-base.noOp", "position": [1840, 260], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "10ff3339-9091-4ea2-be4e-12a91208e27d", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [720, 200], "parameters": {"rule": {"interval": [{"field": "cronExpression", "expression": "*/30 6-22 * * 1-5"}]}}, "typeVersion": 1.1, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow."}, {"id": "dcf6838f-0d58-4438-875b-94caac45cb65", "name": "Google Sheet Data", "type": "n8n-nodes-base.googleSheets", "position": [940, 200], "parameters": {"options": {"returnAllMatches": "returnAllMatches"}, "filtersUI": {"values": [{"lookupColumn": "DB Status"}]}, "sheetName": {"__rl": true, "mode": "list", "value": 263642066, "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Form Responses 1"}, "documentId": {"__rl": true, "mode": "url", "value": "{{ $env.WEBHOOK_URL }}"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "RtRiRezoxiWkzZQt", "name": "Google Sheets account 3"}}, "typeVersion": 4, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "6044469f-9000-4e47-a2d9-920371677a82", "name": "SQL Get inquiries from Google", "type": "n8n-nodes-base.mySql", "position": [940, 500], "parameters": {"table": {"__rl": true, "mode": "list", "value": "ConcertInquiries", "cachedResultName": "ConcertInquiries"}, "where": {"values": [{"value": "GoogleForm", "column": "source_name"}]}, "options": {}, "operation": "select", "returnAll": true}, "credentials": {"mySql": {"id": "ICakJ1LRuVl4dRTs", "name": "db4free TTT account"}}, "typeVersion": 2.2, "notes": "This mySql node performs automated tasks as part of the workflow."}, {"id": "f65aad46-93ce-44e6-b7b9-8c177516cf18", "name": "Add MySQL records", "type": "n8n-nodes-base.mySql", "position": [1620, 80], "parameters": {"table": {"__rl": true, "mode": "list", "value": "ConcertInquiries", "cachedResultName": "ConcertInquiries"}, "options": {}, "operation": "upsert", "columnToMatchOn": "timestamp"}, "credentials": {"mySql": {"id": "ICakJ1LRuVl4dRTs", "name": "db4free TTT account"}}, "typeVersion": 2.2, "notes": "This mySql node performs automated tasks as part of the workflow."}, {"id": "6b3d9971-f37c-4721-8134-f60bdf1a03da", "name": "Rename GSheet variables", "type": "n8n-nodes-base.set", "position": [1160, 200], "parameters": {"values": {"string": [{"name": "timestamp", "value": "={{ $json.Timestamp }}"}, {"name": "occasion", "value": "={{ $json[\"What event are you organizing? \"] }}"}, {"name": "email_address", "value": "={{ $json[\"Email Address\"] }}"}, {"name": "event_date", "value": "={{ DateTime.fromFormat($json[\"When does the event take place? \"], 'M/d/yyyy').toFormat('yyyy-MM-dd') }}"}, {"name": "location", "value": "={{ $json[\"Where does the event take place? \"] }}"}, {"name": "event_description", "value": "={{ $json[\"Please tell us more about the event. \"] }}"}, {"name": "source_name", "value": "GoogleForm"}, {"name": "db_status", "value": "={{ $json[\"DB Status\"] }}"}, {"name": "name", "value": "={{ $json[\"Your name \"] }}"}]}, "options": {}, "keepOnlySet": true}, "typeVersion": 2, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "04f067be-8d7d-48bd-9a3d-d881d6dd3464", "name": "No reply too long?", "type": "n8n-nodes-base.if", "position": [1620, 280], "parameters": {"conditions": {"dateTime": [{"value1": "={{ DateTime.fromFormat($json.timestamp, 'MM/d/yyyy HH:mm:ss'); }}", "value2": "={{ DateTime.now().minus({ hours: 4 }) }}", "operation": "before"}]}}, "typeVersion": 1, "notes": "This if node performs automated tasks as part of the workflow."}, {"id": "2f287a7b-eda2-4d05-9864-ba66bddaf14d", "name": "DB Status assigned?", "type": "n8n-nodes-base.if", "position": [1620, 480], "parameters": {"conditions": {"string": [{"value1": "={{ $json.different.db_status.inputB }}", "operation": "isNotEmpty"}]}}, "typeVersion": 1, "notes": "This if node performs automated tasks as part of the workflow."}, {"id": "cb10201c-5fcc-41f2-94ac-a52cdbe96e58", "name": "Update GSheet status", "type": "n8n-nodes-base.googleSheets", "position": [1840, 460], "parameters": {"columns": {"value": {"DB Status": "={{ $json.different.db_status.inputB }}", "Timestamp": "={{ $json.keys.timestamp }}"}, "schema": [{"id": "Timestamp", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Timestamp", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Email Address", "type": "string", "display": true, "removed": true, "required": false, "displayName": "Email Address", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Your name ", "type": "string", "display": true, "removed": true, "required": false, "displayName": "Your name ", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "What event are you organizing? ", "type": "string", "display": true, "removed": true, "required": false, "displayName": "What event are you organizing? ", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "When does the event take place? ", "type": "string", "display": true, "removed": true, "required": false, "displayName": "When does the event take place? ", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Where does the event take place? ", "type": "string", "display": true, "removed": true, "required": false, "displayName": "Where does the event take place? ", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Please tell us more about the event. ", "type": "string", "display": true, "removed": true, "required": false, "displayName": "Please tell us more about the event. ", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "DB Status", "type": "string", "display": true, "required": false, "displayName": "DB Status", "defaultMatch": false, "canBeUsedToMatch": true}], "mappingMode": "defineBelow", "matchingColumns": ["Timestamp"]}, "options": {}, "operation": "update", "sheetName": {"__rl": true, "mode": "list", "value": 263642066, "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Form Responses 1"}, "documentId": {"__rl": true, "mode": "url", "value": "{{ $env.WEBHOOK_URL }}"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "RtRiRezoxiWkzZQt", "name": "Google Sheets account 3"}}, "typeVersion": 4, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "178fe745-b026-4c7f-9104-6756ba2d7d7d", "name": "DB Status in sync?", "type": "n8n-nodes-base.if", "position": [1620, 680], "parameters": {"conditions": {"string": [{"value1": "={{ $json.source_name }}", "operation": "isNotEmpty"}]}}, "typeVersion": 1, "notes": "This if node performs automated tasks as part of the workflow."}, {"id": "6b92bfaf-65f1-441d-a0fc-51e448380520", "name": "Sync MySQL data", "type": "n8n-nodes-base.mySql", "position": [1840, 660], "parameters": {"table": {"__rl": true, "mode": "list", "value": "ConcertInquiries", "cachedResultName": "ConcertInquiries"}, "options": {}, "dataMode": "defineBelow", "operation": "update", "valuesToSend": {"values": [{"value": "={{ $json.source_name }}Sync", "column": "source_name"}]}, "valueToMatchOn": "={{ $json.id }}", "columnToMatchOn": "id"}, "credentials": {"mySql": {"id": "ICakJ1LRuVl4dRTs", "name": "db4free TTT account"}}, "typeVersion": 2.2, "notes": "This mySql node performs automated tasks as part of the workflow."}, {"id": "3c95f764-e91c-4418-98c9-c18939486b01", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [903, -115.08597285067867], "parameters": {"width": 376.8778280542988, "height": 474.81900452488685, "content": "## Create a new Google Form with several variables:\n\n-Email Address\n-Your name \n-What event are you organizing? \n-When does the event take place? \n-Where does the event take place? \n-Please tell us more about the event. \n\n- Timestamp variable is added automatically\n- Add \"DB Status\" manually in the Google Sheet\n"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "0a5aa6c9-5312-4716-bd63-71534cdccbf1", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [900, 394], "parameters": {"width": 375.6334841628956, "height": 273.23529411764684, "content": "### Import this SQL file to create a new table\n{{ $env.WEBHOOK_URL }}"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "error-35b2a547", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [1000, 400], "parameters": {"message": "Workflow execution error", "options": {}}}], "active": true, "pinData": {}, "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "69bdc2a6-346a-4c2e-82fd-9b7fd54b6f36", "connections": {"dcf6838f-0d58-4438-875b-94caac45cb65": {"main": [[{"node": "error-handler-dcf6838f-0d58-4438-875b-94caac45cb65-67e32cb5", "type": "main", "index": 0}]]}, "cb10201c-5fcc-41f2-94ac-a52cdbe96e58": {"main": [[{"node": "error-handler-cb10201c-5fcc-41f2-94ac-a52cdbe96e58-e78e0a7f", "type": "main", "index": 0}]]}}, "description": "Automated workflow: GoogleSheets MySQL Integration. This workflow integrates 10 different services: stickyNote, mySql, scheduleTrigger, noOp, set. It contains 17 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: GoogleSheets MySQL Integration. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}