Follow-up engine — one scenario, any number of follow-up types, all configured from the sheet

Sharing a scenario and the pattern behind it, which might be more useful
than the scenario itself.

The problem with sharing scenarios

I’d built three separate follow-up automations — chasing unpaid
invoices, chasing clients who’d gone quiet, requesting reviews. Same
skeleton every time: scan a sheet, check for a reply, send, write back.
Only the copy and the timing changed.

Three problems with shipping it that way. Make’s free tier allows two
active scenarios, so anyone importing has to choose between them.
Changing the wording means editing a nested if() inside a module, which
someone non-technical will never do. And every new follow-up type means
another scenario.

The fix: move everything configurable out of the scenario and into the
sheet

One scenario now, two tabs.

Tab 1 is the follow-up list, with three columns doing the work:

  • Type — Invoice, Review, Chase, or anything the user invents
  • Interval — days between sends
  • Max — how many sends before it stops

Tab 2 is the email copy — one row per Type + Stage combination, holding
the subject and body, with {name} and {ref} as placeholders.

Module flow

Sheets Search Rows (list tab, Status = Waiting)
→ filter: Next Action ≤ now
→ Gmail Search emails: from:{email} subject:“{ref}” after:{last sent} -in:sent
→ filter: 0 bundles (nobody replied)
→ Sheets Search Rows (templates tab, Type AND Stage both match)
→ Gmail Send, substituting the placeholders
→ Sheets Update a Row

Two bits worth calling out:

The template lookup is a second Search Rows with a two-condition
filter
— Type equals the Type from step 1, Stage equals the Stage from
step 1. That single module is what removes all the branching. No router,
no if() chains, and adding a fourth or fifth follow-up type needs no
scenario changes at all.

Placeholder substitution is nested replace() on the body from the
template row:
replace(replace(Body; “{name}”; Name); “{ref}”; Reference)

The stop condition is data too — Status becomes “done” when
Stage + 1 >= Max, so the cap is per-row rather than hardcoded. A user can
set two sends for review requests and three for invoices without touching
anything.

What this changes for the person importing it

They edit their email copy in a spreadsheet, not in a Make module. In my
experience that’s the difference between someone customising an imported
scenario and someone leaving it exactly as they found it.


Free to import, no catch:

Setup guide:

Worth noting it has three Sheets modules to connect rather than two,
since two tabs are in play — the middle one points at the templates tab.

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

2 Likes