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.
| Metric | Starting definition | Check before publishing |
|---|---|---|
| New contacts | Distinct 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 value | Value 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 value | Value 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. |
| Appointments | Distinct calendar events within the reporting window and selected calendars. | Agree how cancellations, reschedules, duplicates, and timezones should be handled. |
| Inbound call activity | Distinct 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 submissions | Distinct 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.