Home / Accounting & Bookkeeping / Monday 'waiting on client' digest for each preparer and the partner (Karbon plus outstanding documents)

Accounting & Bookkeeping problem 5: Nobody can say which clients are holding up which work

Monday 'waiting on client' digest for each preparer and the partner (Karbon plus outstanding documents)

Verified with mocksLast tested 2026-10-28 · pricing checked October 2026

Every Monday at 7:30 the workflow reads Karbon work items in a 'Waiting' status and the outstanding document list (the chase ladder's sheet, or TaxDome checklists), and emails each preparer one digest of what they're waiting on, oldest first, with work due in the next 14 days or overdue flagged. The partner gets one firm-wide summary. Internal only: no client is emailed.

The problem

Work that waits on a client is invisible until a deadline is close. The figures below come from a vendor survey.

Background reading: Client document reminder emails: a ladder that stops when files arrive · A WISP for small tax and bookkeeping firms that use automations: what the Safeguards Rule asks of your tools

Who it's for

US firms of 2-15 people who lose track of 'where is Client X at?' between Karbon, email and a spreadsheet.

Tools and monthly cost

ToolOfficial price
Karbon (optional practice-management tool; its API needs the Business or Enterprise plan)Team $59 / user / month billed annually ($79 monthly, teams of 4+); Business $89 / user / month billed annually ($99 monthly). Business includes automatic client reminders pricing page
Resend (sends the emails)Free: 3,000 emails / month, 100 / day. Pro: $20 / month for 50,000 pricing page
n8nCommunity Edition: free if you self-host (you pay for the server). n8n Cloud: from EUR 20 / month (Starter) or EUR 50 (Pro) pricing page

Example month: Illustrative arithmetic. A 5-person firm: 5 digests and 1 summary a week, about 25 emails a month, inside Resend's free tier, and a few dozen Karbon API calls a week. About $0 a month plus your n8n server and the Karbon plan you already have.

Setup

  1. Make sure work that waits on a client uses a Karbon status in the 'Waiting' primary status, and that each work item has an assignee.
  2. Karbon (optional): in Settings > Connected Apps > API Applications (Business or Enterprise plan), copy the application ID and access key into KARBON_APP_ID and KARBON_ACCESS_KEY. By default the API only sees Public clients; Private or Hidden clients need an admin request to Karbon. Karbon requires both headers on every call; the workflow refuses to send them to any other host. KARBON_REQUEST_INTERVAL_MS paces calls and 429 replies wait for Retry-After.
  3. Point it at your document list: the chase ladder's sheet (CHASE_SOURCE=sheet, the default) or TaxDome checklists (CHASE_SOURCE=taxdome, read-only; see the chase ladder recipe for the TaxDome settings).
  4. Set CPA_FIRM_NAME, CPA_FIRM_SHORT, CPA_PHONE, CPA_ADDRESS, CPA_FROM_EMAIL, CPA_REPLY_TO, CPA_TZ and PARTNER_EMAIL from .env.example. Every client email is signed with your firm name, phone and address. Run n8n behind HTTPS with multi-factor authentication on the n8n login and on every connected account, keep execution logs short (Settings > n8n data pruning), and add n8n and its host to your WISP's list of service providers. The workflow also has a manual 'run now' webhook used by our tests. Delete it, or put it behind n8n's header authentication, before you go live.

Download

Download accounting-waiting-on-client-digest.zip

Contains the n8n workflow, the mock data, the test runner with its last results, and the mock server we tested against. All keys in .env.example are fake.

Test result

Every workflow was imported into n8n 2.45.4 and run end to end on our test machine. Karbon (API v3), TaxDome (public API v4, read-only), QuickBooks Online (Accounting API with OAuth 2.0), Google Sheets and the email sender (Resend) were replaced by a local mock server built from their official API docs: it checks the same request shapes, authentication headers and query syntax, pages results (Karbon @odata.nextLink, TaxDome cursors, QuickBooks STARTPOSITION), returns HTTP 429 with Retry-After, and expires the QuickBooks access token so n8n's real OAuth2 refresh runs. These recipes use no AI model; every decision is a written rule. Clients, firms and transactions are invented. Verified with mocks; no real client data was used, and nothing was sent to a real person or account.

3/3 scenarios passed (run 2026-10-28)

PASSW1Monday: Karbon 'Waiting' work items (OData filter, $top 2 + @odata.nextLink paging, one 429) + outstanding documents -> one digest per person, oldest first, near deadlines flagged; partner summary; no client email
PASSW2Same week again: nothing
PASSW3TaxDome as the document source (read-only, cursor paging): pending checklist items grouped under the assigned employee

Actual output from the test run

Scenario W1: one preparer's Monday digest (invented clients). Names and numbers are invented.

Subject: Waiting on clients this week: 2 work item(s), 1 client(s) owing documents

Karbon work waiting on the client (2):
- Cal Nguyen: Q3 payroll filings [Waiting on payroll report]  << due Nov 5 (OVERDUE)
- Ava Brooks: 2025 Individual tax return - Ava Brooks [Waiting on client]  (due Dec 1)

Documents still outstanding (2 items, 1 clients, oldest first):
- Ava Brooks: 2025 W-2; 1099-INT acct *7766 (asked 14 days ago)

Update Karbon when something arrives; the document chase ladder keeps reminding clients automatically.

Verified with mocks

  • Monday: Karbon 'Waiting' work items read with an OData filter and $top 2 paging through @odata.nextLink (one 429 waited out), plus outstanding documents, became one digest per person, oldest first, with near deadlines flagged; the partner got a firm-wide summary; no client was emailed.
  • Same week again: nothing.
  • TaxDome as the document source (read-only, cursor paging): pending checklist items grouped under the assigned employee.
  • Verified with mocks; no real client data used.

Documented from official API docs only

Built to the vendor's documentation but not run against a live account. Check these on yours.

  • Karbon API v3 WorkItems with $filter on PrimaryStatus, $top/$skip and @odata.nextLink, plus user lookup (from Karbon's developer docs; not run against a live Karbon account).
  • TaxDome public API v4 (beta) checklist fields: assumed from the help center, since the schema is published inside the app; check before relying on it.
  • Resend email API (from Resend's docs).

Limitations

  • It reports; it doesn't chase. Client reminders come from the chase ladder recipe or your practice-management tool.
  • Built for Karbon work items. Financial Cents, Canopy and other tools are not built.
  • The digest contains client names and open items, so send it only to firm addresses with MFA on.
  • Not legal or professional-standards advice, and not a compliance guarantee. Tax preparers are covered by the FTC Safeguards Rule (16 CFR 314), which asks for encryption in transit and at rest (314.4(c)(3)), multi-factor authentication for anyone accessing an information system (314.4(c)(5)) and oversight of service providers (314.4(f)); n8n, its server, Resend, Google and Karbon/TaxDome are service providers to list in your written information security plan (IRS Pub 4557 and 5708). Section 7216 limits how you use and disclose tax return information. Check with counsel and your state board before you turn this on.