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

# Default and HubSpot: what syncs and what triggers

> See what Default reads from and writes to HubSpot, which objects start workflows, how Data sync and Watched fields work, what connecting needs, and how Default users map to HubSpot owners.

Default connects to HubSpot with a single HubSpot sign-in. Once connected, Default workflows start when
HubSpot contacts, companies, and deals are created or updated, read and write standard and custom
objects, log engagements, and set record owners from Default queues. Default can also import HubSpot
records into its own data every hour.

> [!NOTE]
>
> Select **Settings** in the sidebar, then **Connections** under **Workspace Settings**, and open
> **HubSpot**. Admin access is required.

## What Default supports in HubSpot

| Question | Answer | Where |
| - | - | - |
| Start a workflow when a record is created | Yes, for contacts, companies, and deals | **CRM Record Created** trigger |
| Start a workflow when a record is updated | Yes, for contacts, companies, and deals, on any update or only when chosen properties change | **CRM Record Updated** trigger |
| Start a workflow when a record is deleted, or when an association changes | No | |
| Create, update, and find records | Yes: Contact, Company, Deal, and custom objects | **Create Record**, **Update Record**, **Match Record** nodes |
| Log and update engagements | Yes: Note, Call, Meeting, Task, Email, and Postal mail | **Create Engagement**, **Match Engagement**, **Update Engagement** nodes |
| Associate 2 records | Yes, with a default or labeled association | **Create Association** node |
| Assign a record owner from a queue | Yes, by writing the owner property (`hubspot_owner_id`) | **Round-Robin** and **Update Record** nodes |
| Import records into Default | Yes: Company, Contact, and Deal, refreshed every hour | **Data sync** on the HubSpot page |
| Look up a contact from the Chrome extension | Yes, by email | [Chrome extension](/chrome-extension.md) |

Data sync and triggers only read from HubSpot. Default changes HubSpot records only when a workflow
node writes to them, or when someone confirms a `crm_write` update through the
[MCP server](/mcp-server.md) (Beta).

## Connect HubSpot to Default

**1. Open HubSpot**

Select the **HubSpot** card on the Connections page.

**2. Authorize the connection**

Select **Connect** and approve Default in the HubSpot authorization window. You don't create a
HubSpot app or use a developer account.

**3. You're connected**

The HubSpot page shows **Data sync** and **Watched fields**, and the HubSpot card on the
Connections page shows a check mark. Default also starts mapping members to
HubSpot owners by email.

If an earlier connection was left half-finished, **Connect** on the HubSpot page reads **Reconnect**.

## What connecting HubSpot needs

| Requirement | Why | If it's missing |
| - | - | - |
| The **Admin** role in Default | Only admins can open the HubSpot page, so connecting, disconnecting, and **Data sync** are admin-only. | Members see a message that they can only access calendar integrations. |
| A HubSpot user who can approve Default in the authorization window | Default reads and writes through the connection that user approves. | The connection isn't created. |
| A connection that includes HubSpot's email scope, for Email engagements | Reading HubSpot email properties needs an email scope. A connection made before Default asked for that scope doesn't have it. | Loading **Email** properties in an engagement node fails with "HubSpot emails require the connected-email-data-access scope. Reconnect HubSpot in Settings → Connections." |

Default's reads and writes go through the connection the approving HubSpot user created. Make sure that
user can see and edit every object and property your workflows use.

## HubSpot objects Default supports

| HubSpot object | Starts a workflow | **Create Record**, **Update Record**, **Match Record** | **Data sync** | Default record |
| - | - | - | - | - |
| **Contact** | Yes | Yes | Yes | Person |
| **Company** | Yes | Yes | Yes | Company |
| **Deal** | Yes | Yes | Yes | Opportunity |
| Custom objects | No | Yes | No | None |

Engagement nodes work with **Note**, **Call**, **Meeting**, **Task**, **Email**, and **Postal mail**.
For every node's fields, see [CRM nodes](/workflows/steps-crm.md).

To act on a HubSpot custom object when something changes, trigger on the related contact, company,
or deal, then find the record with **Match Record**.

## Workflow triggers from HubSpot

2 triggers start a workflow from a HubSpot record. Both appear once HubSpot is connected and use the
same fields:

| Field | What it does | Example |
| - | - | - |
| **CRM** | The connected CRM to watch. | **HubSpot** |
| **Record** | The HubSpot object to watch: **Contact**, **Company**, or **Deal**. | **Contact** |
| **Condition** | Optional. Only records that match start the workflow. | `Lifecycle Stage` is `Customer` |

* **CRM Record Created** fires when a new record of that object appears in HubSpot.
* **CRM Record Updated** fires when an existing record changes. A **Condition** that uses **Fields
  Updated** limits it to changes in the properties you name.

Deleting a record, or changing an association between records, does not start a workflow.

## How HubSpot changes reach Default

Default picks up HubSpot changes in 2 ways, and neither needs setup in HubSpot:

* **New records.** HubSpot notifies Default through Default's own HubSpot app when a contact, company,
  or deal is created.
* **Updated records.** Default checks HubSpot for changed records every few minutes and starts the
  matching workflows.

You don't create HubSpot workflows, webhooks, or a private app for Default.

