Model Change and Documentation Digest: A Zapier Automation That Emails You Every Monday
For Actuarial Analysts ·
What This Builds
Every Monday morning an email lands in your own inbox listing the model changes whose paperwork has fallen behind: the ones with no documentation entry, the ones documented but not signed off, and the ones with no change date. The subject line carries the count, so you know before opening it whether the change log needs attention.
The sheet does all the thinking. Formulas flag each change, a Summary tab collects the flagged lines into one cell, and Zapier carries that cell to your inbox. There is no AI step, so no model information goes to an AI vendor. The email goes to you alone, and you decide who gets a reminder.
Prerequisites
- A Google account that holds the sheet, and a Gmail address you are allowed to send from. If your company runs Google Workspace, ask IT whether outside apps such as Zapier may connect to it.
- A Professional plan or better ($29.99/month). The Zap has a trigger plus two actions, which is three steps, and Zapier's free plan allows two-step Zaps only. Check Zapier's current plan page before you build.
- Total ongoing cost of the finished build: the Zapier plan above. Google Sheets and Gmail cost nothing extra on a Google account you already have. Each weekly run uses two tasks (the lookup and the email), so roughly 8 to 10 tasks a month. Zapier counts only successful action steps as tasks.
- Comfort writing a spreadsheet formula and copying it down a column.
- Your company's AI and data policy read, and an answer on whether Zapier is an approved tool for even this coded data (see "What Zapier Sees and Keeps" below).
The Concept
Think of the Summary tab as a noticeboard with one card pinned to it. The sheet rewrites the card whenever anything changes: the Changes tab. Zapier is the person who walks to the noticeboard every week, copies the card and drops it in your inbox.
The card is always there, and that matters because of how Zapier's search step behaves. A lookup that finds zero rows halts the Zap ("Safely halted" in Zap History), no later step runs and no email goes out. If the Zap searched the Changes tab for "changes with no documentation entry", a quiet week would return no rows and no email, and you could not tell a quiet week from a broken Zap. By searching for one Summary row whose Key is always "summary", the lookup always finds a row, so the email arrives every week even when the card says nothing needs you.
The Zap contains no AI step and no formula logic of its own. The sheet decides what is flagged. Zapier only moves one cell's text from the sheet to your inbox.
What Zapier Sees and Keeps
Zapier handles whatever the Zap reads, and Zap History stores the data of each step. The lookup step stores the whole Summary row, and the Gmail step stores the subject and body. In this build that means change codes, model codes, change dates, documentation entry dates and sign-off dates.
Keep these out of the sheet entirely: anyone's real name, any figure, result or assumption value, any model output, and any description of what a change does or why it was made. The sheet records that a change exists and when its paperwork happened, nothing more. Use codes such as "C-12" and "M-3", and keep the key that explains the codes in your team's own change log and model documentation. Results, figures and assumption values stay in your workbook and your model and never go in this sheet. Even coded data belongs to your company, so check the company's AI and data policy and whether Zapier is an approved tool before you connect it. If it is not approved, stop after Part 2 and use the sheet alone: the Summary tab works as a dashboard you open on Monday.
Build It Step by Step
Part 1: Build the Changes Tab
Create a new spreadsheet. Name one tab exactly Changes and another exactly Summary. Tab names are case-sensitive in formulas, so match them. This digest gets its own spreadsheet because its columns differ from your other digests.
On Changes, row 1 holds the headers and each model change gets one row from row 2 down.
| Column | Header | What goes in it |
|---|---|---|
| A | Change | Code such as C-12. Never a description |
| B | Model | Code such as M-3. Never a model name that identifies a product or client |
| C | Change Date | The date the change was made, typed as a date |
| D | Doc Entry Date | The date the documentation entry was written. Blank until then |
| E | Sign-off Date | The date the reviewer signed off. Blank until then |
| F | Days Since Change | Formula |
| G | Flag | Formula |
| H | Digest Line | Formula |
Format C, D and E as dates and F as a plain number.
On Summary, row 1 holds these headers and row 2 holds the one data row.
| Cell | Header (row 1) | Row 2 holds |
|---|---|---|
| A1 | Key | The text summary, typed exactly in lowercase |
| B1 | Allowed Days | A number you choose, for example 10 |
| C1 | Action Count | Formula |
| D1 | Digest Lines | Formula |
Allowed Days is your own setting. Choose it from your team's practice for how soon documentation and sign-off follow a change. This guide states no governance rule and no time limit.
Part 2: Add the Formulas
Paste each formula into row 2 of its column and copy it down to row 201. That leaves room for 200 changes. Every range below ends at row 201, so extend them all together if you ever need more rows.
Days Since Change, cell F2
=IF(OR(A2="",C2=""),"",TODAY()-C2)
Blank when there is no change code or no change date. Otherwise today minus the change date, so the number grows by one each day.
Flag, cell G2
=IF(A2="","",IF(C2="","Missing date",IF(AND(D2<>"",E2<>""),"Complete",IF(F2<Summary!$B$2,"Within window",IF(D2="","NO DOC ENTRY","NO SIGN-OFF")))))
The formula reads left to right and stops at the first test that is true.
- Change empty: blank. This is why a formula filled down to row 201 stays silent on empty rows.
- Change Date empty: "Missing date". Without a change date the day count cannot be worked out.
- Doc Entry Date and Sign-off Date both filled: "Complete".
- Days Since Change below Allowed Days (Summary!$B$2): "Within window".
- Doc Entry Date empty: "NO DOC ENTRY".
- Otherwise the entry exists and the sign-off is missing: "NO SIGN-OFF".
Complete is tested before the window so a finished change drops out whatever its age, and so a change with both dates never nags you. The window test comes next, which means a change inside its Allowed Days is never an alert even if its paperwork is missing. Only after the window has passed does the formula ask which piece is missing. It asks about the documentation entry first, because a sign-off without an entry to sign makes little sense. The odd combination of a sign-off date with no entry date is flagged NO DOC ENTRY once the window has passed.
Digest Line, cell H2
=IF(A2="","",A2&" | "&B2&" | changed "&IF(C2="","no date",TEXT(C2,"yyyy-mm-dd")&", "&F2&IF(F2=1," day"," days")&" ago")&" | "&G2)
The line reads Change | Model | change date with a day count | Flag. The date is wrapped in TEXT so it prints as 2027-02-05 and not as a serial number. A blank change date prints "no date", and a blank row returns blank.
Action Count, Summary!C2
=COUNTIF(Changes!$G$2:$G$201,"NO DOC ENTRY")+COUNTIF(Changes!$G$2:$G$201,"NO SIGN-OFF")+COUNTIF(Changes!$G$2:$G$201,"Missing date")
It counts the labels the Flag column writes for filled rows. Empty rows return blank, so they are never counted.
Digest Lines, Summary!D2
=IFERROR(TEXTJOIN(CHAR(10),TRUE,FILTER(Changes!$H$2:$H$201,(Changes!$G$2:$G$201="NO DOC ENTRY")+(Changes!$G$2:$G$201="NO SIGN-OFF")+(Changes!$G$2:$G$201="Missing date"))),"Every change is documented and signed off or still within your window")
The three ranges inside FILTER all run from row 2 to row 201, so they are the same height. FILTER keeps the Digest Line of every row whose Flag is one of the three action labels, and TEXTJOIN stacks those lines with a line break between them. When nothing matches, FILTER returns an error and IFERROR substitutes the fallback sentence, so the cell is never empty.
Re-read each formula once after pasting. Count the opening and closing parentheses, confirm every Changes range ends at row 201, and confirm the tab names match.
Part 3: Keep Calculation on Automatic
TODAY() recalculates as the sheet is used. Google's calculation settings page lists only two choices, Automatic and Manual, and no scheduled recalculation. In the sheet, open File, then Settings, then the Calculation tab, and keep the mode on Automatic. If the counts in an email look stale, open the sheet before the run and check that the day-count column matches today's date.
Part 4: Build the Zap
In Zapier, create a new Zap with three steps.
- Trigger. Choose the app Schedule by Zapier and the event Every Week. Pick Monday and a morning time, for example before you start work.
- Action. Choose Google Sheets and the event Lookup Spreadsheet Row. Connect your Google account. Then choose the spreadsheet and the Summary tab. Set the lookup column to Key and the lookup value to
summary. Add no other condition. The sheet already did the work, and you want a lookup that always finds its row. - Action. Choose Gmail and the event Send Email. In To, enter your own address and nobody else's. In Subject, build the line in this order: the text
Model change digest:, the Action Count field from step 2 and the textneed paperwork. In Body, insert the Digest Lines field from step 2. If the action offers a Body type setting, choose plain text so the line breaks from the sheet survive.
Zapier lists the Summary columns as fields named after your row 1 headers. If a header is missing from the field list, run the lookup test again so Zapier reloads the headers.
Test each step. The lookup test should return the summary row with the counts and the digest text. The email test should reach your inbox. Then turn the Zap on.
Part 5: Test and Refine
Add a dummy change with a change date well in the past and both paperwork dates blank. Confirm that Flag reads NO DOC ENTRY, that Action Count rises by one and that the line appears in Digest Lines. Fill in Doc Entry Date and confirm the label becomes NO SIGN-OFF. Fill in Sign-off Date and confirm the row disappears. Delete the dummy row when done.
Real Example: A Monday in February
Invented setup: today is Monday 2027-02-22 and Allowed Days is 10, so a change counts as late once 10 or more days have passed without its paperwork. All codes and dates are invented.
| Change | Model | Change Date | Doc Entry Date | Sign-off Date |
|---|---|---|---|---|
| C-11 | M-3 | 2027-02-01 | 2027-02-03 | 2027-02-08 |
| C-12 | M-3 | 2027-02-05 | blank | blank |
| C-13 | M-2 | 2027-02-08 | 2027-02-10 | blank |
| C-14 | M-2 | 2027-02-12 | blank | blank |
| C-15 | M-1 | 2027-02-15 | blank | blank |
| C-16 | M-1 | blank | blank | blank |
| C-17 | M-4 | 2027-02-13 | 2027-02-15 | blank |
| (row 9) | blank row |
Working through the Flag formula:
- C-11: both paperwork dates are filled, so Complete, although 21 days have passed (2027-02-01 to 2027-02-22).
- C-12: 2027-02-22 minus 2027-02-05 is 17. Not complete, 17 is not below 10, and the entry date is blank, so NO DOC ENTRY.
- C-13: 2027-02-22 minus 2027-02-08 is 14. The entry exists and the sign-off is blank, so NO SIGN-OFF.
- C-14: 2027-02-22 minus 2027-02-12 is 10. 10 is not below 10, so the window has passed, and the entry is blank, so NO DOC ENTRY. The boundary day counts as late.
- C-15: 2027-02-22 minus 2027-02-15 is 7. Below 10, so Within window although nothing is written yet.
- C-16: no change date, so Days Since Change is blank and the Flag is Missing date.
- C-17: 2027-02-22 minus 2027-02-13 is 9. Below 10, so Within window although the sign-off is blank.
- Row 9: no change code, so every formula returns blank and nothing is counted.
Counts: NO DOC ENTRY is 2 (C-12 and C-14), NO SIGN-OFF is 1 (C-13) and Missing date is 1 (C-16). Action Count is 2 + 1 + 1 = 4.
The Digest Lines cell holds four lines in sheet order:
C-12 | M-3 | changed 2027-02-05, 17 days ago | NO DOC ENTRY
C-13 | M-2 | changed 2027-02-08, 14 days ago | NO SIGN-OFF
C-14 | M-2 | changed 2027-02-12, 10 days ago | NO DOC ENTRY
C-16 | M-1 | changed no date | Missing date
The email arrives with the subject "Model change digest: 4 need paperwork" and those four lines in the body. If every change were Complete or Within window, Action Count would be 0 and the body would read "Every change is documented and signed off or still within your window". The email still arrives.
Setup: one spreadsheet, one Zap, three steps. Input: the Monday schedule and the rows you keep current. Output: one email to you with the count in the subject and the changes that need paperwork in the body. Time saved: the weekly cross-check of the change log against the model documentation, which depends on how often your models change. The digest is only as current as your last edit, so logging each change and each date is the price.
What to Do When It Breaks
- No email arrived on Monday. This is the failure you will not see, because a stopped Zap makes no noise. Check that the Zap is switched on. Then open Zap History for the run. A "Safely halted" lookup means no row had Key equal to summary, usually because someone renamed the Key cell, changed its text or moved the Summary tab. Restore the text
summaryin A2 exactly. A run that never appears at all usually means the Zap was turned off or the Google connection expired. Reconnect the account under your Zapier connected accounts and re-test the lookup. - Put a standing reminder in your calendar. If no digest has arrived by mid-morning on Monday, treat that as the alarm and check the Zap that day.
- Counts look wrong or stale. Open the sheet and confirm Calculation is on Automatic. Then check that Days Since Change matches today's date arithmetic.
- The email says nothing needs you, but you know something is close. The digest only reflects the rows. Check that the change is in the tab, that its dates are real dates and not text, and that a date was not typed into the wrong column.
- Dates show as long numbers. A date was joined without TEXT. Re-paste the Digest Line formula exactly.
- A formula shows #REF! or #NAME?. A tab was renamed. Rename it back, or fix the tab name inside the formulas.
- Line breaks collapse in the email. Switch the Gmail step to plain text if it offers a body type. Then re-test.
Variations
- Simpler version: skip Zapier and open the Summary tab each Monday. The counts and lines are the same.
- Extended version: add a Google Form for logging a new change. Form answers land on their own responses tab, and you copy each one into Changes yourself. Never point a Form at the Changes tab, because it would overwrite your formulas. Keep the form to codes and dates. The Zap still runs on its schedule.
- A second weekday: copy the Zap and set the copy to run on another day.
What to Do Next
- This week: build the tab and test with dummy rows. Then switch the Zap on and read the first real email against your change log.
- This month: tune Allowed Days after you see how many lines each Monday produces, and agree the number with your reviewer.
- Advanced: build the sister digests for close and valuation tasks and peer review backlog, each in its own spreadsheet with its own Summary tab.
Advanced guide for actuarial analysts. The digest flags dates you have typed. It does not write a documentation entry, judge a change or contact a reviewer. Your team's model governance and the reviewing actuary decide what is required, and Zapier and Google may change their screens, so follow the labels you see.