Capture automations fail quietly unless you build the unhappy path. This recipe is that path: anything that is not a clean capture goes to a human, with enough context to act on.
What counts as Action Needed
The result step returns a terminal state for the exact submission ID you uploaded. Route these to a person:
skipped— the file was not treated as a receipt. Usually a screenshot, a statement page, or an unrelated document that slipped past your filter.errored— processing failed outright.unknown— the outcome could not be determined. Treat it likeerrored; do not assume it worked.- a failed per-file outcome — a batch where one file did not make it. The batch as a whole is not a pass.
added and duplicate are the other branch —
success notification.
The workflow shape
- Filter or path on the outcome not being
addedorduplicate. - Notify the finance channel, not the individual submitter — the person who dropped an unreadable photo usually cannot tell why it was unreadable, and the person who reconciles the books can.
- Include the context that makes it fixable: the outcome, the filename, who submitted it, when, and a link to Review expenses.
- Optionally park the file — move it to a
needs-attentionfolder or leave it in the intake channel so it stays visible until handled.
Do not auto-retry blindly
A skipped result will keep being skipped, so a retry loop just spams the
channel. Retry is for transport failures — a platform timeout, a download that
did not complete — and there it is safe, because writes are retry-safe: replaying
the same action creates exactly one spreadsheet row, verified in live QA. Retry
the request, not the verdict.
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
This routes a problem to a person; it does not fix one. ExpenseBot previews changes and asks before anything is saved, so the correction still happens under review rather than by unattended write.
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 submitted and in review
