Jobber collections desk for chasing unpaid invoices

By General Input

An accounts receivable board that sorts every overdue Jobber invoice by age, then helps you draft, approve, and log every collection email you send.

Integrations

  • Jobber
  • Gmail
  • Slack Bot

Type

App

Categories

  • Finance
  • Operations

Build me a collections desk app that my office manager opens every morning to chase the money customers already owe us in Jobber. The audience is a non-technical office manager or bookkeeper at a home service company, so the app should read like a worklist they can go down, not a reporting tool they have to interpret.

The main screen is an accounts receivable aging board. Load every unpaid or partially paid invoice with Jobber List Invoices, and use Get Invoice where you need the full detail such as the remaining balance, issue and due dates, and payment status. Sort each invoice into an aging bucket by days overdue: 0 to 30, 31 to 60, 61 to 90, and 90 plus. Show each bucket as its own section with a running total of the amount owed in that bucket, and show the grand total outstanding at the top of the page. Every row shows the client name, the balance still owed rather than the original invoice total so partial payments are reflected correctly, the number of days overdue, and the job the invoice came from using Jobber Get Job. Let the office manager sort within a bucket by amount or by days overdue, and let them hide invoices under a small balance threshold so tiny amounts do not clutter the board.

Clicking a row opens a customer panel beside the board with that customer's full picture, because you chase a loyal customer with three jobs booked very differently from a one time caller who has ghosted you for 90 days. Pull the client record with Jobber Get Client, their job history with List Jobs, and their invoice history with List Invoices. In the panel show lifetime spend across all paid invoices, how long they have been a customer, whether they have any open or upcoming scheduled work, their other outstanding invoices, and how many times we have already chased this specific invoice based on the reminders the app has logged. Make the signal obvious at a glance, for example a clear marker when the customer has upcoming booked work, since that changes how hard you push.

Each row has three actions. First, send a reminder email to the customer through Gmail Send a Message. Second, log every touch back onto the invoice in Jobber with Create Invoice Note, so the record lives where the crew and the rest of the office can see it rather than in a separate tool, and the app should write that note automatically whenever a reminder goes out rather than making the office manager remember. Third, mark an invoice as promised to pay with a follow up date; the app stores that date and the note of what the customer said, visibly flags the invoice as promised on the board so it is not chased again by accident, and surfaces it back at the top of the board when the follow up date arrives so the office manager can check whether they actually paid.

Add a Draft the chase button on every row that kicks off a background agent. The agent reads the invoice line items with Jobber List Line Items so it can reference the actual work performed, the underlying job and its notes with Get Job, the customer's payment history and lifetime value with Get Client and List Invoices, and any previous reminders we have already logged on this invoice. It then writes a tailored reminder email: specific about what the work was and what is owed, and with a tone that escalates with the age of the debt. Early buckets should read as a friendly nudge that assumes it was an oversight, the middle buckets should be direct and ask for a payment date, and 90 plus should be firm and businesslike about next steps. The agent should also take customer value into account, softening for a long standing customer with upcoming booked work and being more direct with a one time caller who has gone silent.

The draft never sends itself. The agent writes it back into the app, where it appears in the row and in the customer panel as a pending draft with an editable subject and body. The office manager reads it, edits anything they want, and can regenerate it if the tone is off. Show the customer value context right next to the draft, meaning lifetime spend, upcoming booked work, days overdue, and prior chase count, so the person can decide to soften or harden it before it goes. Only when they hit approve and send does the app send it through Gmail Send a Message and write the reminder back to the invoice with Jobber Create Invoice Note. If they discard the draft, nothing is sent and nothing is logged.

Finish with a button at the top of the board that posts today's collections summary to a Slack channel for the owner using Slack Bot Send a Message. The summary includes the total outstanding, the amount sitting in each aging bucket, and the five worst accounts by amount owed with client name, amount, and days overdue. Keep it short and readable in Slack.

The app needs to store a few things of its own across sessions: the log of every reminder sent from the app including which invoice, when, and what was said, so the chase count and the agent's awareness of prior reminders stay accurate; promised to pay dates and the accompanying note; and pending agent drafts with their status so an unapproved draft is still waiting the next morning. Invoice and customer data itself always comes live from Jobber so the board reflects payments that have already landed.

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