A shared folder is the easiest habit to teach a team: everyone drops receipts in, the automation does the rest. This recipe watches that folder and routes each file's real outcome.
The workflow shape
- Trigger — your platform's "new file in folder" trigger, pointed at one Drive folder. Use a dedicated folder, not the whole Drive.
- Filter by type — receipt images and PDFs only. Skip anything else early so a stray spreadsheet does not enter the pipeline.
- Download the file — pass the actual file object or a downloadable URL. A Drive preview link is a web page, not a file, and will not process. Preserve the filename with its extension and the true MIME type.
- Upload Receipt — the signed receipt pipeline accepts the raw file and returns a submission ID.
- Delay, then Get Receipt Processing Result with that exact submission
ID. The outcome is terminal:
added,duplicate,skipped,errored, orunknown. - Route — success and Action Needed go different ways. Optionally move the
file into a
processedsubfolder on success so the folder stays a to-do list.
Handling duplicates without special-casing
duplicate is a normal, useful outcome, not an error. If someone drops the same
receipt twice, or a supplier both emails and hands over a copy, ExpenseBot's
duplicate detection catches it and the result tells you so. Writes are retry-safe
— replaying the same action creates exactly one spreadsheet row, verified in live
QA — so a re-run after a platform timeout is safe too.
The division of labour
ExpenseBot supplies structured expense data and Gmail receipt capture to Make workflows — extraction, duplicate detection, review, and the spreadsheet record. Make handles external triggers, routing, reminders, and notifications.
The boundary
Your expense records live in a Google Sheet in your own Drive. The automation platform's Drive connection is separate from ExpenseBot's — grant each the narrowest access that works. Submitting a receipt can add a row after processing; there is no universal runtime confirmation prompt for this action. Test one controlled file, map Drive's stable file ID into the Source Event ID when the action exposes it, and route every unclear result to Review Expenses before enabling a schedule.
Where to build it
- Choose the right connection for your AI
- Connect ExpenseBot to Zapier's MCP Client — beta, usable today
- Does ExpenseBot work with Make.com? — native app and receipt workflow
- The email-side variant: Gmail attachment capture
