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
- A Propera account on the Pro or Business plan, and a Propera API key (Step 1).
- A GoHighLevel sub-account with custom fields for the address, property details, and the results (ARV, summary, notes).
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.
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
- Method/URL: POST to
https://getpropera.com/api/v1/arv - Headers:
X-API-Key= your key,Content-Type=application/json - Body (JSON / custom data): map the contact's fields:
{
"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"
}
Enable Save response from this Webhook so the JSON comes back into the workflow. (See the GoHighLevel Custom Webhook docs.)
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
| Field | Value | Required |
|---|---|---|
address | The contact's full address (street, city, state, ZIP) | Always |
property_type | sfh, condo, townhouse, manufactured, or land (case-insensitive) | Always |
bedrooms | Number of bedrooms | Residential |
bathrooms | Number of bathrooms | Residential |
year_built | Year the property was built | Residential |
sqft | Living area for residential, or lot size for land | Always |
comp_radius | Search radius in miles (residential up to 15, land up to 50) | Always |
lot_size_unit | sqft or acres | Land only |
Response fields
| Field | Description |
|---|---|
success | true on success, false on failure (branch on this) |
arv | The after-repair value estimate |
arv_confidence | Confidence in the ARV (high / medium / low) |
summary_text | One-line summary for a notes field |
comp_count | Number of comparables used |
price_per_sqft | Average price per square foot |
run_url | Link to the saved run in Propera |
error | On failure, a human-readable reason |
error_code | On failure, a machine-readable code (see Troubleshooting) |
Troubleshooting
| error_code | What it means | Fix |
|---|---|---|
INSUFFICIENT_COMPS | Not enough comps at that radius | Widen comp_radius (residential up to 15 mi, land up to 50 mi) |
NO_USABLE_COMPS | Comps were found but none passed the filters | Widen comp_radius (residential up to 15 mi, land up to 50 mi) |
ADDRESS_NOT_FOUND | The address could not be matched | Include a street number; for rural roads try an alternate name |
PLAN_NOT_ELIGIBLE | Your plan doesn't include API access | Upgrade to Pro or Business |
UNAUTHORIZED | The API key is missing, wrong, or revoked | Check the X-API-Key header |
Ready to auto-underwrite your GoHighLevel pipeline?
Generate your API key and build the workflow in minutes.
Get Started