A revenue and receivables dashboard for GoHighLevel
Pick any date range and see what you collected, what is still owed and how late it is, then chase it without leaving the page.
Integrations
LeadConnector
GoHighLevel
Type
Categories
- Finance
- Operations
Build me a revenue and receivables dashboard for a single GoHighLevel sub-account. The built-in invoice reporting will not let me look at money over an arbitrary date range, and that is the whole point of this app. The main screen answers one question: where is my money. Scope everything to one sub-account (one location), not an agency-wide rollup across clients.
The top of the main screen is a date range picker plus the money summary for that range. Show three headline totals: collected, outstanding and overdue. Under them show a simple trend of payments received across the selected period, bucketed by day or week depending on how long the range is. Next to the trend show aging buckets for what is currently owed, split into 0-30 days, 31-60 days and 60 plus days past due. Calculate days overdue and the aging buckets in the app from each invoice's due date against today, since the API does not hand you aging.
Below the summary is a sortable invoice table with columns for customer name, amount, issue date, due date, days overdue and status. Every column sorts. Add a filter to show all invoices, unpaid only, or overdue only. Beside the invoice table put a second tab listing recent payment transactions, with amount, date, customer and payment method, so I can reconcile what actually landed against what the invoices claim.
Clicking an invoice opens a detail view showing its line items and full breakdown on one side, and that customer's recent message history on the other, so I can immediately see whether anyone has already chased them. From this detail view I can record a manual payment against the invoice, for when someone pays by bank transfer or cheque, void an invoice that should never have gone out, or send the customer a message in their existing conversation thread. Confirm before voiding, since that is destructive.
Add a Draft collections outreach button. I select one or more overdue invoices in the table, hit the button, and it kicks off a background agent. For each selected invoice the agent reads that customer's conversation history and payment record, then writes a nudge whose tone escalates with how late the invoice is: gentle and assumed-oversight at around two weeks, noticeably firmer by sixty days. Each draft must reference the actual invoice amount and what it was for, and must take into account whether the customer has already been chased or has already replied. Drafts land in a review queue inside the app where I read, edit and then send them. Nothing sends automatically. Every message is reviewed by a human first, and the review queue should make it obvious which drafts are still pending, which were sent and which I dismissed.
Data sources. Totals, the aging buckets and the invoice table read through LeadConnector using List Invoices with its status and date filters, with Get Invoice for the detail view line items, and List Transactions for the payments tab. Actions use LeadConnector Record Invoice Payment and Void Invoice. Customer context and outreach use GoHighLevel Contacts: Get Contact for customer details, Conversations: Search Conversations to find the customer's thread, Conversations: Get messages by conversation id for the message history shown on the invoice detail, and Conversations: Send a new message to send an approved message. There is no text-to-pay operation available in the catalog, so do not promise one: sending the customer a payment nudge means sending them a message on their existing conversation thread.
API notes. Invoice and payment endpoints use the Version header 2021-07-28, while conversations endpoints use 2021-04-15. Invoice endpoints take altId set to the location id and altType set to location. List endpoints page with limit plus offset, so page through them rather than assuming the first page is everything, and be careful that the totals reflect all pages in the selected range. Persist the outreach drafts and their status in the app so the review queue survives a refresh.
What it does
- Pick any start and end date and see collected, outstanding and overdue totals side by side, with a simple trend of the payments that actually landed in that window
- Breaks down what you are owed into 0-30, 31-60 and 60-plus day aging buckets, so you can tell a slow payer from a real problem
- Gives you a sortable invoice table with customer, amount, issue date, due date, days overdue and status, filterable to unpaid or overdue only, plus a separate tab of recent payment transactions for reconciling against your bank
- Opens each invoice with its line items next to that customer's recent message history, so you can see whether anyone has already chased them before you do
- Includes a Draft collections outreach button that hands your selected overdue invoices to a background assistant, which writes a nudge for each one that gets firmer the later the invoice is. Every draft waits in a review queue for you to edit and send
What you’ll need
- A GoHighLevel or LeadConnector login with access to the sub-account whose money you want to track
- Invoicing already in use in that sub-account, so there are invoices and payments to read
- Access to contacts and conversations in the same sub-account if you want customer message history and outreach drafting
How to customize it
- Change the aging buckets if your business thinks in different windows, for example 0-15, 16-45 and 45-plus days
- Set the date range the dashboard opens on, such as this month, this quarter or the last 90 days
- Adjust when the outreach tone escalates and how firm the final stage gets, so the wording matches how you actually talk to customers
- Decide which invoice statuses count as outstanding for your totals
Use cases
- AI Reports
- Content Generation