Invoice chaser scenario — Sheets + Gmail, stops automatically when the client replies

Sharing a scenario I built for chasing unpaid invoices. Free to import,
no catch.

What it does

You keep a sheet of outstanding invoices. Once a day it checks which
ones are due a chase, searches Gmail to see whether that client has
replied about that invoice, and only emails them if they haven’t. The
wording escalates — light reminder, then firmer with the due date, then
a final notice. Three emails maximum, five days apart, and it stops
immediately the moment they reply.

How it’s built

Sheets Search Rows → filter (due) → Gmail Search emails → filter
(no reply found) → Gmail Send → Sheets Update a Row

A few decisions worth explaining:

Reply detection matches on the invoice number, not just the sender.
from:{email} subject:"{invoice}" after:{last sent} -in:sent — scoping
to the invoice means an unrelated email from the same client doesn’t
stop the chase.

Dates are stored as plain text in YYYY/MM/DD. Gmail’s after:
operator wants slashes, and plain text stops Sheets reformatting them
into something Make can’t compare.

A stage counter caps it at three sends. The row flips to “done” and
drops out of the search filter, so a misconfigured install can’t chase
someone indefinitely.

If you’re publishing scenarios yourself, three things worth knowing

These only matter once someone else imports your work, and all three
fail silently:

  • “Use column headers as IDs of the columns” in Update a Row —
    leave it off and values write to columns A and B rather than the named
    ones, which on most sheets is somebody’s name and email.
  • Positional column slots don’t survive an import, they collapse to
    column A in the recipient’s copy. Header-name mapping is effectively
    mandatory for anything shared.
  • The spreadsheet ID is baked into every module referencing it — two
    here. The importer has to re-point both, and fixing one doesn’t fix the
    other.

Worth importing into a clean account before publishing anything. It’s
caught things for me that looked completely fine in my own.


Setup guide:

If you import it, I’d like to hear what broke — especially anything on
import I haven’t run into.