Columns the export needs
Export invoices from HubSpot or QuickBooks as CSV, one row per invoice, including paid ones if you want the late-history modifier. Use these column names, or download the template. If your export names a column differently, you match it after choosing the file.
Slash dates are read as US (MM/DD/YYYY). ISO dates (2026-10-16) and "Oct 16, 2026" also work.
Aging by customer
Each bar is one customer's open balance, split by days past due at the run date.
Chaser drafts
One email per customer, covering every open invoice. The tier comes from the oldest overdue invoice; tone moves a step with payment history. Tap a customer to open the draft, edit it in place, then copy or open in Gmail.
How tiers and modifiers are set
Slack summary
Three lines for the CEO.
Make it run itself
A Google Apps Script with the same aging, rubric and templates as this page (it's the same code). Every 14 days it reads the invoice export in a Sheet, saves one Gmail draft per customer for you to review, and posts the digest to Slack. Nothing sends without you.
- Paste the HubSpot or QuickBooks invoice export into a Google Sheet, in a tab named
Invoices, headers in row 1. - Open Extensions › Apps Script, replace the contents of
Code.gswith the script below, and save. - In Project Settings › Script properties, add
SENDER_NAME,SENDER_ROLE,FOUNDER_NAME,FOUNDER_ROLEand a Slack incoming webhook asSLACK_WEBHOOK_URL. - Run
setuponce and grant access to Sheets, Gmail and external requests. It adds a trigger for every other Monday at 8am. - Run
runonce to check: drafts land in Gmail, the digest posts to Slack, and anAR runstab logs the totals.
Loading…