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

# HubSpot Integration

> Sync contacts, map owners, and log activity between Tuco and HubSpot. Native integration for Tuco AI iMessage automation — works alongside HubSpot, Salesforce.

## What You Get

* **Contact sync** — Import HubSpot contacts into Tuco with automatic deduplication
* **Owner mapping** — Map HubSpot contact owners to Tuco team members
* **Property mapping** — Sync custom HubSpot properties as tags or custom fields
* **Activity logging** — Log Tuco messages to HubSpot contact timelines
* **Campaign conditions** — Use HubSpot properties in campaign branching and stop conditions

## Connecting HubSpot

1. Go to **Integrations → CRM**
2. Click **Connect with HubSpot**
3. Authorize via OAuth (takes 30 seconds)
4. A full sync starts automatically

<Note>Only one CRM can be connected at a time. Disconnect GoHighLevel before connecting HubSpot.</Note>

## Contact Sync

### How it works

* **First sync** — imports all HubSpot contacts into a "HubSpot Import" list
* **Incremental sync** — every 15 minutes, syncs contacts modified since last sync
* **Deduplication** — contacts are matched by phone number; duplicates are merged, not created twice
* **Force re-sync** — click "Full Re-sync" to re-import everything from scratch

### What syncs

| HubSpot Field      | Tuco Field          |
| ------------------ | ------------------- |
| firstname          | First Name          |
| lastname           | Last Name           |
| email              | Email               |
| phone              | Phone               |
| company            | Company             |
| jobtitle           | Job Title           |
| hubspot\_owner\_id | Owner (via mapping) |

## Owner Mapping

Map HubSpot contact owners to Tuco team members so messages come from the right person.

1. Go to **Integrations → CRM → Owner Mapping**
2. For each HubSpot owner, select the matching Tuco team member
3. Click **Save & Re-sync**

### How owner resolution works

When syncing a contact, Tuco resolves the owner in this order:

1. **Manual mapping** — if you mapped this HubSpot owner to a Tuco member
2. **Email match** — if the HubSpot owner's email matches a Tuco member's email
3. **Fallback** — assigns to the earliest workspace member

Each lead shows how its owner was assigned (Mapped / Auto-matched / Fallback) in the lead detail page.

### When a new member joins

When a new team member joins your workspace, Tuco automatically reassigns leads where the HubSpot owner email matches the new member's email. No manual re-sync needed.

## Property Mapping

Sync any HubSpot contact property as a **tag** or **custom field** in Tuco.

1. Go to **Integrations → CRM → Property Mapping**
2. Select a HubSpot property (e.g. `lifecyclestage`, `industry`)
3. Choose target: **Tag** or **Custom Field**
4. Optionally add a prefix (e.g. prefix "stage" → tag "stage:lead")
5. Click **Save & Re-sync**

Custom fields synced from HubSpot are:

* Visible in lead detail and sidebar
* Available for campaign **branching** and **stop conditions**
* Usable as message variables

## Using HubSpot Data in Campaigns

### Stop conditions

* **HubSpot property** — stop a step if a property matches a value (e.g. `lifecyclestage = customer`)

### Branching

* **HubSpot property** — branch based on a property value

All checks call the **live HubSpot API** — not stale cached data.

### Available operators

When comparing HubSpot property values in stop conditions or branches, all standard operators are supported:

| Operator                | Label                   | Use case                   |
| ----------------------- | ----------------------- | -------------------------- |
| `eq`                    | equals                  | Exact match                |
| `neq`                   | not equals              | Exclude a value            |
| `contains`              | contains                | Partial text match         |
| `not_contains`          | does not contain        | Exclude partial match      |
| `starts_with`           | starts with             | Prefix match               |
| `gt` / `gte`            | greater than (or equal) | Numeric comparison         |
| `lt` / `lte`            | less than (or equal)    | Numeric comparison         |
| `gt_date` / `lt_date`   | after / before date     | Date comparison            |
| `exists` / `not_exists` | exists / is missing     | Check if field has a value |

### Goal Bot integration

HubSpot properties can be used as advance or exit conditions in [Goal Bots](/features/goal-bots). When a Goal Bot checks a HubSpot property, it calls the live API — the same way campaigns do.
