Case study · CRM → Data governance

GoHighLevel CRM Architecture

Workflows, pipelines, calendars and platform integrations — rebuilt so that the CRM stopped being a contact list and started being the single source of truth.

The Migration · 2026

GoHighLevelWorkflow AutomationPipelinesCalendarsAPI IntegrationSSOT DesignData Governance

Nobody puts "cleaned up the custom fields" on a highlight reel. But every number in the other three case studies exists because this work happened first.

01

The problem

A CRM that recorded activity, not outcomes

Leads arrived from half a dozen places and were worked in half a dozen ways. Custom fields meant different things to different people, pipeline stages were skipped, and outcomes often were not recorded at all — so the CRM could tell you what happened to a contact but not what any of it was worth.

02

What I built

The CRM as the single source of truth

A full architecture rebuild in GoHighLevel: a normalised custom-field schema, one canonical pipeline with enforced stage progression, calendars wired to the right teams, automations covering the whole lead lifecycle, and every acquisition platform integrated so a lead arrives already attributed.

03

The result

Everything downstream became possible

This is the unglamorous project that made the visible ones work. Reliable outcome capture is what let show rate be measured and then lifted, and consistent source attribution is what let the intelligence platform report on channel performance at all.

6
Platforms integrated into one record
1
Canonical pipeline, enforced
100%
Consultations with a recorded outcome
12
Person marketing team on one schema

Platforms integrated

The goal of every integration was the same: a lead should arrive already knowing where it came from, so that attribution is a property of the record rather than a reconciliation job someone does later.

Meta Ads

Lead-gen forms and campaign attribution flow in via the Graph API, so paid leads arrive tagged with campaign, ad set and creative.

GA4

Session and behaviour data joined on the contact record, connecting on-site behaviour to what happened after the form submit.

Google Search Console

Query and ranking data feeding the organic side of attribution and content prioritisation.

Website & chatbot

All web enquiry paths land in one intake, normalised to the same schema as every other source.

Calendars

Counsellor availability per team and location, so booking and outcome events are captured against the right owner.

Streamlit platform

The CRM is the upstream source for the reporting layer — one schema in, one set of numbers out.

The lifecycle automations

Four workflow groups cover a lead from first touch to reconciled revenue. Each one exists to remove a place where data used to go missing.

Intake Capture & normalise Every enquiry routed to one intake schema, deduplicated, and stamped with its true source before anything else happens.
Routing Assign & notify Round-robin assignment by team, location and availability, with the owning counsellor notified immediately.
Nurture Sequence & remind Lifecycle sequences by lead type, including the booking reminders and confirmation step that lifted show rate.
Outcome Record & reconcile Consultation outcomes forced to be recorded at close, then reconciled against payments so revenue ties back to source.

One pipeline, enforced

The single most valuable governance decision was collapsing several ad-hoc pipelines into one canonical set of stages that cannot be skipped. Stage progression became trustworthy, which is the precondition for every drop-off number the business now reports.

Canonical pipeline stages

Each stage as a share of the one before it

New lead 1,232
100% of total
Booked 431
35% of previous stage
Attended 310
71.9% of previous stage
Initial requirements 198
63.9% of previous stage
Paid 97
49% of previous stage
View as table
StageCountStep rateOf total
New lead 1,232 100%
Booked 431 35% 35%
Attended 310 71.9% 25.2%
Initial requirements 198 63.9% 16.1%
Paid 97 49% 7.9%

Demo counts illustrating the stage structure.

Before this, "Attended" and "Initial requirements" were often the same click, so the stage where the most qualified leads were actually being lost did not exist as a measurable step at all.

What governance actually bought

Data governance sounds like overhead until you price what it unlocks. Three concrete examples from this build:

Record completeness, before and after the rebuild

Share of contact records with the field populated correctly

Source attributed
96%
96%
Outcome recorded
100%
100%
Owner assigned
99%
99%
Stage progression valid
94%
94%
View as table
FieldComplete
Source attributed96%
Outcome recorded100%
Owner assigned99%
Stage progression valid94%

Illustrative figures showing the direction and scale of the change.

  • Show rate became measurable. Forcing outcome capture at close is the entire reason the 68% → 82% story could be told — you cannot lift a number you cannot see.
  • Attribution became a property, not a project. Because source is stamped at intake, the intelligence platform reports channel performance without any manual reconciliation.
  • The model had honest features. A clean schema is what made it possible to audit which fields were leaking — you can only ask "when does this get written?" if the answer is consistent.

That is the argument for doing this work first. It produces no chart of its own, and then it produces every other chart.


← All projects