Chase past-due JobNimbus invoices with escalating emails

By General Input

Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.

Integrations

  • JobNimbus
  • Gmail
  • Slack Bot

Type

Agentic Task

Categories

  • Finance

Every weekday at 8am, review all outstanding JobNimbus invoices, email each customer a single payment reminder whose tone escalates with how overdue they are, and post one receivables summary to Slack.

Start by pulling the full picture from JobNimbus. Use List Invoices to get every invoice and List Payments to get every payment. Both endpoints return an envelope shaped { count, results } where count is the total number of records in the account and not the size of the page you received, so page through with the size and from parameters (size up to 1000, from as a zero based offset) until a page comes back with fewer rows than you asked for. All timestamps are Unix epoch seconds. If you need to narrow the pull, these list endpoints accept an ElasticSearch style filter parameter, for example a range clause on date_updated.

Reconcile the payments against the invoices yourself rather than trusting a single status field. For each invoice, sum every payment that applies to it and subtract that from the invoice total to get the genuinely outstanding balance. Skip any invoice whose recorded payments already cover its balance, and skip anything where the remaining balance is zero or negative. Only invoices with a real outstanding amount and a due date in the past go any further.

Bucket every remaining unpaid invoice by how many days past its due date it is: 1 to 6 days, 7 to 13 days, 14 to 20 days, and 21 or more days.

Group everything by customer rather than by invoice. A homeowner with three open invoices must receive exactly one email listing all three, never three separate emails. Duplicate chase emails to the same customer are the fastest way to get this workflow turned off, so send at most one email per customer per run. Decide each customer's escalation tier from their most overdue invoice so the tone matches the worst case across their balances.

For every customer whose oldest unpaid invoice is 7 or more days past due, draft and send one reminder using Gmail Send a Message, addressed to the email on their JobNimbus contact record. Vary the tone by tier. At 7 to 13 days write a friendly nudge that assumes the invoice simply slipped through. At 14 to 20 days write a firmer notice that states the amount plainly and asks for a specific payment date. At 21 or more days write a final notice that makes the consequences clear while staying professional. Every email should itemize each open invoice with its number, issue date, due date and outstanding amount, and state the combined total owed. Customers whose invoices are all fewer than 7 days past due receive no email, but they still count toward the Slack totals.

For each customer in the 21 or more days tier, also use JobNimbus Create a Task to create a task for the account owner to phone the customer, referencing the customer name and their total outstanding balance. Create one task per customer, not one per invoice. Tasks require a record_type_name that matches an existing task type in the account, which you can read from the account settings.

Finally, post one message to Slack using the Slack Bot Send a Message operation. Summarize the total dollars outstanding across all unpaid invoices, the number of invoices in each aging bucket, and the five largest overdue balances by customer with the customer name and amount. Also report how many reminder emails were sent, broken down by tier, and how many call tasks were created.

Handle the edge cases explicitly. If a customer has no email address on file, skip their email and list them as an exception at the end of the Slack message so someone can chase them manually. If nothing is outstanding, post a short all clear to Slack instead of an empty report. Never send a second email to a customer you have already emailed in the same run.

Related prompts

Explore more prompts
Win back LiveChat visitors whose chats went unansweredA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seats