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
A folder and a spreadsheet are created in your own Google Drive, owned by you.
The first connection scans the last 60 days of mail. After that, a nightly scan picks up new receipts.
Merchant, date, amount, and tax are extracted from the email body or its PDF attachment.
The extracted details are appended as a new row in the Google Sheet in your Drive.
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 cleanly | Needs a hand |
|---|---|
| Emailed receipts & confirmations with details in the body | Receipts behind a login link (the invoice lives in a portal) |
| PDF invoice attachments | Portal-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 Script | Zapier | ExpenseBot | |
|---|---|---|---|
| Setup effort | High (code) | Medium | Low (connect Google) |
| Handles new vendor formats | Per-rule | Per-rule | Reads varied formats |
| Reads PDF attachments | Needs OCR | Limited | Yes |
| Breaks silently | Yes | Yes | Flags 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
- Google Sheets Expense Tracker — the pillar: expenses in a Sheet you own, not a locked-in app
- Gmail Receipt Scanner — the scan that finds receipts in your inbox
- Automate Expense Tracking in Google Sheets — the DIY route, walked step by step
Your Gmail receipts, as spreadsheet rows
60-day free trial. No credit card required. The Sheet is created in your own Google Drive.