> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goliathdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 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).

<Note>
  This webhook is only sent if your account is configured to receive webhook events. Contact your Goliath account manager to enable it.
</Note>

## 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

<Info>
  All data below is mock data for documentation purposes only.
</Info>

```json theme={null}
{
  "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](/catalyst-summary) | Details about the triggering signal    |
| `property`      | [Property](/types/types#property)  | Enriched property and ownership data   |

***

## Type Reference

All types used in this payload are documented on the [Types](/types/types) page.

| Type                                 | Description                                |   |
| ------------------------------------ | ------------------------------------------ | - |
| [CatalystEvent](/catalyst-event)     | The trigger signal                         |   |
| [CatalystSummary](/catalyst-summary) | Parsed contents of `catalystEvent.summary` |   |
| [Property](/property)                | Full property object                       |   |
| [PropertyMetrics](/property-metrics) | Valuation and physical details             |   |
| [Parcel](/parcel)                    | Legal and assessor data                    |   |
| [Owner](/owner)                      | A single owner entry                       |   |
| [SkipTrace](/skip-trace)             | Contact bundle attached to an owner        |   |
| [SkipTraceResult](/skiptrace-result) | An individual in the expanded people graph |   |
| [Phone](/phone)                      | Phone number with type and ranking         |   |
| [Email](/email)                      | Email address with ranking                 |   |

***

## Notes

* **Opt-in only** — you will only receive this payload if your account is configured for webhook delivery.
* **`summary` must be parsed** — it is a stringified JSON object, not a nested object. Call `JSON.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 be `null` or empty arrays.
* **Relatives included** — `skipTraceResults` may include relatives of the owner, not just the owner themselves. Use `isRelative` to filter.
