AutomationFlowsData & Sheets › Gmail Sheets

Gmail Sheets

Gmail-Sheets. Uses executeWorkflowTrigger, postgres, googleSheets. Event-driven trigger; 12 nodes.

Event trigger★★★★☆ complexity12 nodesExecute Workflow TriggerPostgresGoogle Sheets
Data & Sheets Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:

This workflow follows the Execute Workflow Trigger → Google Sheets 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
{
  "name": "Gmail-Sheets",
  "nodes": [
    {
      "parameters": {},
      "id": "sheets-trigger",
      "name": "Workflow Input",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "SELECT id FROM sheet_exports WHERE message_id = $1 AND tab_name = $2 LIMIT 1",
        "options": {
          "queryParameters": "={{ $json.message_id }},={{ $json.sheet_tab || 'Inbox_Log' }}"
        }
      },
      "id": "check-export",
      "name": "Check Export State",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.5,
      "position": [
        460,
        300
      ],
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose"
          },
          "conditions": [
            {
              "id": "export-check",
              "leftValue": "={{ $json.id }}",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "exists"
              }
            }
          ],
          "combinator": "and"
        }
      },
      "id": "already-exported",
      "name": "Already Exported?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        680,
        300
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "skip-1",
              "name": "skipped",
              "value": true,
              "type": "boolean"
            },
            {
              "id": "skip-2",
              "name": "reason",
              "value": "already_exported",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "skip-export",
      "name": "Skip Export",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        900,
        200
      ]
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": false
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "tab-1",
                    "leftValue": "={{ $('Workflow Input').item.json.sheet_tab }}",
                    "rightValue": "inbox_log",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": true,
              "outputKey": "Inbox_Log"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": false
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "tab-2",
                    "leftValue": "={{ $('Workflow Input').item.json.sheet_tab }}",
                    "rightValue": "important_emails",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": true,
              "outputKey": "Important_Emails"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": false
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "tab-3",
                    "leftValue": "={{ $('Workflow Input').item.json.sheet_tab }}",
                    "rightValue": "action_items",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": true,
              "outputKey": "Action_Items"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": false
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "tab-4",
                    "leftValue": "={{ $('Workflow Input').item.json.sheet_tab }}",
                    "rightValue": "followups",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": true,
              "outputKey": "Followups"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": false
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "tab-5",
                    "leftValue": "={{ $('Workflow Input').item.json.sheet_tab }}",
                    "rightValue": "meeting_emails",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": true,
              "outputKey": "Meeting_Emails"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": false
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "tab-6",
                    "leftValue": "={{ $('Workflow Input').item.json.sheet_tab }}",
                    "rightValue": "finance_admin",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": true,
              "outputKey": "Finance_Admin"
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "id": "tab-router",
      "name": "Tab Router",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3,
      "position": [
        900,
        400
      ]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{ $env.GMAIL_ADMIN_SPREADSHEET_ID }}",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Inbox_Log",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $('Workflow Input').item.json.date_received || $now.toISO() }}",
            "Sender": "={{ $('Workflow Input').item.json.sender }}",
            "Subject": "={{ $('Workflow Input').item.json.subject }}",
            "Category": "={{ $('Workflow Input').item.json.category || '' }}",
            "Priority": "={{ $('Workflow Input').item.json.priority_score || '' }}",
            "Action Taken": "={{ $('Workflow Input').item.json.action || '' }}",
            "Unread": "={{ $('Workflow Input').item.json.is_unread }}",
            "Thread ID": "={{ $('Workflow Input').item.json.thread_id }}"
          }
        },
        "options": {}
      },
      "id": "append-inbox-log",
      "name": "Append Inbox_Log",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1140,
        140
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{ $env.GMAIL_ADMIN_SPREADSHEET_ID }}",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Important_Emails",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $('Workflow Input').item.json.date_received || $now.toISO() }}",
            "Sender": "={{ $('Workflow Input').item.json.sender }}",
            "Subject": "={{ $('Workflow Input').item.json.subject }}",
            "Priority Score": "={{ $('Workflow Input').item.json.priority_score }}",
            "AI Summary": "={{ $('Workflow Input').item.json.ai_summary || '' }}",
            "Action Items": "={{ ($('Workflow Input').item.json.action_items || []).join('; ') }}",
            "Status": "Pending"
          }
        },
        "options": {}
      },
      "id": "append-important",
      "name": "Append Important_Emails",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1140,
        260
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{ $env.GMAIL_ADMIN_SPREADSHEET_ID }}",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Action_Items",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Created": "={{ $now.toISO() }}",
            "Source Email Subject": "={{ $('Workflow Input').item.json.subject }}",
            "Description": "={{ $('Workflow Input').item.json.description || ($('Workflow Input').item.json.action_items || [])[0] || '' }}",
            "Deadline": "={{ ($('Workflow Input').item.json.deadlines || [])[0] || '' }}",
            "Status": "open",
            "Priority": "={{ $('Workflow Input').item.json.priority_score || 5 }}"
          }
        },
        "options": {}
      },
      "id": "append-actions",
      "name": "Append Action_Items",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1140,
        380
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{ $env.GMAIL_ADMIN_SPREADSHEET_ID }}",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Followups",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $('Workflow Input').item.json.date_received || $now.toISO() }}",
            "Sender": "={{ $('Workflow Input').item.json.sender }}",
            "Subject": "={{ $('Workflow Input').item.json.subject }}",
            "Followup Reason": "={{ $('Workflow Input').item.json.ai_summary || '' }}",
            "Days Waiting": "0",
            "Status": "open"
          }
        },
        "options": {}
      },
      "id": "append-followups",
      "name": "Append Followups",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1140,
        500
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{ $env.GMAIL_ADMIN_SPREADSHEET_ID }}",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Meeting_Emails",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $('Workflow Input').item.json.date_received || $now.toISO() }}",
            "Sender": "={{ $('Workflow Input').item.json.sender }}",
            "Subject": "={{ $('Workflow Input').item.json.subject }}",
            "Related Calendar Event": "={{ $('Workflow Input').item.json.calendar_event || '' }}",
            "Event Date": "={{ $('Workflow Input').item.json.event_date || '' }}",
            "Action": "={{ $('Workflow Input').item.json.action || 'link_to_calendar' }}"
          }
        },
        "options": {}
      },
      "id": "append-meetings",
      "name": "Append Meeting_Emails",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1140,
        620
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{ $env.GMAIL_ADMIN_SPREADSHEET_ID }}",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Finance_Admin",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $('Workflow Input').item.json.date_received || $now.toISO() }}",
            "Sender": "={{ $('Workflow Input').item.json.sender }}",
            "Subject": "={{ $('Workflow Input').item.json.subject }}",
            "Amount Detected": "={{ $('Workflow Input').item.json.amount || '' }}",
            "Deadline": "={{ ($('Workflow Input').item.json.deadlines || [])[0] || '' }}",
            "Status": "pending"
          }
        },
        "options": {}
      },
      "id": "append-finance",
      "name": "Append Finance_Admin",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1140,
        740
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "INSERT INTO sheet_exports (message_id, tab_name, exported_at) VALUES ($1, $2, NOW()) ON CONFLICT (message_id, tab_name) DO NOTHING",
        "options": {
          "queryParameters": "={{ $('Workflow Input').item.json.message_id }},={{ $('Workflow Input').item.json.sheet_tab || 'Inbox_Log' }}"
        }
      },
      "id": "log-export",
      "name": "Log Export",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.5,
      "position": [
        1380,
        400
      ],
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "onError": "continueRegularOutput"
    }
  ],
  "connections": {
    "Workflow Input": {
      "main": [
        [
          {
            "node": "Check Export State",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Export State": {
      "main": [
        [
          {
            "node": "Already Exported?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Already Exported?": {
      "main": [
        [
          {
            "node": "Skip Export",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Tab Router",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tab Router": {
      "main": [
        [
          {
            "node": "Append Inbox_Log",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Append Important_Emails",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Append Action_Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Append Followups",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Append Meeting_Emails",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Append Finance_Admin",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Inbox_Log": {
      "main": [
        [
          {
            "node": "Log Export",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Important_Emails": {
      "main": [
        [
          {
            "node": "Log Export",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Action_Items": {
      "main": [
        [
          {
            "node": "Log Export",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Followups": {
      "main": [
        [
          {
            "node": "Log Export",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Meeting_Emails": {
      "main": [
        [
          {
            "node": "Log Export",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Finance_Admin": {
      "main": [
        [
          {
            "node": "Log Export",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "saveExecutionProgress": true
  },
  "meta": {
    "templateCredsSetupCompleted": false,
    "description": "Gmail Sheets Export sub-workflow: appends structured email data to Google Sheets tabs (Inbox_Log, Important_Emails, Action_Items, Followups, Meeting_Emails, Finance_Admin) with deduplication via sheet_exports table."
  },
  "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Gmail-Sheets. Uses executeWorkflowTrigger, postgres, googleSheets. Event-driven trigger; 12 nodes.

Source: https://github.com/gelson12/super-agent/blob/684d47b47f94105c55f41673918abfa3dff01e37/n8n/gmail_sheets.json — 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

Reagendamiento_v2. Uses executeWorkflowTrigger, redis, httpRequest, n8n-nodes-evolution-api. Event-driven trigger; 89 nodes.

Execute Workflow Trigger, Redis, HTTP Request +3
Data & Sheets

This workflow acts as a junior finance research analyst for a UK boutique M&A or corporate finance team. It listens for Slack messages, classifies the request, gathers company or market data, and prod

HTTP Request, Google Drive, Google Docs +5
Data & Sheets

Agendamiento_v2. Uses n8n-nodes-evolution-api, redis, httpRequest, executeWorkflowTrigger. Event-driven trigger; 59 nodes.

N8N Nodes Evolution Api, Redis, HTTP Request +3
Data & Sheets

Cancelacion_v2. Uses executeWorkflowTrigger, redis, httpRequest, n8n-nodes-evolution-api. Event-driven trigger; 46 nodes.

Execute Workflow Trigger, Redis, HTTP Request +3
Data & Sheets

AI Money Tracker Chatbot. Uses telegramTrigger, postgres, googleSheets, telegram. Event-driven trigger; 24 nodes.

Telegram Trigger, Postgres, Google Sheets +2