Integrations / GoHighLevel

Connect GoHighLevel to Propera

Auto-underwrite every new GoHighLevel lead using a native workflow webhook, no Zapier or third-party tool required. When a contact is ready, GoHighLevel calls Propera and writes the ARV, comps, and Zillow links back onto the contact.

Loom walkthrough goes here (embed coming soon).

Overview

GoHighLevel's Custom Webhook workflow action can POST to Propera's API and, with Save response from this Webhook enabled, make Propera's JSON response available to later steps, which you map into custom fields on the contact. Fully native, no extra automation tool.

What you'll build

One workflow: trigger (tag or pipeline stage) → Custom Webhook (Propera) → Update Contact with the returned values.

Before you start

Step 1 — Generate your Propera API key

In Propera, go to Account Settings → API Keys, click Generate API Key, name it (for example GoHighLevel), and copy it. It's shown only once.

Screenshot: the API Keys card in Account Settings.

Step 2 — Create a workflow with a "ready" trigger

In Automation, create a workflow triggered by a deliberate signal, for example a tag like Run ARV being added, or a contact entering a pipeline stage. That keeps the analysis from running before the contact's fields are filled in.

Step 3 — Add a Custom Webhook action

{
  "address": "{{contact.address}}",
  "property_type": "{{contact.property_type}}",
  "bedrooms": "{{contact.bedrooms}}",
  "bathrooms": "{{contact.bathrooms}}",
  "sqft": "{{contact.square_footage}}",
  "year_built": "{{contact.year_built}}",
  "comp_radius": "5"
}
Wrap the field tokens in quotes, including the numbers. If a contact field is empty when the workflow runs, an unquoted token would produce invalid JSON. Quoting keeps the body valid; Propera reads the numbers either way.

Enable Save response from this Webhook so the JSON comes back into the workflow. (See the GoHighLevel Custom Webhook docs.)

Custom Webhook is one of GoHighLevel's premium workflow actions, confirm premium workflow actions are available on your GoHighLevel plan.

Step 4 — Write the result back to the contact

Add an Update Contact action after the webhook and map the saved response values into custom fields: arv into your ARV field, summary_text into a summary field, run_url into a link field. On a failure response, write error into a notes field. Use the response's success value with an If/Else condition to choose which path runs.

Request fields

FieldValueRequired
addressThe contact's full address (street, city, state, ZIP)Always
property_typesfh, condo, townhouse, manufactured, or land (case-insensitive)Always
bedroomsNumber of bedroomsResidential
bathroomsNumber of bathroomsResidential
year_builtYear the property was builtResidential
sqftLiving area for residential, or lot size for landAlways
comp_radiusSearch radius in miles (residential up to 15, land up to 50)Always
lot_size_unitsqft or acresLand only

Response fields

FieldDescription
successtrue on success, false on failure (branch on this)
arvThe after-repair value estimate
arv_confidenceConfidence in the ARV (high / medium / low)
summary_textOne-line summary for a notes field
comp_countNumber of comparables used
price_per_sqftAverage price per square foot
run_urlLink to the saved run in Propera
errorOn failure, a human-readable reason
error_codeOn failure, a machine-readable code (see Troubleshooting)

Troubleshooting

error_codeWhat it meansFix
INSUFFICIENT_COMPSNot enough comps at that radiusWiden comp_radius (residential up to 15 mi, land up to 50 mi)
NO_USABLE_COMPSComps were found but none passed the filtersWiden comp_radius (residential up to 15 mi, land up to 50 mi)
ADDRESS_NOT_FOUNDThe address could not be matchedInclude a street number; for rural roads try an alternate name
PLAN_NOT_ELIGIBLEYour plan doesn't include API accessUpgrade to Pro or Business
UNAUTHORIZEDThe API key is missing, wrong, or revokedCheck the X-API-Key header

Ready to auto-underwrite your GoHighLevel pipeline?

Generate your API key and build the workflow in minutes.

Get Started