Webhooks / Catalyst Property Event
Catalyst Property Event
Shared type definitions used across Goliath webhook payloads.
Triggered when a configured catalyst signal is detected on a property (e.g. pre-probate, foreclosure).
Overview
When a catalyst event is detected, Goliath sends a POST request to your configured webhook URL.
The payload includes:
- Event metadata (version, timestamp)
- Catalyst signal details
- Property details and valuation
- Ownership data
- Skip tracing results (phones, emails, relatives)
Example Payload
{
"version": "2026-01-21",
"triggeredAt": "2026-03-19T14:00:48.135Z",
"catalystEvent": {
"type": "PREPROBATE",
"summary": "{\"city\":\"Springfield\",\"deceasedAge\":\"99\",\"deceasedDate\":\"January 1, 2026\",\"deceasedName\":\"John Doe\"}",
"publicationDate": "2026-03-19",
"url": "https://example.com/fake-preprobate-record.json"
},
"property": {
"url": "https://app.example.com/properties/123-main-st",
"address": "123 MAIN ST, SPRINGFIELD, USA 00000",
"metrics": {
"zestimate": 123456,
"beds": 3,
"baths": 2,
"livingAreaSqFt": 1500,
"lotSizeAcres": 0.15,
"propertyType": "SINGLE_FAMILY",
"yearBuilt": 1900,
"occupancyStatus": "OWNER_OCCUPIED",
"estimatedTax": 1234.56,
"estimatedPrice": 120000,
"estimatedRent": 1500,
"lastSaleAmount": 50000,
"lastSaleDate": "2000-01-01",
"nameOnTitle": "DOE, JOHN; DOE, JANE",
"ownerMailingAddress": "PO BOX 123, SPRINGFIELD, USA 00000"
},
"parcel": {
"apn": "000-FAKE-APN",
"countyFips": "00000",
"legalDescription": "LOT 1, BLOCK 1, FAKE SUBDIVISION",
"lotSqFt": 6500,
"lotAcres": 0.15,
"zoningCode": "FAKE-R1"
},
"owners": [
{
"type": "person",
"name": "john doe",
"nameOnDeed": true,
"skipTrace": {
"phones": [
{ "number": "5550000001", "type": "Mobile", "ranking": 1 },
{ "number": "5550000002", "type": "Residential", "ranking": 2 }
],
"emails": [
{ "email": "john.doe@example.com", "ranking": 1 },
{ "email": "jd@example.com", "ranking": 2 }
]
}
}
],
"skipTraceResults": [
{
"firstName": "John",
"lastName": "Doe",
"age": 99,
"deceased": true,
"isRelative": false,
"isNameOnDeed": true,
"ranking": 1,
"phones": [
{ "number": "5550000001", "type": "Mobile", "ranking": 1 }
],
"emails": [
{ "email": "john.doe@example.com", "ranking": 1 }
]
},
{
"firstName": "Jane",
"lastName": "Doe",
"age": 95,
"deceased": false,
"isRelative": true,
"isNameOnDeed": true,
"ranking": 2,
"phones": [
{ "number": "5550000003", "type": "Mobile", "ranking": 1 }
],
"emails": [
{ "email": "jane.doe@example.com", "ranking": 1 }
]
},
{
"firstName": "Jimmy",
"lastName": "Doe",
"age": 60,
"deceased": false,
"isRelative": true,
"isNameOnDeed": false,
"ranking": 3,
"phones": [
{ "number": "5550000004", "type": "Mobile", "ranking": 1 }
],
"emails": []
}
]
}
}
Payload Fields
| Field | Type | Description |
|---|---|---|
version |
string | Schema version of this webhook payload |
triggeredAt |
string (ISO 8601) | Timestamp when the event was triggered |
catalystEvent |
CatalystEvent | Details about the triggering signal |
property |
Property | Enriched property and ownership data |
Type Reference
All types used in this payload are documented in the Types section.
| Type | Description | |
|---|---|---|
| CatalystEvent | The trigger signal | |
| CatalystSummary | Parsed contents of catalystEvent.summary |
|
| Property | Full property object | |
| PropertyMetrics | Valuation and physical details | |
| Parcel | Legal and assessor data | |
| Owner | A single owner entry | |
| SkipTrace | Contact bundle attached to an owner | |
| SkipTraceResult | An individual in the expanded people graph | |
| Phone | Phone number with type and ranking | |
| Email address with ranking |
Notes
- Opt-in only — you will only receive this payload if your account is configured for webhook delivery.
summarymust be parsed — it is a stringified JSON object, not a nested object. CallJSON.parse()on it before accessing its fields.- Ranking — lower
ranking= higher confidence across phones, emails, and skip trace results. - Partial data — some fields (emails,
ownerMailingAddress, etc.) may benullor empty arrays. - Relatives included —
skipTraceResultsmay include relatives of the owner, not just the owner themselves. UseisRelativeto filter.