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

# Triggers

> Events in Goliath that can start a Zap.

Triggers let your Zaps react to things that happen inside Goliath. When the
event you're watching for happens, Zapier wakes up and runs the rest of
your Zap.

## Available triggers

### Contact Tag Added

Fires whenever a contact in your workspace gets a tag — whether the tag was
added by hand, by a Goliath workflow automation, or by another Zap.

You can either listen for **any tag** being added, or scope the trigger to a
**specific tag** so the Zap only fires when that tag is applied. Scoping is
the recommended pattern: it keeps your Zap quota lean and avoids re-running
on tags you don't care about.

<ParamField path="Tag" type="string" optional>
  The tag name to watch for. Leave empty to listen for any tag added to any
  contact in your workspace.
</ParamField>

#### What you'll see in the test step

When you set up the Zap, Zapier's **Test trigger** step will pull a sample
contact from your workspace and show you all the fields you can map into
later steps:

```json theme={null}
{
  "id": "8c1f2a04-...-9ab",
  "contact_id": "8c1f2a04-...-9ab",
  "contact_name": "Paul M Davis",
  "primary_phone": "+15555550123",
  "primary_phone_type": "MOBILE",
  "primary_email": "paul@example.com",
  "primary_address": "123 Main St, Austin, TX 78701",
  "phone_numbers": [
    {
      "phone_number": "+15555550123",
      "phone_type": "MOBILE",
      "verification_status": "VERIFIED",
      "ranking": 1
    }
  ],
  "emails": [
    {
      "email": "paul@example.com",
      "verification_status": "VERIFIED",
      "ranking": 1
    }
  ],
  "properties": [
    {
      "address": "123 Main St, Austin, TX 78701",
      "verification_status": "VERIFIED"
    }
  ],
  "tags": [
    {
      "tag_name": "Hot Lead",
      "tag_type": "FREE_FORM",
      "value": "Hot Lead"
    }
  ],
  "contributors": [
    {
      "user_name": "Max Yuan",
      "role": "POINT_PERSON"
    }
  ],
  "seller_intent_score": 87
}
```

#### Field reference

| Field                 | Type   | Notes                                                                                                        |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------ |
| `contact_id`          | string | The Goliath contact ID. Use this to look the contact up later or pass it into the **Update Contact** action. |
| `contact_name`        | string | The contact's full name, title-cased.                                                                        |
| `primary_phone`       | string | The contact's best phone number. Empty if none on file.                                                      |
| `primary_phone_type`  | string | `MOBILE`, `RESIDENTIAL`, or `UNKNOWN`.                                                                       |
| `primary_email`       | string | The contact's best email. Empty if none on file.                                                             |
| `primary_address`     | string | The contact's primary linked property address.                                                               |
| `phone_numbers[]`     | list   | Every phone on file, with type and verification status.                                                      |
| `emails[]`            | list   | Every email on file, with verification status.                                                               |
| `properties[]`        | list   | Every linked property address.                                                                               |
| `tags[]`              | list   | Every tag and custom field value on the contact.                                                             |
| `contributors[]`      | list   | Every Goliath user assigned to the contact.                                                                  |
| `seller_intent_score` | number | Goliath's seller-intent score (0–100), if available.                                                         |

<Note>
  The `primary_phone`, `primary_email`, and `primary_address` fields are
  flattened versions of the highest-ranked entry in their respective lists,
  so you can drag them straight into a Slack message or email body without
  digging into an array.
</Note>

Zapier handles the subscription automatically when you turn the Zap on or
off — there's nothing to manage on the Goliath side.

## Common patterns

* **Push hot leads to Slack.** Trigger on tag = `Hot Lead`, action = Slack
  *Send Channel Message*. Map `contact_name`, `primary_phone`, and
  `seller_intent_score` into the message body.
* **Sync contacts to a CRM.** Trigger on tag = `Synced`, action = your
  CRM's *Create Contact*. Use the email and phone fields to fill the
  record.
* **Email a stakeholder.** Trigger on tag = `Needs Review`, action = Gmail
  *Send Email* with a digest of the contact's properties and intent score.

## Limitations

* Only the **Contact Tag Added** event is currently supported. Property,
  deal, note, and task events are not exposed to Zapier yet.
* The trigger fires across your whole workspace — you can't filter by
  user, contributor, or pipeline today. Use a tag to narrow it.
