How to get Gmail receipts into Google Sheets automatically

Last updated: July 2026

Connect your Google account to ExpenseBot. It scans Gmail for receipt emails, reads the merchant, date, amount, and tax off each one, and writes them as rows in a Google Sheet created in your own Google Drive. Each processed email is labelled so it isn't handled twice. The first scan covers the last 60 days; a nightly scan keeps it current after that. ExpenseBot never sends or deletes your email.

The rest of this page is the plumbing — what's automatic, what needs a click, exactly what permissions are requested, which receipts get caught cleanly, and how this compares to building it yourself.

What actually happens, step by step

1
Connect your Google account. needs a click
A folder and a spreadsheet are created in your own Google Drive, owned by you.
2
Gmail is scanned for receipt emails. automatic
The first connection scans the last 60 days of mail. After that, a nightly scan picks up new receipts.
3
Each receipt is read. automatic
Merchant, date, amount, and tax are extracted from the email body or its PDF attachment.
4
A row is written to your Sheet. automatic
The extracted details are appended as a new row in the Google Sheet in your Drive.
5
The email is labelled. automatic
ExpenseBot applies its own Gmail labels so the same email isn't processed twice.

You can also trigger a manual scan any time from inside ExpenseBot (the "Scan Gmail for receipts" action) — useful for a fresh pull or a wider look-back — but you don't have to. The nightly scan runs on its own.

What lands in the Sheet

The spreadsheet is a normal Google Sheet you own — sortable, filterable, exportable, editable by hand, and shareable with an accountant. Each receipt becomes a row with columns including:

  • Receipt date, merchant, and account
  • Subtotal, tax (broken out into city / state / federal), tip, and total
  • Currency and city
  • A link to the receipt image or PDF in your Drive
  • Tag and Notes (yours to edit)

It's the pillar of the Google Sheets expense tracker — a real spreadsheet, not a locked-in app database. For the DIY setup route, see the Google Sheets expense tracker setup guide.

Which receipts get caught — and which need a hand

Being honest about the edges is the whole point — anyone claiming 100% coverage is overselling it.

Caught cleanlyNeeds a hand
Emailed receipts & confirmations with details in the bodyReceipts behind a login link (the invoice lives in a portal)
PDF invoice attachmentsPortal-style emails that are only a "your invoice is ready" notification
Common vendors (Amazon, SaaS, rideshare, restaurants)Unusual or one-off formats

When a receipt can't be completed automatically, it isn't silently dropped — it's flagged for manual review so you can finish it. And paper receipts aren't a Gmail problem at all: those go through the photo upload path, which is separate from the Gmail scan.

What it can and can't touch in your account

This is the section a skeptical reader screenshots, so here it is exactly:

What it does

  • Reads your receipt emails
  • Applies its own Gmail labels to track what's processed
  • Writes to the Google Sheet it created

What it doesn't

  • Send email as you
  • Permanently delete email
  • Touch unrelated files in your Drive

Drive access is drive.file — scoped to files ExpenseBot creates or that you explicitly pick, not your whole Drive. On Gmail, it requests read access plus permission to apply labels. One honest caveat: because the label permission technically uses Google's gmail.modify scope, Google's consent screen lists broad-sounding wording — but ExpenseBot only ever reads and labels. It does not send or delete your mail, as stated above.

Doing it yourself with Apps Script or Zapier

You can absolutely build a version of this yourself, and for a narrow, stable case it works well: a handful of known senders with a consistent format, matched by a rule and parsed into a row. If that's your situation, a Google Apps Script bound to your Sheet, or a Zapier "Gmail → Google Sheets" zap, is a legitimate choice.

Where a DIY build gets expensive:

  • Every new vendor format needs a new rule.
  • PDF attachments need OCR — plain text parsing won't read them.
  • Amounts, currencies, and date formats vary by locale.
  • Nothing tells you when a rule silently stops matching — you find out at tax time.
Apps ScriptZapierExpenseBot
Setup effortHigh (code)MediumLow (connect Google)
Handles new vendor formatsPer-rulePer-ruleReads varied formats
Reads PDF attachmentsNeeds OCRLimitedYes
Breaks silentlyYesYesFlags for manual review

If you'd rather build it, the automate expense tracking in Google Sheets guide walks the DIY route.

Connect Google, run the first scan, check the Sheet

The first scan reads the last 60 days of receipt emails into a Google Sheet in your own Drive. It takes a little time on the first run because it's processing historical mail.

Common questions

How do I automatically save Gmail receipts to a Google Sheet?

Connect your Google account to a tool that scans Gmail for receipt emails, extracts the merchant, date, and amount from each one, and writes a row to a spreadsheet in your Drive. ExpenseBot does this — the Sheet is created in your own Google Drive and stays owned by you.

Can Google Sheets pull receipts from Gmail by itself?

Not on its own. Sheets has no built-in Gmail receipt import. You either write Apps Script to search Gmail and parse messages yourself, or use a service that handles the finding, reading, and writing for you.

Do I have to forward every receipt manually?

No — the Gmail scan finds receipt emails already in your inbox. Forwarding to receipts@expensebot.ai is a separate route for receipts that arrive somewhere else.

Does it read all my email?

It looks for receipt emails and processes those. ExpenseBot requests Gmail read access plus permission to apply its own labels; it does not send email or permanently delete email on your behalf.

Who owns the Google Sheet?

You do. The spreadsheet and its folder are created in your own Google Drive under your account, and stay owned by you.

What about receipts that are just a link to a portal?

Those can't always be read automatically, because the actual invoice lives behind a login. They're flagged for manual review rather than silently dropped.

Can I just build this with Apps Script?

Yes, for a narrow case — a few known senders with a stable format. It gets expensive when vendor formats change, PDFs need OCR, or a rule silently stops matching.

Related Tools and Guides

Your Gmail receipts, as spreadsheet rows

60-day free trial. No credit card required. The Sheet is created in your own Google Drive.

✓ CASA Tier 2 Certified✓ Google SSO✓ Data in YOUR Drive✓ drive.file scope
60-day free trial · No credit card

Also from ExpenseBot:

Google Sheets Expense Tracker·Gmail Receipt Scanner