Marketing platform with CRM features

GoHighLevel

Not a CRM - fails on actual close date, schedulable activity types, opportunity reporting

Every verdict, with its evidence

Core objects

In full

Contact (person), Company, Opportunity and Task are separate record types. Opportunity create/update requires contactId; a help article confirms native Opportunity-to-Company association out of the box, no custom object setup needed.

Source: https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/, https://help.gohighlevel.com/en/support/solutions/articles/155000004033-associations-for-custom-objects, https://help.gohighlevel.com/support/solutions/articles/48001223777-company-object-feature-a-manual-way-to-organize-contacts

Verification: Verified

Pipeline stages

In full

Opportunities carry a pipelineStageId. The pipeline editor lets users rename stages, reorder them, add new stages, or delete existing ones, so stage order is a set property on the pipeline's data.

Source: https://help.gohighlevel.com/support/solutions/articles/155000001982-understanding-pipelines, https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/

Verification: Verified

Status

In part

The opportunity's status field (open, won, lost, abandoned) is a distinct property from pipelineStageId in every schema seen - webhook payloads and the create/update API carry both as separate keys.

That field's own values are not open/closed alone - they also carry won and lost (see resolution notes), so it is a single non-overlapping tri-state mechanism rather than a dedicated status-only attribute. Amended 4 Sep 2026: this scores in part, not in full.

Source: https://raw.githubusercontent.com/GoHighLevel/highlevel-api-docs/main/docs/webhook%20events/OpportunityStatusUpdate.md, https://marketplace.gohighlevel.com/docs/ghl/opportunities/update-opportunity/

Verification: Verified

Resolution

In part

The single status field itself holds the values open, won, lost or abandoned - a single field carrying won/lost, matching the Yes case rather than stage metadata.

Because status and resolution are read from that same single field rather than from two dedicated attributes, this also scores in part, not in full. Amended 4 Sep 2026.

Source: https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/

Verification: Verified

Value

In full

monetaryValue is a native numeric field on the opportunity create/update API.

Source: https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/

Verification: Verified

Scope of work

In part

The opportunity API has no products/line-item array - only name, monetaryValue and customFields. The custom-fields help article explicitly says there is no line-item or price-book mechanism; SKUs would go in a free-text custom field.

Source: https://help.gohighlevel.com/support/solutions/articles/155000000521-how-to-use-custom-fields-for-opportunities, https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/

Verification: Verified

Expected close date

In full

forecastExpectedCloseDate is a native, documented field on opportunity create/update, accepting several date formats.

Source: https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/

Verification: Verified

Actual close date

Not at all

The full create/update opportunity schema lists only forecastExpectedCloseDate; no won/actual close-date field exists anywhere in the documented fields.

Source: https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/, https://marketplace.gohighlevel.com/docs/ghl/opportunities/update-opportunity/

Verification: Verified

Opportunity owner

In full

assignedTo is a native user-reference field on the opportunity, settable and updatable independent of who created the record.

Source: https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/

Verification: Verified

Linked buyer

In full

contactId is a required field when creating an opportunity, linking it to a Contact (person) record separate from the Company association.

Source: https://marketplace.gohighlevel.com/docs/ghl/opportunities/create-opportunity/

Verification: Verified

Record preservation

In full

Lost and won opportunities stay filterable in the list view, and dedicated dashboard widgets (Won/Lost Opportunities, Won/Lost Opportunity Value) report on them - closed records are retained and feed reporting.

Source: https://help.gohighlevel.com/support/solutions/articles/155000002000-opportunities-faqs, https://help.gohighlevel.com/support/solutions/articles/155000008109-opportunities-widgets-in-dashboards-reports

Verification: Verified

Structured lost reasons

In full

Lost Reason is a structured, editable list of values (managed like a custom field) rather than free text, and a dedicated "Lost Opportunities By Reason" report widget confirms it is countable out of the box.

Source: https://help.gohighlevel.com/support/solutions/articles/155000002000-opportunities-faqs, https://help.gohighlevel.com/support/solutions/articles/155000008109-opportunities-widgets-in-dashboards-reports

Verification: Verified

Email sync

In full

Vendor help articles for both Gmail and Outlook describe genuine two-way sync: emails sent from the CRM appear in the connected mailbox's Sent folder, and replies in the mailbox sync back into the CRM thread.

Source: https://help.gohighlevel.com/support/solutions/articles/48001235216-how-to-set-up-two-way-email-sync-for-gmail, https://help.gohighlevel.com/support/solutions/articles/48001229663-two-way-email-sync-for-outlook

Verification: Verified

Calendar sync

In full

The Google Calendar integration article states explicit two-way, real-time sync between HighLevel and Google Calendar.

Source: https://help.gohighlevel.com/support/solutions/articles/155000002369-integrating-google-with-highlevel-calendars

Verification: Verified

Schedulable activity types

Not at all

Two separate vendor enumerations of scheduling fields - the Task webhook schema and the Appointment workflow filter fields - list title/description/due date/assignee and start/end/status only. Neither documents a type field, buyer-defined or fixed.

Source: https://help.gohighlevel.com/support/solutions/articles/155000005529-unified-task-management-across-contacts-and-opportunities, https://help.gohighlevel.com/support/solutions/articles/155000004050-if-else-workflow-action-appointment-filter-options

Verification: Verified

Opportunity reporting

Not at all

GoHighLevel's "Conversion Rate" widget is not a win rate - it was never built to be one. The vendor defines it as leads in WON status divided by all leads that opted in - lost opportunities aren't factored in at all, and sit undifferentiated in that same denominator alongside still-open ones. GoHighLevel's own documentation never uses the phrase "win rate"; it names and defines this as a Conversion Rate, using lead-generation vocabulary ("leads," "opt-in") rather than sales-pipeline vocabulary. That is the tell: this is a marketing lead-to-customer conversion metric, not a sales win-rate metric wearing the wrong formula. It answers "what share of everyone who opted in eventually became a customer," a top-of-funnel marketing question, not "of the deals we've actually decided, how many did we win," the sales question this requirement asks. A pipeline winning 5 of 25 decided deals (a real 20% win rate, won รท (won+lost)) reports the same 5% on this widget as a pipeline that has decided nothing, if 75 more leads are sitting lost or open in it - because the widget was never measuring decided outcomes to begin with. The vendor's separate 17-widget report list (counts, sums, a status distribution) has no stage-to-stage or win/loss conversion metric of its own either.

The requirement isn't failed because GoHighLevel calculated win rate incorrectly - it's failed because GoHighLevel doesn't offer a win-rate metric. What it offers instead is a genuinely useful marketing number, just not this one. That the platform's flagship pipeline metric is built and named around a marketing KPI rather than a sales one reinforces this evaluation's broader read: GoHighLevel is a marketing/lead-generation platform with CRM features layered on top, not the reverse.

Source: https://help.gohighlevel.com/support/solutions/articles/48001152117-dashboard-opportunities-pipeline-value-conversion-rate-funnel-stages-distribution, https://help.gohighlevel.com/support/solutions/articles/155000008109-opportunities-widgets-in-dashboards-reports

Verification: Verified