Automation: A Weekday Digest of Client Decisions That Are Due or Overdue
For Interior Designers ·
What This Builds
A selection that waits on a client rarely fails loudly. The options go out, the client gets busy, and the vendor's order window closes before anyone says yes. This build puts a short email in your own inbox each weekday morning naming the decisions that are past their decide-by date, the ones due within the warning window you chose and the ones that have no date at all.
You write to the client yourself. The Zap never emails a client, a vendor or a contractor. It only tells you which of your own reminders to write today.
Prerequisites
- A Google account with Sheets and Gmail. A free personal account works. On a Google Workspace account, check with whoever manages it that connecting Zapier is allowed.
- A Zapier account on a plan that allows multi-step Zaps. This build has a trigger and two actions, and Zapier's pricing page lists the free plan as two-step only. The entry-level paid plan in our registry is Professional ($29.99/month), so confirm on Zapier's pricing page that your plan lists multi-step Zaps.
- Total ongoing cost: the Zapier plan above and nothing else. Sheets and Gmail on a personal Google account cost nothing extra, and there is no AI step.
- A habit of setting a Decide By date whenever you send options to a client. You set it from the vendor's own quote and your install date. This guide states no lead times, because they differ by vendor and product.
The Concept
Picture a tickler file, the old paper kind with a folder for each day. Each morning someone pulls out the folder for today and hands it to you. The sheet is that tickler file. It works out, for each pending selection, how many days are left. Zapier is the person who delivers one note each morning.
Why does the Zap read a single Summary row and not search the decisions themselves? Because a Zapier search that finds nothing halts the Zap ("Safely halted" in Zap History), and then no email goes out. On a quiet day with nothing due, you would get silence, and silence is exactly what a broken Zap also produces. The Summary tab holds one row that always exists, so the lookup always succeeds and you get an email every weekday. On a quiet day it says "No client decisions due soon". That email is a heartbeat: if it does not arrive, something is wrong.
What Zapier sees. Zapier receives the Summary row: the Key, two counts and the Digest Lines text. Digest Lines holds a project code, a selection label and a date for each flagged decision. Zap History stores the data each step received and sent, and Gmail keeps the email. Check Zapier's data retention settings for how long, and decide whether the studio is comfortable with that.
What stays out of the sheet. Use a project code such as MAPLE, never the client's name or address. Use short selection labels such as "kitchen pendant finish". Keep prices, budgets and trade pricing out of every column. Neither the digest nor Zapier needs them.
Build It Step by Step
Part 1: Lay out the two tabs
Create a Google Sheet with two tabs named exactly Decisions and Summary. Spelling and capitals matter because the formulas use those names.
Decisions tab, header in row 1, one selection per row from row 2 down to row 200:
| Column | Header | What goes in it | Typed or formula |
|---|---|---|---|
| A | Project | Short project code, for example MAPLE | Typed |
| B | Selection | For example "kitchen pendant finish" | Typed |
| C | Sent On | The date the options went to the client | Typed date |
| D | Decide By | The date you need an answer, set from the vendor's quote and your install date | Typed date |
| E | Status | Dropdown: Waiting, Decided, Dropped | Dropdown |
| F | Days Left | Decide By minus today | Formula |
| G | Stage | The flag the digest uses | Formula |
| H | Digest Line | One line of text for the email | Formula |
Add the Status dropdown with Data, then Data validation. Set columns C and D to accept dates only, so a date typed as text is rejected. Set column F's number format to a plain number (under Format, then Number), because Sheets sometimes shows the result of date arithmetic as a date or a duration.
Summary tab, header in row 1, one data row in row 2:
| Column | Header | Row 2 holds |
|---|---|---|
| A | Key | The word summary, typed |
| B | Action Count | Formula |
| C | Waiting Count | Formula |
| D | Digest Lines | Formula |
| E | Warn Days | A number you choose, for example 3 |
Warn Days is how many days before a decide-by date you want to be reminded. You choose it. Never add a second data row to Summary and never rename the word in A2.
Part 2: Days Left and Stage
Paste into Decisions!F2 and fill down to row 200:
=IF(OR(B2="",D2=""),"",D2-TODAY())
Days Left is blank when the Selection or the Decide By cell is blank, and otherwise the number of days from today to the decide-by date. A negative number means the date has passed.
Paste into Decisions!G2 and fill down to row 200:
=IF(B2="","",IF(OR(E2="Decided",E2="Dropped"),"Closed",IF(D2="","Missing date",IF(F2<0,"PAST DECIDE-BY",IF(F2<=INDEX(Summary!E:E,2),"Due soon","Waiting")))))
The tests run in a fixed order. A blank Selection gives a blank result. Decided or Dropped gives Closed. No Decide By date gives Missing date. A negative Days Left gives PAST DECIDE-BY. Days Left up to your Warn Days gives Due soon. Anything else is Waiting. The formula reads Warn Days from Summary!E2 with INDEX, so it stays put as you fill down. If you leave Warn Days empty, Sheets reads it as 0 and a decision is flagged only from the day it is due.
Walk it through each case. Suppose today is Monday 2026-10-05 and Warn Days is 3.
| Selection | Decide By | Status | Days Left | Stage | Why |
|---|---|---|---|---|---|
| (blank row) | blank | blank | blank | blank | Selection is blank |
| Drapery style | 2026-09-30 | Decided | -5 | Closed | Closed is tested before the date, so an old date does no harm |
| Cabinet pulls | blank | Waiting | blank | Missing date | No date to count from |
| Kitchen pendant finish | 2026-10-02 | Waiting | -3 | PAST DECIDE-BY | Below 0 |
| Wall color | 2026-10-05 | Waiting | 0 | Due soon | 0 is not below 0, and 0 is at most 3 |
| Sofa fabric | 2026-10-08 | Waiting | 3 | Due soon | 3 is at most 3 |
| Rug size | 2026-10-09 | Waiting | 4 | Waiting | 4 is more than 3 |
Closed comes before the date tests for the same reason as in any tracker. A decided row keeps its old date, and without the Closed test first it would read PAST DECIDE-BY for good. Missing date is tested before Days Left because a blank date has no Days Left to compare.
Part 3: The Digest Line
Paste into Decisions!H2 and fill down to row 200:
=IF(B2="","",A2&" | "&B2&" | decide by "&IF(D2="","no date",TEXT(D2,"yyyy-mm-dd"))&" | "&G2)
TEXT turns the date into 2026-10-08 so it does not print as a serial number. The blank-date guard prints "no date" and not 1899-12-30. A blank Selection gives a blank line.
For the sofa fabric row, H shows: MAPLE | Sofa fabric | decide by 2026-10-08 | Due soon
Part 4: The Summary formulas
Every range runs over rows 2 to 200 of the Decisions tab, so all the ranges have the same height.
Summary!B2, Action Count:
=COUNTIF(Decisions!G2:G200,"PAST DECIDE-BY")+COUNTIF(Decisions!G2:G200,"Due soon")+COUNTIF(Decisions!G2:G200,"Missing date")
Summary!C2, Waiting Count:
=COUNTIF(Decisions!G2:G200,"Waiting")
Waiting Count covers the pending selections that are further out than your warning window. Both counts use labels the Stage formula writes only for filled rows, so the blank formula rows below your last selection are never counted.
Summary!D2, Digest Lines:
=IFERROR(TEXTJOIN(CHAR(10),TRUE,FILTER(Decisions!H2:H200,(Decisions!G2:G200="PAST DECIDE-BY")+(Decisions!G2:G200="Due soon")+(Decisions!G2:G200="Missing date"))),"No client decisions due soon")
FILTER keeps the Digest Lines whose Stage is one of the three action labels, and TEXTJOIN puts a line break between them. When nothing qualifies FILTER returns an error, and IFERROR replaces it with "No client decisions due soon". The cell is never empty.
Turn on text wrapping for D2 so you can read the lines.
Part 5: Build the Zap
The Zap has a trigger and two actions.
- Trigger. Choose Schedule by Zapier and the event Every Day. Set the Time of Day, for example 7 AM. Zapier's help page describes an optional field named Trigger on weekends?. Set it to No for a weekday-only digest. Schedule triggers use the timezone on your Zapier account, and Zapier says a run can start a few minutes after the set time.
- Action 1. Choose Google Sheets and the event Lookup Spreadsheet Row. Connect your Google account. Pick the spreadsheet and the Summary worksheet. Choose Key as the lookup column and type
summaryas the value. Leave off any option that creates a row when nothing is found. Test the step. You should see Action Count, Waiting Count and Digest Lines from your sheet. - Action 2. Choose Gmail and the event Send Email. In To, type your own address only. Subject: type
Client decisions:and then insert the Action Count field. Next typeneed a nudge,and insert the Waiting Count field. Finish withfurther out. Body: insert only the Digest Lines field. Test it and open the email.
Each decision should sit on its own line. If they run together, look for a body type setting in the Gmail step and try the other option. Then turn the Zap on.
Tasks. Zapier counts only successful action steps as tasks. Triggers never count, and Zapier's help page says the Schedule trigger does not count towards task usage. The page also says a search step's task use depends on its settings, so budget two tasks per run, the lookup and the email. Run every day and that is 56 to 62 tasks in a month. Weekdays only is about 20 to 23 runs, so roughly 40 to 46 tasks. Compare that with your plan's task limit on Zapier's pricing page.
Part 6: Keep it current
When the client decides, set Status to Decided. If the client drops an item, set Dropped. When a vendor's lead time changes and moves your deadline, overwrite Decide By. The row recalculates on its own.
Real Example: Monday 2026-10-05, Warn Days set to 3
Setup: Seven rows on the Decisions tab for the MAPLE and LAKE projects. Input: The Zap fires at 7 AM on Monday 2026-10-05.
| Project | Selection | Decide By | Status | Days Left | Stage |
|---|---|---|---|---|---|
| MAPLE | Kitchen pendant finish | 2026-10-02 | Waiting | -3 | PAST DECIDE-BY |
| MAPLE | Sofa fabric | 2026-10-08 | Waiting | 3 | Due soon |
| LAKE | Rug size | 2026-10-09 | Waiting | 4 | Waiting |
| LAKE | Cabinet pulls | blank | Waiting | blank | Missing date |
| LAKE | Wall color | 2026-10-05 | Waiting | 0 | Due soon |
| MAPLE | Drapery style | 2026-09-30 | Decided | -5 | Closed |
| LAKE | Bar stools | 2026-10-01 | Dropped | -4 | Closed |
Counts: Action Count is 1 (PAST DECIDE-BY) + 2 (Due soon) + 1 (Missing date) = 4. Waiting Count is 1 (Rug size). The two Closed rows are in neither count.
Output: The subject reads "Client decisions: 4 need a nudge, 1 further out" and the body reads:
MAPLE | Kitchen pendant finish | decide by 2026-10-02 | PAST DECIDE-BY
MAPLE | Sofa fabric | decide by 2026-10-08 | Due soon
LAKE | Cabinet pulls | decide by no date | Missing date
LAKE | Wall color | decide by 2026-10-05 | Due soon
The "decide by no date" line reads oddly, and that is useful. It is a prompt to go and set the date. You then write each reminder to the client yourself, using your Claude Project from the Level 3 guide on studio voice and standard client emails if you have it, and you tell Claude only the project code and the selection.
Time saved: The daily trawl through open selections to see whose answer is overdue. Your first two weeks of use will tell you the real figure.
What to Do When It Breaks
- A weekday passes with no email (silent failure). The email is sent every weekday by design, so a missing one means something stopped. Wait a few minutes past the set time and then open Zap History. Check, in order: the Zap is on, a run exists for that day, the cell Summary!A2 still says
summarywith no extra space, and the Google connection has not expired. A "Safely halted" run means the lookup found no row, which almost always means the Key cell was edited. - The digest never lists something you know is late. Check that its Decide By cell holds a real date (dates right-align, text left-aligns) and that its Status is still Waiting.
- Everything shows Waiting and nothing is Due soon. Check Summary!E2. An empty cell counts as 0, so only decisions due today are flagged, and a negative number shrinks the window further. Type a positive whole number.
- Days Left shows a date such as 1900-01-02 instead of 3. Set the column to a plain number format.
- A selection is missing. Its Selection cell is blank, or it sits below row 200.
- Runs stop mid-month. Zapier may have reached the plan's task limit and held new runs.
Variations
- Simpler version: Skip the Zap and look at the Summary tab as the first thing each morning.
- Extended version: Add a Google Form for logging new selections as you send them. Form answers land on their own responses tab, so copy each one onto the Decisions tab with its Decide By date. The Zap still runs on its schedule.
- Companion build: The procurement digest uses the same Summary-row pattern for orders and ship dates.
What to Do Next
- This week: Set Warn Days, test on real selections and confirm the test email lands only in your inbox.
- This month: Check, after a few weeks, whether three days is the right warning window for the way your clients answer.
- Advanced: Use the digest as the trigger for your own habit of sending reminders on a fixed weekday, and write each one by hand.
Advanced guide for interior designers. This build needs a Zapier plan that allows multi-step Zaps. Interfaces change, so match the step names to what your screen shows.