Agency reporting guide

Define the metric
before you build the chart.

A practical dictionary for GoHighLevel contacts, opportunities, appointments, and inbound calls.

Start with a definition you can check

For each metric, write down the source dataset, unique record key, date field, included statuses, location scope, and exclusions. Then check a small group of source records against the result. This helps different client teams use the same language without erasing meaningful differences in their sales processes.

MetricStarting definitionCheck before publishing
New contactsDistinct contact IDs created during a defined period, grouped by location.A contact is not necessarily a new or qualified lead. Incremental contact extraction does not capture later edits.
Current pipeline valueValue of opportunities in the included current statuses and pipelines.Document which statuses qualify. A current snapshot cannot answer “what was the pipeline last month?” without saved history.
Won opportunity valueValue attached to opportunities classified as won under an agreed definition.Opportunity value is not verified cash collected. Reconcile revenue against a payment or finance source if needed.
AppointmentsDistinct calendar events within the reporting window and selected calendars.Agree how cancellations, reschedules, duplicates, and timezones should be handled.
Inbound call activityDistinct inbound call records in the supported call stream.Define answered/missed classifications using the returned statuses. The hosted stream does not include all outbound calls, SMS, or email.
Form submissionsDistinct submission events for the forms and locations in scope.A submission count is not a conversion rate without a defined denominator, such as visits from a separately connected analytics source.

Keep counts and rates separate

For a conversion rate, name both the numerator and denominator. Decide whether they refer to the same group of leads over time or simply activity inside the same calendar period. A ratio of this month’s wins to this month’s new contacts may combine different groups and give a misleading result.

Respect snapshot limitations

Some datasets are refreshed in full because their records change. That gives you a current view, but replaces earlier state. Stage-duration, velocity, and historical pipeline reports need a deliberate approach to saving snapshots or collecting change events outside the default extraction tables.

Build a small reporting contract

Record the definition, source owner, reporting timezone, expected freshness, and last validation date beside each important metric. Revisit the contract when a client changes its GHL pipeline or workflow. The dataset catalogue explains what the current connector can supply.

For help turning definitions into BigQuery models and client reports, discuss a managed reporting plan.