Account health board that puts product usage next to your CRM

By General Input

Your customer success team opens one board where every account's logins, seats and usage trend sit beside its owner, plan and renewal date.

Integrations

  • Looker
  • HubSpot
  • Slack Bot

Type

App

Categories

  • Sales
  • Customer Support

Build an account health board for our customer success team. Right now product usage lives in Looker and account context lives in HubSpot, and nobody joins them, so a CSM preparing for a weekly account review opens two tools and reconciles them by hand. This app is the joined view: one row per customer account, the HubSpot fields on the left, the Looker usage numbers on the right, sorted so the accounts in trouble float to the top.

Start with a setup screen, because the join between the two systems is the thing that makes or breaks this app. Do not assume names match across Looker and HubSpot. Let an admin configure: which HubSpot company property holds the account identifier that Looker knows the customer by (for example a numeric account id property, or the company domain), the Looker model and explore to query, the Looker dimension holding that same account identifier, and the measures to read for logins, active seats and any usage total. Let the admin also pick the Slack channel the customer success team watches. Persist this configuration for the whole workspace, and show a clear warning on the board if it has not been filled in yet. Offer Search Looks so the admin can browse saved Looks and pick one by name instead of hand building a query, and support both paths: a saved Look run with Run Look, or a query the app composes with Run Inline Query.

The board lists our customer accounts from HubSpot using Search Companies, filtered to actual customers using whichever lifecycle stage or customer flag property the admin points at. Show company name, owner, plan, renewal date and the configured account identifier on each row. Resolve HubSpot owner ids to human names with List Owners.

For each visible account show logins, active seats and a usage trend. Fetch these from Looker with a single Run Inline Query covering the whole visible page of accounts rather than one query per row: filter the configured account identifier dimension to the set of identifiers on screen, group by that dimension and by week or month, pull the measures back in one call, then join the returned rows to the HubSpot companies inside the handler. Compute the trend as the change between the most recent complete period and the prior one, render it as a small sparkline plus an up or down percentage, and make every usage column sortable. Default the sort to steepest decline first, so the accounts losing usage are the first thing on screen. Add visible risk badges for accounts with zero logins in the current period and for accounts whose renewal date falls inside the next ninety days.

The board is per user. On load, match the logged in viewer to a HubSpot owner by email address using List Owners, and default the board to the accounts that owner owns. Put a clear toggle in the header to switch to the whole book of business, and remember each viewer's last choice. If the viewer's email does not match any HubSpot owner, fall back to the whole book and say plainly why.

Clicking a row opens a detail view for that account. On one side show that account's Looker usage history for the last twelve months as a chart plus a table of periods, fetched with the same Run Inline Query pattern scoped to the single account identifier, or with Run Look when the admin configured a saved Look. On the other side show the HubSpot company properties that matter for a review: owner, plan, renewal date, lifecycle stage, employee count, last activity date and any custom health fields. Below both, list the health briefs already written for this account, newest first.

Put a Research this account button on every row and on the detail view. It kicks off a background agent scoped to that one account. The agent pulls that account's usage history from Looker with Run Inline Query or Run Look, reads the full HubSpot company record, and writes a short health brief of roughly two hundred words covering the usage trend in plain language, the risk signals it can actually see in the data, and one suggested next step for the account owner. It then files the brief onto the company record using HubSpot Create Note associated with that company id, and posts it to the configured customer success channel using Slack Bot Send a Message, naming the account and its owner so the right person sees it, with the trend summary and a link back to this app.

Show the agent's progress on the row that started it. When it finishes, store the brief in the app so it appears in the account detail view and in a briefs list without anyone opening HubSpot or Slack, keeping the brief text, who ran it and when.

Practical notes: cache each board load's usage numbers for a few minutes and give the user a manual refresh button, since the Looker queries are the slow part. Handle accounts whose configured identifier property is blank by showing them in a separate group labelled as not linked to usage data rather than dropping them silently, because that list is exactly what the admin needs to fix. Show honest empty states when Looker returns no rows for an account instead of rendering a zero that looks like real data.

Related prompts

Explore more prompts
A 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 reasoniMessage campaign console with pre-flight checks and delivery boardLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsA searchable RFP answer library your bid team drafts fromLinkedIn Ads budget pacing dashboard for every client account