When you publish a workflow with a HubSpot **CRM Record Created** trigger, Default sets up new-record
delivery for that object before the new version goes live:

* **Publishing can need an admin.** If a publish needs Default to change what it subscribes to in
  HubSpot, the person publishing must be an admin in Default. Otherwise the publish stops with a
  message asking an admin to publish the workflow once.
* **A failed setup blocks the publish.** If Default can't set up delivery, the workflow is not
  published and the previously published version keeps running.

A **CRM Record Updated** trigger needs no setup at publish. Default starts checking that object for
changes once the workflow is published.

## Data sync

**Data sync** on the HubSpot page imports HubSpot records into Default. It lists **Company**,
**Contact**, and **Deal**.

| Button or label | What it does |
| - | - |
| **Choose fields** | Opens **Choose *Object* fields**. Turn on **Import all fields**, or pick properties under **Fields to import**, then select **Start sync**. |
| **Enable sync** | Opens the same dialog with the properties you chose before, ready for **Start sync**. |
| **Manage fields** | Changes the properties of an object that is already syncing. Select **Save changes**. |
| **Stop** | Stops syncing the object. Default keeps your property choice for next time. |
| **Syncing** | The object is imported, and the row reads **Refreshed hourly**. |

How Data sync works:

* The first sync imports every existing record of the object. For **Deal**, the first import covers
  open deals only.
* After that, Default refreshes the object every hour.
* Adding properties to an object that is already syncing imports those properties for existing
  records too.
* Companies become Company records in Default, contacts become Person records, and deals become
  Opportunity records. To choose which source fills each Company or Person field, see
  [Objects](/settings/configurations/objects.md).

Data sync and workflow triggers are separate. Starting or stopping a sync doesn't change which
workflows run, and triggers work with Data sync off.

## Watched fields

**Watched fields** shows what Default monitors in HubSpot for your workflow triggers. It carries a
**Managed by workflows** badge and is read-only: your published workflows with **CRM Record Created**
or **CRM Record Updated** triggers set it. Select **View workflows** to open them.

Each object, **Company**, **Contact**, and **Deal**, shows its current state:

| Badge | Meaning |
| - | - |
| **New records** | A published workflow starts when records of this object are created. |
| **Any field update** | A published workflow starts on any update to this object. |
| ***N* fields** | Published workflows start only when these properties change. Hover to see them. |
| **Record updates** | A published workflow starts on updates to this object, with no property list. |
| **No active triggers** | No published workflow uses this object as a trigger. |

## What Default writes to HubSpot

Default writes to HubSpot only from the workflow nodes you add, and from confirmed `crm_write` calls
through the [MCP server](/mcp-server.md) (Beta):

| Node | What it writes |
| - | - |
| **Create Record** | A new record. HubSpot's version has no **Update on conflict**, so use **Match Record** first to avoid duplicates. |
| **Update Record** | Property values on an existing record. |
| **Create Engagement** | A new note, call, meeting, task, email, or postal mail, optionally associated with a record. |
| **Update Engagement** | Property values on an existing engagement. |
| **Create Association** | An association between 2 records, with the **Default** type or a **Labeled** type. |

When a node writes the owner property (`hubspot_owner_id`), Default converts the chosen Default user
into their HubSpot owner ID through that user's mapping. A write for a user without a mapping fails.

## Map Default users to HubSpot owners

Every Default user who owns HubSpot records needs a HubSpot owner mapping.

* **Automatic mapping.** When HubSpot connects, Default matches each member's email to a HubSpot owner
  and saves the mapping. It does the same when a new member joins. The HubSpot page shows the result,
  for example "Auto-mapping complete. Matched 12 out of 14 members by email to HubSpot owners."
* **Manual mapping.** For members whose HubSpot email differs, set their HubSpot Owner ID in
  [Settings → Users](/settings/users.md): the **Owner ID** field on the **HubSpot** card of the member's
  **Connections** page, or the **Mappings** tab.
* **Invite from HubSpot.** When inviting teammates in **Settings** → **Users**, **Add from HubSpot**
  adds people from your HubSpot account.

## Limits and behavior to know

| Item | Behavior |
| - | - |
| Data sync refresh | Every hour. |
| First Deal import | Open deals only. |
| New-record delivery | HubSpot notifies Default when a contact, company, or deal is created. |
| Update delivery | Default checks HubSpot for changes every few minutes. |
| Trigger objects | **Contact**, **Company**, and **Deal** only. |
| Deleted records and association changes | Don't start workflows. |
| Updates made by Default | A **CRM Record Updated** workflow can react to any change. Add a **Fields Updated** condition so it runs only when the properties you care about change. |

## Disconnect HubSpot

Select **Disconnect** on the HubSpot page.

> [!WARNING]
>
> Disconnecting takes effect right away:
>
> * HubSpot triggers stop, and workflow nodes can't read or write HubSpot.
> * Publishing a workflow with a HubSpot **CRM Record Created** trigger fails until HubSpot is
>   connected again.
> * Your Data sync settings are removed with the connection.
>
> If you connect HubSpot again, turn Data sync back on for each object, and republish every workflow
> that uses a HubSpot trigger so Default sets up change delivery again.

Related: [Default integrations](https://www.default.com/integrations)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.