Gmail Thread Aging + Stripe Invoice Overdue: Unified AR Follow-Up Digest to Slack via Zapier
Surface overdue Stripe invoices and the exact age of your last Gmail thread with that customer — every morning at 8:30, automatically — so AR follow-up stops living in someone's head.
The stack in the order it runs — data flows from the source through to where it lands.
AR follow-up in early-stage SaaS is almost always manual and inconsistent. The actual workflow: someone checks Stripe for overdue invoices, searches Gmail for the last email to that customer, then Slacks the account owner. That's 20 minutes per account — and it gets skipped entirely when the team is heads-down. The result is invoices sitting overdue for 30+ days because nobody saw them.
Stripe's `/v1/invoices` endpoint with `status=open` and a `due_date` range gives you every overdue invoice with customer email. Gmail's API — accessed through Zapier's 'Find Email' action — pulls the most recent thread with that customer and returns its date. The gap between invoice due date and last email date tells you exactly how cold the relationship is. That's the number that drives action.
Zapier is the right choice here specifically because non-technical ops people need to own this, not engineers. The Stripe and Gmail integrations are OAuth — zero API configuration. The real tradeoff is cost: multi-step Zaps with filtering require a paid plan (~$49/month). If you're comfortable with n8n or Pipedream, use those for the same logic at lower cost.
The Slack digest format is not an afterthought. Don't dump 20 overdue invoices into a channel. Rank by amount descending, show only the top 10, and always include the 'days since last email' column. An invoice that's 14 days overdue with a Gmail thread from 12 days ago is a warm follow-up. The same invoice with a thread from 45 days ago is a potential churn event. Those are different situations — the digest has to show the difference. Skip this entire workflow if your invoicing runs through Chargebee or Recurly and those tools already send AR reminders — you'll confuse customers with duplicate outreach. Also skip if you have a dedicated AR person working a daily collections queue; this is built for ops generalists who own AR as one of many jobs.
The stack (5)
The universal data scratchpad.
Still the fastest place to land tabular data everyone can read.
How it runs
- 1
Create the Zapier Zap with a Schedule trigger
In Zapier, create a new Zap. Set the trigger to 'Schedule by Zapier' → 'Every Day' at 8:30 AM in your local timezone. Schedule triggers pass no data — they just fire the workflow. The actual Stripe pull happens in step 2. Name the Zap 'Daily AR Digest — Stripe Overdue + Gmail Thread Age' so it's obvious to anyone on the team.
- 2
Pull overdue Stripe invoices via HTTP action
Add a 'Webhooks by Zapier → GET' action. URL: `https://api.stripe.com/v1/invoices?status=open&due_date[lt]=[unix_timestamp_7_days_ago]&limit=20`. Set the Authorization header to `Bearer sk_live_XXXX`. Zapier returns raw JSON — map the `data` array into subsequent steps. If you regularly have more than 20 overdue invoices, add a second request using `starting_after` for pagination. Sort by `amount_due` descending manually in the next step.
- 3
For each invoice, look up the latest Gmail thread
Add a 'Looping by Zapier' action to iterate over the invoice array — limit to the top 10 by amount. Inside the loop, add a 'Gmail → Find Email' action. Set the search query to `from:[customer_email] OR to:[customer_email]`, pulling `customer_email` from the invoice's `customer_email` field. Sort by date descending, return 1 result. Extract the `date` field. If no thread is found, set `last_email_date` to 'Never'.
- 4
Compute days overdue and days since last email
Add a 'Formatter by Zapier → Numbers → Spreadsheet-Style Formula' step. Compute `days_overdue = (today_unix - invoice_due_date_unix) / 86400`. Compute `days_since_email = (today_unix - last_email_unix) / 86400`. Round both to whole numbers. Then set a `priority_flag`: if `days_overdue > 14` AND `days_since_email > 14`, flag 'URGENT'. If `days_overdue > 7`, flag 'FOLLOW UP'. Otherwise 'WATCH'. These flags control everything downstream — Slack formatting, DMs, draft emails.
- 5
Append each invoice row to a Google Sheet
Add a 'Google Sheets → Append Row' action inside the loop. Write to a sheet called 'AR Tracker' with these columns: `date`, `customer_name`, `customer_email`, `invoice_id`, `amount_due` (formatted as currency), `days_overdue`, `days_since_email`, `priority_flag`, `invoice_url`. This sheet is the ops team's working document — account owners add a 'status' column with notes like 'Called' or 'Payment plan agreed'. Keep 60 days of rows.
- 6
Format and post the Slack digest after the loop
Outside the loop, add a 'Slack → Send Channel Message' action. Build the message in mrkdwn: header line '💰 AR Digest — [date] | [N] overdue invoices | Total: $[sum]'. Each invoice as a bullet: '[URGENT/FOLLOW UP] *[customer_name]* — $[amount] overdue [days] days | Last email: [days_since_email] days ago | <[invoice_url]|View Invoice>'. Sort URGENT flags to the top. Post to #finance-ops or #ar-alerts.
- 7
Send a direct Slack DM to account owners for URGENT flags
Add a filter step after the loop: only proceed if any record has `priority_flag = URGENT`. Then add a 'Slack → Send Direct Message' action targeting the ops lead — hardcode the Slack user ID. Message: '🔴 [N] accounts are URGENT in today's AR digest — overdue 14+ days with no recent email. Needs outreach today before EOD.' This is a DM, not a channel post. Personal accountability without channel noise.
- 8
Auto-draft follow-up email templates in Gmail for URGENT accounts
For URGENT-flagged accounts, add a 'Gmail → Create Draft' action. Subject: 'Re: Invoice [invoice_id] — Quick check-in'. Body: 'Hi [customer_name], I wanted to follow up on invoice [invoice_id] for $[amount] which was due on [due_date]. Let me know if you have any questions or if there's anything I can help with.' This creates a draft — it does NOT send automatically. The account owner reviews and sends. That's intentional: it removes the blank-page friction without removing human judgment from the send.
Want me to build this for you instead?
Product Audit and CTO Mode run out of this same thinking. If you’re reading this thinking “I want this, but in my product” — let’s talk.
See servicesMore like this
Google Analytics 4 + HubSpot Lifecycle Stage: Weekly Acquisition-Quality Digest to Slack via Pipedream with Claude Narrative
Stop reporting traffic numbers. Report whether the traffic you paid for last week actually became pipeline — with a one-paragraph executive summary written by Claude.
Outlook Calendar Load + HubSpot Deal Velocity: Weekly Ops Digest to Microsoft Teams
Every Monday at 07:30, your revenue team gets one Teams card: last week's deal pipeline movement next to each rep's actual meeting load — so you stop guessing whether low close rates are a pipeline problem or a capacity problem.
Intercom Ticket Volume + Razorpay Failed Payments: Daily Support-Cost-per-Revenue Alert to Slack via Zapier
Catch the support cost blowout from Razorpay failed payments before your agents are already buried.