A morning pipeline board for your GoHighLevel deals

By General Input

See every open deal as a card, spot the ones going stale, and move, edit or reply to them without opening the CRM.

Integrations

  • LeadConnector
  • GoHighLevel

Type

App

Categories

  • Sales
  • Operations

Build me a pipeline review board for my GoHighLevel opportunities that my sales manager and reps open every morning instead of clicking through the CRM. It should be a live board they work out of and act in, not a report.

The main view is a kanban board. I pick a pipeline, and the columns are that pipeline's stages in order. Load the pipeline list and its stages with LeadConnector Get Pipelines, and load the deals with LeadConnector Search Opportunities scoped to the selected pipeline. Default the board to open opportunities only, and make both the pipeline selection and that open-only default adjustable in the app.

Each card is one opportunity and shows the contact name, the deal value, the owner, and how many days it has been sitting in its current stage. Compute days in stage from the opportunity's last stage change timestamp when the record carries one, and fall back to its last updated or created timestamp when it does not, so the number is never blank. Cards that have been in stage longer than a threshold I set get visually flagged as stale; default the threshold to 14 days and let me change it. Each column header shows the stage name, the number of cards in it, and the total deal value sitting in that column, so I can see where the money is stuck.

I can filter the whole board two ways: by assigned user, and to stale-only. Important constraint: there is no operation to enumerate users on either connection, so build the owner filter from the distinct assigned-user values present on the opportunities you have loaded rather than trying to fetch a user directory. Show whatever owner name or identifier the opportunity payload carries. Filters apply across every column at once and the column totals recalculate to match what is visible.

Dragging a card to another column moves the deal to that stage by calling LeadConnector Update Opportunity. I can also edit a card's value or its status inline without opening anything, using the same Update Opportunity operation. Update the card optimistically so the board feels immediate, and roll the card back to its previous column or value with a clear error if the write fails.

Clicking a card opens a side panel for that deal's contact. Load the contact record with GoHighLevel Contacts: Get Contact, find their conversation with GoHighLevel Conversations: Search Conversations, and pull the recent message history with GoHighLevel Conversations: Get messages by conversation id, newest last so it reads like a thread. I want to see what was actually said before I act. The panel also has a box to write a note, saved with GoHighLevel Contacts: Create Note, and a box to send the contact a message, sent with GoHighLevel Conversations: Send a new message, both without leaving the board.

Every card also gets a Prep this deal button that kicks off a background agent for that one deal. The agent reads the contact's conversation history through Conversations: Search Conversations and Conversations: Get messages by conversation id, looks the company up on the web, and writes a short brief covering who they are, what they asked about, what is blocking the deal, and a suggested next step. Keep the brief short enough to read right before a call. Save it as a note on the contact with GoHighLevel Contacts: Create Note so it lives on the CRM record, and also surface it in the app on the card and in the side panel so the rep can read it without digging. Show the button's running state on the card and refresh the brief into view when the agent finishes.

Two connection details to get right. GoHighLevel is represented by two services that share one OAuth surface: pipeline and opportunity operations live only on the LeadConnector connection, while contacts and conversations operations live on the GoHighLevel connection, so the app needs both. There is no operation to enumerate sub-accounts, so scope the app to a single sub-account, or location, connection.

Two API details to bake in. Every request needs a Version header, and the value differs by area: send 2021-07-28 for opportunity and contact requests, and 2021-04-15 for conversation requests. Opportunity search uses cursor-based pagination, so page through it until the pipeline is fully loaded rather than showing only the first page, and keep the board responsive while that happens.

Persist the pipeline selection, the stale threshold, and the open-only setting so the board comes back the way each person left it. Everyone sees the same pipeline; the owner and stale filters are per-person view state.

Related prompts

Explore more prompts
Win back no-show and cancelled appointments every morningA client health board for your GoHighLevel sub-accountsAn appointment show-rate board for your GoHighLevel front deskA revenue and receivables dashboard for GoHighLevelFill tomorrow's empty GoHighLevel slots before they go to wasteAlert your team when GoHighLevel messages go unansweredTurn new GoHighLevel bookings into rep-ready pre-call briefsTriage new GoHighLevel conversations and draft the replyRe-engage dormant GoHighLevel contacts with personal messagesEnrich and score new LeadConnector leads, alert sales on hot ones