Filing Deadline Watcher
Daily reminder before a client filing comes due.
What it does
Reads your FilingDeadlines Google Sheet, sorts open filings into 30/14/7/3/1-day windows, flags anything already past due, and sends one digest to the tax manager each morning.
Handles extensions: a row marked extended is measured against extended_due_date once you enter one, and against the original due_date until then.
What it does NOT do
It does not calculate due dates. Filing dates are not a formula:
- They shift when the due date lands on a weekend or federal holiday.
- They differ by entity type, jurisdiction and election (1120 vs 1120-S vs 1065 vs 1041).
- Florida DR-15 is monthly or quarterly depending on the client's assigned frequency.
- IRS disaster relief moves whole counties' deadlines with weeks of notice — Florida firms hit this most years.
You enter the date your firm already determined. This reminds you of it. Calculating deadlines from rules is the version that quietly gets a client penalised, so it is deliberately out of scope. Keep using your tax software's calendar for the math and this for the reminder.
Every digest carries the line "This is a reminder, NOT tax advice." Keep it.
Setup
1. Google Sheet
Tab FilingDeadlines with this header:
| client_id | client_name | entity_type | jurisdiction | form | period | due_date | extended_due_date | status | assigned_to | notes |
|---|---|---|---|---|---|---|---|---|---|---|
statusvalues:open|extended|filed|na- Only
openandextendedrows are alerted on - Dates in
YYYY-MM-DD. A row with an unparseable date is skipped rather than guessed at
2. Credential + contact
Replace the placeholders:
- <<GOOGLE_WORKSPACE_CREDENTIAL>> — a Google Workspace credential with Sheets read scope
- <<FILING_DEADLINES_SHEET_ID>> — the sheet ID from its URL
- <<TAX_MANAGER_PUBLISHER>> — who gets the digest
3. Schedule
Daily, early. 6:00 AM means the partner sees a missed DR-15 before the client does.
Customization
- Windows.
WINDOWSin thecomposetask. Firms in season often add a 60-day window. - Per-preparer digests. Column J (
assigned_to) is already read and printed. To send each preparer only their own rows, filter on it incomposeand run the workflow once per preparer. - Second channel. The
sendtask uses whatever channels the contact has configured — SMS for a same-day deadline is a reasonable escalation.
Source
workflow.iml