Case study
TechKnow
A CRM and marketing reporting console built on GoHighLevel

Overview
- Industry
- Marketing and CRM
- Status
- Live
- Technology
- React 19, TypeScript, Hono, SQLite, TanStack Query, Recharts, GoHighLevel API
Our own console for agency client work: GoHighLevel contacts, pipelines and calls next to GA4, Search Console, Meta Ads and Google Business Profile reporting, in one place.
- Pipeline board, contacts and call recordings from GoHighLevel
- GA4, Search Console, Meta Ads and Business Profile reporting
- Tokens encrypted at rest; failed deploys roll back automatically
The brief
Agency teams were switching between GoHighLevel, Google Analytics, Search Console, Meta Ads and Google Business Profile for every client. We wanted one console that shows a client’s pipeline and marketing results together, and works for clients who do not use GoHighLevel at all.
What we built: one CRM and reporting console
CRM views over GoHighLevel
Contacts, a pipeline board where deals are dragged between stages or marked won or lost, and a call log with recording playback and transcripts. Recordings stream through the server, so client tokens never reach the browser.
Reporting for every client
- Google Analytics 4: sessions, users, key events, channels and pages.
- Google Search Console: clicks, impressions, click-through rate, position, queries and pages.
- Meta Ads: spend, clicks, leads and cost per lead by campaign.
- Google Business Profile: performance, reviews with alerts, and profile editing.
Social scheduling and setup checklists
Facebook and Instagram posts publish automatically on schedule, and other channels are tracked as reminders. A per-client checklist shows what is connected and what is missing, and a CRM checklist tracks about 64 standard CRM features and who provides each one.
How we worked
We researched the GoHighLevel API before designing the console, and documented the decisions. Client tokens are encrypted at rest. Every push to main deploys automatically: destructive database migrations are refused, the database is backed up before migrations run, and a failed health check rolls the release back on its own.
Where it stands
The console is live on our own infrastructure and under active development. It is the kind of internal tool we build for clients: one place for the data a team checks every day.
Send a message
Planning something similar?
A short brief is enough. Someone who can answer technical questions replies within one business day. Prefer to talk? Call us.

