Weekly Estimate, Insertion Order and Invoice Status Digest Sent Only to You
For Advertising & Promotions Managers ·
What This Builds
Estimates wait for your review, queries sit with a vendor, approved invoices wait to go to finance, and each of them slips quietly. This build emails you once a week with only the documents that need a move from you: review now, chase the vendor, send to finance, or fix a missing update date.
The email goes to you alone. Nothing is sent to agencies, printers, media sellers or finance, and no amounts appear anywhere in the sheet. Amounts stay in finance's system and in your Level 2 Excel tracker ("Track Budget Lines and Insertion Orders With Microsoft Copilot in Excel").
Prerequisites
- A Google account with Sheets and Gmail. If your company uses Microsoft 365 for mail, ask whether a Google account may hold even coded vendor data.
- A Zapier account on a plan that allows a three-step Zap. Zapier's free plan has been limited to two-step Zaps, so check current plans at zapier.com. The Professional plan is listed at $29.99/month. That is the full ongoing cost, since Sheets and Gmail come with your Google account.
- Your company's AI and software policy, checked for whether Zapier and a Google account may hold coded vendor data
- The estimate, insertion order and invoice references you want to track
The Concept
Picture a clipboard hung by your desk with one row per vendor document, and a note pinned above it that always says how many items need you and which ones. You maintain the clipboard. Zapier is a courier who photographs the pinned note every week and drops the photo in your inbox.
The pinned note is a Summary row that exists whether or not anything needs action. That matters because a Zapier search that finds zero rows halts the Zap ("Safely halted" in Zap History) and sends nothing. With a Summary row that always matches, a quiet week produces an email that says so, and a missing email means something is actually wrong.
What Zapier Sees and Keeps
Zap History records each step's data. Here that is promotion codes, vendor codes, document types, the vendor's short document reference, status values, dates, counts and the digest text. Keep the following out of the sheet:
- Amounts of any kind, including totals and rates
- Real vendor names where your contract is confidential. Use codes such as Agency B and Printer C.
- Unreleased product names. Use a promotion code.
- Any consumer's personal data
Use short labels and references with no meaning outside your team. Then confirm with your policy that Zapier may hold them.
Build It Step by Step
Part 1: The Documents tab
Create a new spreadsheet for this digest only. Rename the first tab Documents and add these headers in row 1:
| Column | Header | What goes in it |
|---|---|---|
| A | Promo | Promotion code, such as SPRING-A |
| B | Vendor | Vendor code, such as Agency B or Printer C |
| C | Doc Type | Dropdown: Estimate, Insertion order, Invoice |
| D | Doc Ref | The vendor's short reference. No amounts. |
| E | Status | Dropdown: Awaiting my review, Query with vendor, Approved, Sent to finance, Paid, Cancelled |
| F | Last Update | The date you last changed Status |
| G | Days Since | Formula |
| H | Stage | Formula |
| I | Digest Line | Formula |
Add the dropdowns with Data > Data validation and set column F to accept only dates. Format G2:G200 as Format > Number > Number. Whenever you change a Status, change Last Update to that day in the same moment. The Days Since count depends on it.
Part 2: The Summary tab and your setting
Add a tab named Summary. Row 1 is headers and row 2 is the single data row:
| Cell | Header (row 1) | Row 2 contents |
|---|---|---|
| A | Key | the word summary, typed exactly |
| B | Nudge After Days | a number you choose, for example 5 |
| C | Action Count | formula |
| D | Open Count | formula |
| E | Digest Lines | formula |
Cell B2 is your setting. A document that has sat in the same status for that many days or more gets nudged.
Part 3: The formulas
Fill each Documents formula down to row 200. Extend every range below if you pass 200 rows.
Days Since, Documents!G2:
=IF(OR(C2="",F2=""),"",TODAY()-F2)
Stage, Documents!H2:
=IF(C2="","",IF(OR(E2="Paid",E2="Cancelled"),"Closed",IF(F2="","Missing update date",IF(E2="Awaiting my review",IF(G2>=Summary!$B$2,"REVIEW NOW","Awaiting review"),IF(E2="Query with vendor",IF(G2>=Summary!$B$2,"CHASE VENDOR","Query open"),IF(E2="Approved","SEND TO FINANCE",IF(E2="Sent to finance","With finance","Check status")))))))
Digest Line, Documents!I2:
=IF(C2="","",A2&" | "&B2&" | "&C2&" | "&D2&" | "&E2&", "&IF(F2="","no update date",G2&" days since update")&" | "&H2)
Action Count, Summary!C2:
=COUNTIF(Documents!H2:H200,"REVIEW NOW")+COUNTIF(Documents!H2:H200,"CHASE VENDOR")+COUNTIF(Documents!H2:H200,"SEND TO FINANCE")+COUNTIF(Documents!H2:H200,"Missing update date")
Open Count, Summary!D2:
=C2+COUNTIF(Documents!H2:H200,"Awaiting review")+COUNTIF(Documents!H2:H200,"Query open")+COUNTIF(Documents!H2:H200,"With finance")
Digest Lines, Summary!E2:
=IFERROR(TEXTJOIN(CHAR(10),TRUE,FILTER(Documents!I2:I200,(Documents!H2:H200="REVIEW NOW")+(Documents!H2:H200="CHASE VENDOR")+(Documents!H2:H200="SEND TO FINANCE")+(Documents!H2:H200="Missing update date"))),"Nothing needs action this week")
Every range in the FILTER is rows 2 to 200, so the heights match. If no row matches, FILTER errors and IFERROR supplies the fallback sentence.
Part 4: Walk the Stage formula through every case
The tests run top to bottom and the first true one decides.
- Blank row. Doc Type is empty, so Stage is blank, nothing is counted and nothing is filtered in.
- Paid or Cancelled. Stage is "Closed". This is tested before the date check, so a paid invoice with no update date never nags you.
- Last Update blank. Stage is "Missing update date". Days Since is blank here, so no later test compares it to a number.
- Awaiting my review. With Days Since at or above the Nudge After Days, Stage is "REVIEW NOW". Below it, "Awaiting review".
- Query with vendor. At or above the setting, "CHASE VENDOR". Below it, "Query open".
- Approved. "SEND TO FINANCE". Approved documents are flagged straight away because only you can move them on.
- Sent to finance. "With finance". It is counted as open and stays out of the digest, since the next move is finance's.
- Status left blank on a filled row. Stage reads "Check status". It is not counted and not in the digest, so glance down the Stage column when you update the tab.
Part 5: Build the Zap
- In Zapier, create a Zap and choose the trigger Schedule by Zapier, event Every Week. Pick the weekday and hour you want, for example Monday morning.
- Add an action: Google Sheets, event Lookup Spreadsheet Row. Choose this spreadsheet and the Summary worksheet. Set the lookup column to Key and the lookup value to the typed word summary. Test it and confirm you see Nudge After Days, Action Count, Open Count and Digest Lines.
- Add an action: Gmail, event Send Email. Send it to your own address only. Build the subject with the field picker:
Vendor documents: [Action Count] need action, [Open Count] open. Put the Digest Lines field in the body. If line breaks collapse in the test email, look for a plain-text body option in the step. - Add nothing else. No AI step, no vendor addresses, no finance address.
A normal run uses two tasks, since only successful action steps count. The trigger does not count, and a halted search is not billed. Confirm the current rules on Zapier's pricing page.
Part 6: Test and refine
Open the sheet so the formulas recalculate. Then test the Gmail step and compare the email with the Documents tab row by row. Check File > Settings > Calculation is set to recalculate on change and every hour, because TODAY() only moves when the sheet recalculates. Before acting on any line, open the actual estimate, order or invoice and read it against the vendor's document. The digest tells you what is waiting, never what it says.
Real Example: Monday 2026-10-12, Nudge After Days 5
The date used for TODAY() is invented, as are all codes and references.
| Row | Promo | Vendor | Doc Type | Doc Ref | Status | Last Update | Days Since | Stage |
|---|---|---|---|---|---|---|---|---|
| 2 | SPRING-A | Agency B | Estimate | EST-101 | Awaiting my review | 2026-10-05 | 7 | REVIEW NOW |
| 3 | SPRING-A | Printer C | Estimate | EST-102 | Awaiting my review | 2026-10-10 | 2 | Awaiting review |
| 4 | SPRING-A | Agency B | Insertion order | IO-210 | Query with vendor | 2026-10-07 | 5 | CHASE VENDOR |
| 5 | SUMMER-B | Printer C | Insertion order | IO-211 | Query with vendor | 2026-10-10 | 2 | Query open |
| 6 | SUMMER-B | Agency B | Invoice | INV-330 | Approved | 2026-10-09 | 3 | SEND TO FINANCE |
| 7 | SUMMER-B | Printer C | Invoice | INV-331 | Sent to finance | 2026-10-01 | 11 | With finance |
| 8 | SUMMER-B | Agency B | Invoice | INV-332 | Paid | 2026-09-28 | 14 | Closed |
| 9 | SPRING-A | Agency B | Estimate | EST-103 | Awaiting my review | (blank) | (blank) | Missing update date |
| 10 | (blank row) | (blank) |
Checking by hand from 2026-10-12: the 5th is 7 days back, the 10th is 2 days back, the 7th is 5 days back (exactly at the setting, so row 4 is nudged), the 9th is 3 days back, and October 1 is 11 days back.
Action Count: REVIEW NOW 1 (row 2), CHASE VENDOR 1 (row 4), SEND TO FINANCE 1 (row 6), Missing update date 1 (row 9), so 4. Open Count: those four plus Awaiting review 1 (row 3), Query open 1 (row 5) and With finance 1 (row 7), so 7. Row 8 is Closed and the blank row counts for nothing. Seven open and one closed makes the eight documents on the tab.
The subject reads Vendor documents: 4 need action, 7 open, and the body reads:
SPRING-A | Agency B | Estimate | EST-101 | Awaiting my review, 7 days since update | REVIEW NOW
SPRING-A | Agency B | Insertion order | IO-210 | Query with vendor, 5 days since update | CHASE VENDOR
SUMMER-B | Agency B | Invoice | INV-330 | Approved, 3 days since update | SEND TO FINANCE
SPRING-A | Agency B | Estimate | EST-103 | Awaiting my review, no update date | Missing update date
Time saved: The Monday trawl through inboxes and trackers to find what is waiting becomes a four-line read. Updating Status and Last Update when something changes takes seconds per row.
What to Do When It Breaks
- No digest arrived and nothing looks wrong → This is the silent failure. Open Zap History and look for the scheduled run. No run means the Zap is off or its schedule changed. A "Safely halted" lookup means the Key cell no longer reads exactly summary, or the Summary tab was renamed. An error on the Sheets step usually means an expired Google connection, so reconnect it. Add a calendar reminder to confirm the email arrived each week for the first month.
- A document you changed still shows the old stage → The sheet has not recalculated. Open it and rerun the test. Also confirm you updated Last Update when you changed Status.
- Everything shows REVIEW NOW or CHASE VENDOR → Nudge After Days is blank or zero. Enter a number in Summary!B2.
- Digest Lines is empty while Action Count is above zero → A range in the FILTER is a different height from the others. Make them all rows 2 to 200.
- A row is missing from the digest and its Stage reads Check status → Status is blank. Pick a value from the dropdown.
Variations
- Simpler version: Mail only the Action Count and Open Count in the subject, with the sheet link in the body.
- Extended version: Add a Google Form for logging new documents. Its answers land on a responses tab, which you copy into Documents by hand after checking them.
What to Do Next
- This week: Enter every open estimate, order and invoice reference and send yourself a test.
- This month: Tune Nudge After Days to the response time of your slowest vendor.
- Advanced: Use the digest as the agenda for a short weekly check-in with finance, bringing the real documents.
Advanced guide for Advertising & Promotions Manager professionals. These techniques use more sophisticated features that may require paid subscriptions.