Gmail to Google Sheets: an inbox log with one row per email

To save Gmail emails to Google Sheets, nana800 connects two blocks: gmail incoming email checks your Inbox once a minute, and google sheet record appends a row at the bottom of the sheet for every new email. The sender, subject, date and start of the text go into the columns named in the first row of the sheet. No code is needed, and your balance is topped up to $3.50 for free every month.

Build it in the builder

What you can automate

  • Keep a log of every incoming email: date, sender, subject and the start of the text, one row per email
  • Save only invoices and requests: put from:@supplier.com or subject:(invoice) into the trigger search, and other emails do not start the scheme
  • Track who answered a client: the block fills its own columns, and managers keep a Status column by hand
  • Count how many emails each client sends per week or month with a pivot table on the sender column
  • Sort out conversations: emails of one Gmail thread share the same thread_id, so their rows are easy to filter
  • Keep a separate tab for emails with attachments: has:attachment in the trigger search and the number of that tab in the sheet block

How to set it up

  1. 1

    Prepare the sheet for emails

    Put column names in the first row of the sheet, for example Date, From, Subject, Preview. Add a column for your own notes, such as Status: the block leaves it empty. If a column is missing, the block adds it on the right, and on an empty sheet it writes the names itself.

  2. 2

    Add the Gmail trigger and choose which emails to save

    Create a scheme and add the gmail incoming email trigger. Enter the Gmail address and pick how to sign in: APP_PASSWORD_IMAP with a password from App passwords in your Google account, or OAUTH_CLIENT with a client ID, client secret and refresh token. In search query, set which emails go to the sheet, an empty field means all of them.

  3. 3

    Give the sheet block its own Google access

    Add the google sheet record block. It does not use the mail access, the sheet needs its own. OAUTH: press the connect button and sign in with a Google account that can open the sheet. SERVICE_ACCOUNT: enable the Google Sheets API in Google Cloud, paste the email and private key of a service account and share the sheet with that email as an editor.

  4. 4

    Map email fields to columns

    Paste the full sheet address into the spreadsheet ID field, set the sheet number to 0 for the first tab or 1 for the second, and choose append_row. In the row data, put a column name on the left and a trigger field on the right: Date - date, From - from, Subject - subject, Preview - snippet. With a message_id column, find_rows can find the row of an email later.

  5. 5

    Turn the scheme on and send a test email

    Turn the scheme on. The first check only remembers the emails already in the Inbox, and they do not reach the sheet. Send yourself an email: a row appears at the bottom of the sheet after the next mail check. If not, open the result of the sheet block, the Google answer is in error_message. An enabled scheme costs $0.0042 per hour.

Pricing

A run of a Gmail block costs $0.002, a run of a Google Sheets block costs $0.001. Every month the balance is topped up to $3.50 for free, an enabled scheme costs $0.0042 per hour.

Services in this connection

  • Gmail

    Start a scheme on every new Gmail email: send an alert to Telegram, save it to a spreadsheet or let an AI read it. No code, free balance every month.

  • Google Sheets

    Send leads and orders to Google Sheets without code: append rows, find, read and update them by row number. Free balance every month, no card needed.

Similar integrations

  • Gmail + amoCRM

    An email with a lead in Gmail becomes an amoCRM deal by itself: ChatGPT pulls the client name, phone and email out of the text. No code, free balance every month.

  • Gmail + Discord

    New Gmail emails arrive as messages from your bot in a Discord channel, with the sender, subject and start of the text. Gmail search filter, no code, free balance.

  • Gmail + Notion

    Every new Gmail email becomes a row in a Notion database: subject as the title, sender and date in columns, the text on the row page. No code, free balance monthly.

  • Gmail + OpenAI (ChatGPT)

    ChatGPT reads every new Gmail email: writes a summary, sets a category or drafts a reply and sends the result to Telegram or a sheet. No code, free balance monthly.

  • Gmail + Slack

    Every new Gmail email arrives as a message in a Slack channel, with the sender, subject and start of the text. Gmail search filter, no code, free balance monthly.

  • Gmail + Telegram

    Get new Gmail emails as Telegram messages: sender, subject and text in your private chat or a team group. Free balance every month, no card needed.

Frequently asked questions

Every email takes three basic block runs: the Gmail trigger counts as two and the row write as one. 1,000 runs cost $1. Emails that do not match the trigger search do not start the scheme and cost nothing, and a row that Google rejected is not charged. An enabled scheme costs $0.0042 per hour, so a scheme kept on around the clock spends most of the free $3.50 a month on scheme hours.

No, the sheet collects only emails that arrive after the scheme is turned on. The first check remembers what is already in the Inbox, and emails older than three days are skipped. Each new email starts the scheme once, even after a server restart, so one email gives one row. If more than 300 emails arrive in a minute, the rest are saved on the next checks.

The full text is in the body_text field, but one Google Sheets cell holds at most 50,000 characters. If the text is longer, Google rejects the row and the block fails. For a log, snippet works better: a short start of the email in one line. Emails that only have an HTML version, such as newsletters, can have an empty body_text, while snippet is filled.

The send date comes in ISO format in UTC time, for example 2026-11-07T09:15:00.000Z, so add your own time zone offset when you read it. The sender is written with the name, usually as Anna <anna@example.com>. The block enters values as if you typed them, so a subject that starts with = becomes a formula.

The trigger and the sheet block sign in to Google separately. The trigger reads mail with an app password or through your own OAuth client, and the sheet block uses the sign-in button (OAUTH) or a service account (SERVICE_ACCOUNT). So the mailbox and the sheet can belong to different Google accounts, for example emails of a personal mailbox can go to a shared team sheet.

Check that the scheme is on and the email is in the Inbox: emails that Gmail filters move straight to the archive do not start the scheme. If the run is in the log, open the result of the sheet block: error_message holds the Google answer. Common causes are a sheet not shared with the service account as an editor or the Google Sheets API not enabled. An email whose row failed does not start the scheme again.

Build your first scheme for free

Sign-up is free and needs no card. Every month the balance is topped up to $3.50 for free, enough for about 3,500 runs of basic blocks.

Build it in the builder