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

# HubSpot

## What's Supported

### Supported Actions

The Hubspot connector supports:

* [Read Actions](/read-actions), including full historic backfill, incremental reads, and filters.
* [Subscribe Actions](/subscribe-actions). Please note that [special set up](#set-up-subscribe-actions) is needed for HubSpot.
* [Write Actions](/write-actions), including Bulk Write and Delete.
* [Proxy Actions](/proxy-actions), using the base URL `https://api.hubapi.com`.

### Supported Objects

#### CRM Objects

The connector supports reading from and writing to the following *CRM objects*,
including [standard fields](https://docs.google.com/spreadsheets/d/1FGc9zT_J9dyGghDxvqeioAva-5Gj7-2DQzKNMrbrPvw/view?usp=sharing) and custom fields:

* [calls](https://developers.hubspot.com/docs/api-reference/legacy/crm/activities/calls/guide)
* [companies](https://developers.hubspot.com/docs/api-reference/legacy/crm/objects/companies/guide)
* [contacts](https://developers.hubspot.com/docs/api-reference/legacy/crm/objects/contacts/guide)
* [deals](https://developers.hubspot.com/docs/api-reference/legacy/crm/objects/deals/guide)
* [emails](https://developers.hubspot.com/docs/api-reference/legacy/crm/activities/emails/guide)
* [meetings](https://developers.hubspot.com/docs/api-reference/legacy/crm/activities/meetings/guide)
* [notes](https://developers.hubspot.com/docs/api-reference/legacy/crm/activities/notes/guide)
* All other [standard CRM objects](https://developers.hubspot.com/docs/guides/crm/understanding-the-crm#object-type-ids)
* Custom CRM objects

The connector only supports reading from:

* [lists](https://developers.hubspot.com/docs/api-reference/latest/crm/lists/guide) (note: incremental reads not supported for Lists)
* Users and owners ([see below](#reading-users-and-owners))

#### Marketing Objects

The connector supports reading from:

* [marketing-campaigns](https://developers.hubspot.com/docs/api-reference/latest/marketing/campaigns/guide)
* [marketing-forms](https://developers.hubspot.com/docs/api-reference/2026-09-beta/marketing/forms/guide)
* [marketing-events](https://developers.hubspot.com/docs/api-reference/latest/marketing/marketing-events/guide)
* [marketing-emails](https://developers.hubspot.com/docs/api-reference/latest/marketing/marketing-emails/guide)

#### Conversation Objects

The connector supports reading from:

* [channel-accounts](https://developers.hubspot.com/docs/api-reference/2026-09-beta/conversations/conversations/channel-accounts/get-channel-accounts)
* [channels](https://developers.hubspot.com/docs/api-reference/2026-09-beta/conversations/conversations/channels/get-channels)
* [custom-channels](https://developers.hubspot.com/docs/api-reference/latest/conversations/custom-channels/channels/get-custom-channels)
* [inboxes](https://developers.hubspot.com/docs/api-reference/2026-09-beta/conversations/conversations/inbox/get-inboxes)
* [threads](https://developers.hubspot.com/docs/api-reference/2026-09-beta/conversations/conversations/threads/get-threads)

#### Communication Objects

The connector supports reading from:

* [communication-preferences](https://developers.hubspot.com/docs/api-reference/latest/communication-preferences/guide)

#### Scheduler Objects

The connector supports reading from:

* [meeting-links](https://developers.hubspot.com/docs/api-reference/latest/scheduler/meetings/get-meeting-links)

#### Event Occurrences

Event occurrences represent specific actions captured at a point in time, such as form submissions, email delivery,
sequence activity, and other **behavioral changes**. They are useful to understand when an event
happened and how that event may relate to automation or downstream workflows.

To find the event type you are interested in, use the HubSpot Events API's
[list event types endpoint](https://developers.hubspot.com/docs/api-reference/latest/events/retrieve-events/get-event-types)
and [list custom event definitions](https://developers.hubspot.com/docs/api-reference/latest/events/define-events/create-event-definition).
Standard event type names begin with `e_`, while customer-specific custom event definitions use the `fullyQualifiedName` property with a `pe{HubId}_` prefix.
Standard events are safe to use across all customers,
while custom event definitions apply only to the specific customer account where they are defined.

The HubSpot connector exposes event types as individual objects
that follow the convention `AMPERSAND-event-occurrences-<EVENT_TYPE>`.

<Note>
  Note that **occurrences** is spelled with two c's and two r's.
</Note>

Here are a few examples of the objects you would read for different event types -

* `AMPERSAND-event-occurrences-e_call_ended`
* `AMPERSAND-event-occurrences-e_form_submission`
* `AMPERSAND-event-occurrences-e_mta_bounced_email_v2`
* `AMPERSAND-event-occurrences-e_visited_page`
* `AMPERSAND-event-occurrences-pe148543157_this_is_my_event`

#### Reading users and owners

To read users from your customer's HubSpot workspace, enable the `crm.objects.users.read` scope and add `users` as an object in `amp.yaml`:

```YAML theme={null}
- objectName: users
  destination: defaultWebhook
  schedule: "0 0 * * *"
  requiredFields:
    - fieldName: hs_object_id
      mapToName: userId
    - fieldName: hubspot_owner_id
      mapToName: ownerId
    - fieldName: hs_email
      mapToName: emailAddress
```

### Associations

<Note>
  HubSpot associations is a private preview feature where you can retrieve associated records when using Read Actions or Subscribe Actions. Please contact [support@withampersand.com](mailto:support@withampersand.com) if you wish to use it.
</Note>

### Example Integration

For an example manifest file, visit our [samples repo on Github](https://github.com/amp-labs/samples/blob/main/hubspot/amp.yaml).

## Before You Get Started

If you don't already have one, sign up for a [free HubSpot developer account](https://app.hubspot.com/signup-hubspot/crm?intent=developer).

## Create a HubSpot App

### Method 1: New Project Apps

New Project Apps are [limited to 25 installs](https://developers.hubspot.com/changelog/new-marketplace-distribution-app-install-limits), until the app is listed on the HubSpot Marketplace. We recommend starting the process to [publish to HubSpot marketplace](#publish-to-hubspot-marketplace) as soon you've finished building your integration and tested it internally or with a customer.

To create a New Project App:

1. **Open** the terminal

2. **Install** the HubSpot CLI: `npm install -g @hubspot/cli`

3. **Authenticate** using `hs account auth` and select open HubSpot to get your key

   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-cli-account-auth.png?fit=max&auto=format&n=bcB4Z43eD97jqQ_7&q=85&s=9a04f4f84b94e3fb3877c1df6e065822" alt="Alt text" width="4096" height="1620" data-path="images/provider-guides/hubspot-cli-account-auth.png" />

   If you already have a personal access key, select "Enter existing personal
   access key" and skip to [Step 7](#create-project).

4. **Select** your account (if prompted)

<Note>
  If you have multiple accounts, make sure to select the developer account.
</Note>

5. **Create** your Personal Access Key and copy it
   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-cli-create-key.gif?s=bc95605cd21ac30cd60af5708940970f" alt="Alt text" width="640" height="423" data-path="images/provider-guides/hubspot-cli-create-key.gif" />

6. **Go back** to terminal, **paste** the key and **hit Enter**
   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-cli-paste-key.png?fit=max&auto=format&n=bcB4Z43eD97jqQ_7&q=85&s=1e61b75b5770c19619f126ac2a83615a" alt="Alt text" width="4096" height="1680" data-path="images/provider-guides/hubspot-cli-paste-key.png" />

7. <span id="create-project">Create a project</span>:

Copy and paste this command in the terminal:

```
hs project create --name your-project-name --project-base app --distribution marketplace --auth oauth --features
```

8. Configure OAuth redirect URL and scopes

Open the folder where the HubSpot project was created and edit `src/app/app-hsmeta.json`.

Replace the `auth` section of the file with the snippet below. If you wish to read or write to more objects than **contacts**, then add more scopes. For example, if you also want to read **companies**, then you can add the following scopes:

* crm.objects.companies.read

For a full list of HubSpot scopes, please refer to [HubSpot documentation](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/scopes#list-of-available-scopes).

```json theme={null}
{
  "auth": {
   "type": "oauth",
   "redirectUrls": ["https://api.withampersand.com/callbacks/v1/oauth"],
   "requiredScopes": [
      "oauth",
      "crm.objects.contacts.read",
      "crm.objects.contacts.write"
   ],
   "optionalScopes": [],
   "conditionallyRequiredScopes": []   
  }
}
```

9. **Deploy**: run the following command

```
hs project upload
```

You will be prompted to create the new project, select "yes".

<img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-cli-deploy-project.png?fit=max&auto=format&n=bcB4Z43eD97jqQ_7&q=85&s=017cb25fb8b373e17cb62ef8319f155f" alt="Alt text" width="4096" height="2472" data-path="images/provider-guides/hubspot-cli-deploy-project.png" />

10. Accept HubSpot's Acceptable Use Policy

If this is your first time create a HubSpot app, you will need to accept HubSpot's Acceptable Use Policy before any users can install your integration.

* Log into HubSpot
* Select **Development** from the bottom of the left nav bar.

<img width="250" src="https://mintcdn.com/ampersand-24eb5c1a/A8CQEWO84Q7jvzAq/images/provider-guides/hubspot-development-tab.png?fit=max&auto=format&n=A8CQEWO84Q7jvzAq&q=85&s=36fa0859a64706e0c5a94c5d9acc2d33" alt="Dev tab" data-path="images/provider-guides/hubspot-development-tab.png" />

* Select the project you just created

<img src="https://mintcdn.com/ampersand-24eb5c1a/A8CQEWO84Q7jvzAq/images/provider-guides/hubspot-select-project.png?fit=max&auto=format&n=A8CQEWO84Q7jvzAq&q=85&s=53c7f2da0b659bb8319c5ad1795c10b1" alt="Select Project" width="3056" height="1530" data-path="images/provider-guides/hubspot-select-project.png" />

* In the **Project Components** section, click on the app.

<img src="https://mintcdn.com/ampersand-24eb5c1a/A8CQEWO84Q7jvzAq/images/provider-guides/hubspot-select-app.png?fit=max&auto=format&n=A8CQEWO84Q7jvzAq&q=85&s=8782e5a895695a27567908de0b48f193" alt="Select App" width="3010" height="1454" data-path="images/provider-guides/hubspot-select-app.png" />

* Navigate to the **Distribution** tab, click on "Begin Publishing" and complete the first step "Agree to HubSpot's Acceptable Use Policy". You do not need to complete the rest of the steps right now.

<img src="https://mintcdn.com/ampersand-24eb5c1a/A8CQEWO84Q7jvzAq/images/provider-guides/hubspot-acceptable-use-policy.gif?s=9d8cb7aaa997438fa759d8a2541dfb0e" alt="Acceptable Use Policy" width="1508" height="868" data-path="images/provider-guides/hubspot-acceptable-use-policy.gif" />

11. Get Client ID and Client Secret

* Follow the steps from Step 10 above to navigate to your HubSpot app.
* Go to the **Auth** tab to find your **Client ID** and **Client Secret**

<img src="https://mintcdn.com/ampersand-24eb5c1a/A8CQEWO84Q7jvzAq/images/provider-guides/hubspot-auth.png?fit=max&auto=format&n=A8CQEWO84Q7jvzAq&q=85&s=eee04e5f144b6f1693e425550b89d4b4" alt="Auth" width="3024" height="1460" data-path="images/provider-guides/hubspot-auth.png" />

12. Jump to [Add App to Ampersand](#add-app-to-ampersand).

### Method 2: Legacy Apps

<Note>
  Legacy Apps has no install limits but [won't receive
  new HubSpot
  features](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/overview).
  When you migrate a Legacy App to a new Project App, you will be subject to the 25 install limit until your app is listed in the HubSpot marketplace. Please see [HubSpot changelog](https://developers.hubspot.com/changelog/new-marketplace-distribution-app-install-limits) for more details.
</Note>

Depending on when you created your HubSpot developer account, you will see different UI.

#### Developer accounts created after September 2025

1. Log in to your HubSpot developer account
2. Navigate to **Development** → **Legacy apps**
   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-new-dev-1.gif?s=b32dcad4263aba0f849b848adf473b68" alt="Alt text" width="640" height="318" data-path="images/provider-guides/hubspot-new-dev-1.gif" />

<Note>
  If you don't see the Development menu, you need Super Admin permissions.
</Note>

3. Click **Create** → Select **Public**

   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-new-create-legacy-app.gif?s=c618e743d332f8b504a1ab263e4c8de3" alt="Alt text" width="640" height="422" data-path="images/provider-guides/hubspot-new-create-legacy-app.gif" />

4. Enter **Public app name** and go to the **Auth** tab

   Add Redirect URL: `https://api.withampersand.com/callbacks/v1/oauth` and click "Create app"

   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-old-portal-2.gif?s=f85fbb79b52dbb463815fe23644dcda5" alt="Alt text" width="640" height="319" data-path="images/provider-guides/hubspot-old-portal-2.gif" />

5. Go to the Scopes section, click "Add new scope" and **select your required scopes**
   <img src="https://mintcdn.com/ampersand-24eb5c1a/p4alBfPjHeNuBPh1/images/provider-guides/1b56fb4-hubspot5.gif?s=31f07c862dccb2a335a7d96b9974da82" alt="Alt text" width="1440" height="724" data-path="images/provider-guides/1b56fb4-hubspot5.gif" />

6. **Copy your Client ID and Client Secret** from the Auth tab
   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-old-portal-3.gif?s=3ac1c7ec178a96e93c91e97722e254e9" alt="Alt text" width="640" height="317" data-path="images/provider-guides/hubspot-old-portal-3.gif" />

Jump to [Add App to Ampersand](#add-app-to-ampersand).

#### Developer accounts created before September 2025

1. Log in to your [HubSpot Developer Dashboard](https://app.hubspot.com/signup-hubspot/developers)
2. Click **Create an app**
   <img src="https://mintcdn.com/ampersand-24eb5c1a/i4a56x-Fmj6u7jdE/images/provider-guides/a8c2c6f-hubspot1.gif?s=8511900c9b7253c815042d484a2cecb4" alt="Alt text" width="1438" height="722" data-path="images/provider-guides/a8c2c6f-hubspot1.gif" />
3. Enter **Public app name**, click the **Auth** tab, add Redirect URL: `https://api.withampersand.com/callbacks/v1/oauth` and click "Create app"
   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-old-portal-2.gif?s=f85fbb79b52dbb463815fe23644dcda5" alt="Alt text" width="640" height="319" data-path="images/provider-guides/hubspot-old-portal-2.gif" />
4. Go to the **Scopes** tab and select your required scopes
   <img src="https://mintcdn.com/ampersand-24eb5c1a/p4alBfPjHeNuBPh1/images/provider-guides/1b56fb4-hubspot5.gif?s=31f07c862dccb2a335a7d96b9974da82" alt="Alt text" width="1440" height="724" data-path="images/provider-guides/1b56fb4-hubspot5.gif" />
5. Copy your **Client ID** and **Client Secret** from the Auth tab
   <img src="https://mintcdn.com/ampersand-24eb5c1a/bcB4Z43eD97jqQ_7/images/provider-guides/hubspot-old-portal-3.gif?s=3ac1c7ec178a96e93c91e97722e254e9" alt="Alt text" width="640" height="317" data-path="images/provider-guides/hubspot-old-portal-3.gif" />

Jump to [Add App to Ampersand](#add-app-to-ampersand)

## Add App to Ampersand

After creating your app using any method above:

1. Log in to your [Ampersand Dashboard](https://dashboard.withampersand.com)
2. Select your project → **Provider apps**
3. Select **HubSpot** from the Provider list
4. Enter your **Client ID**, **Client Secret**, and **Scopes** and click **Save changes**.

<Note>
  These scopes must should match the exact set of scopes defined in your HubSpot app.
</Note>

<img src="https://mintcdn.com/ampersand-24eb5c1a/CkzFg-K1u4gYx3ZD/images/provider-guides/f4ada70-hubspot6.gif?s=da96b1f06f51bc20b2313961ddf8185e" alt="Alt text" width="526" height="648" data-path="images/provider-guides/f4ada70-hubspot6.gif" />

## Using the connector

To start integrating with HubSpot:

* Create a manifest file like the [example](https://github.com/amp-labs/samples/blob/main/hubspot/amp.yaml)
* Deploy it using the [amp CLI](/cli/overview)
* If using Read or Subscribe Actions, create a [destination](/destinations)
* Embed the [InstallIntegration](/embeddable-ui-components#install-integration) UI component
* Start using the connector!

## Set up Subscribe Actions

<Note>
  HubSpot subscribe actions cannot notify you of changes to custom fields. There is a workaround that requires additional set up, please contact [support@withampersand.com](mailto:support@withampersand.com) for details.
</Note>

To enable HubSpot subscribe actions, you will need to:

* Define the subscribe action in your `amp.yaml` file and then deploy it. See the [Subscribe Actions documentation](/subscribe-actions) for details.
* Make modifications to the HubSpot app (see below).

### New project apps

If you are using a new project app (that was created with the HubSpot CLI), then follow the instructions below. If you don't have any apps yet, follow the instructions in [Method 1: New Project Apps](#method-1-new-project-apps) above to create one.

#### Create webhooks-hsmeta.json file

Go to the directory that contains your HubSpot app, and add a file called `your-project-name/src/app/webhooks/webhooks-hsmeta.json`. So your directory should end up like this:

```
/your-project-name
  /src/app
    /webhooks
      webhooks-hsmeta.json
    app-hsmeta.json
  hsproject.json
```

Replace `targetUrl` in the example `webhooks-hsmeta.json` file below with the one that is for your integration. It should follow the format:

```
"https://subscribe-webhook.withampersand.com/v1/projects/PROJECT_ID/integrations/INTEGRATION_ID"
```

* Replace `PROJECT_ID` with your Ampersand project ID, which can be found in the Dashboard's [General Settings page](https://dashboard.withampersand.com/projects/_/settings).
* Replace `INTEGRATION_ID` with your integration's ID, which can be found in the Dashboard's [Home page](https://dashboard.withampersand.com/projects/_).

You can also edit the file with the desired objects and events you want to subscribe to. You can refer to [HubSpot documentation](https://developers.hubspot.com/docs/apps/developer-platform/add-features/configure-webhooks#webhook-configuration) for the syntax of this file.

Example `webhooks-hsmeta.json`:

```
{
  "uid": "ampersand_subscribe_actions",
  "type": "webhooks",
  "config": {
    "settings": {
      "targetUrl": "SEE_INSTRUCTIONS_ABOVE",
      "maxConcurrentRequests": 50
    },
    "subscriptions": {
      "crmObjects": [
        {
          "subscriptionType": "object.creation",
          "objectType": "contact",
          "active": true
        },
        {
          "subscriptionType": "object.propertyChange",
          "objectType": "contact",
          "propertyName": "firstname",
          "active": true
        },
        {
          "subscriptionType": "object.propertyChange",
          "objectType": "contact",
          "propertyName": "lastname",
          "active": true
        },
        {
          "subscriptionType": "object.deletion",
          "objectType": "contact",
          "active": true
        }
      ]
    }
  }
}
```

#### Deploy changes to HubSpot

Once you are done editing `webhooks-hsmeta.json`, deploy it using the following command:

```
hs project upload
```

### Legacy apps

If you have a legacy app (that was created in the HubSpot UI), follow the instructions below.

1. Login to your HubSpot account.
2. Go to the **Apps** section.
3. Select your connected app.
4. Click on **Webhooks**.
5. Enter the Target URL:

```
  https://subscribe-webhook.withampersand.com/v1/projects/PROJECT_ID/integrations/INTEGRATION_ID
```

* Replace `PROJECT_ID` with your Ampersand project ID, which can be found in the Dashboard's [General Settings page](https://dashboard.withampersand.com/projects/_/settings).
* Replace `INTEGRATION_ID` with your integration's ID, which can be found in the Dashboard's [Home page](https://dashboard.withampersand.com/projects/_).

7. Click **Create Subscription**.
8. Select object types, event types, and properties.
9. Select the required checkboxes for all objects.
10. Click **Activate**.

<img src="https://mintcdn.com/ampersand-24eb5c1a/xjDXN-Vr1QbdihBU/images/subscribeactions-hubspot.gif?s=679155977143be46319f2c7ebc401bd7" alt="Subscribe actions HubSpot" width="1440" height="734" data-path="images/subscribeactions-hubspot.gif" />

## Customer guide

Share the [HubSpot customer guide](/customer-guides/hubspot) with your customers to help them use your integration.

## Publish to HubSpot Marketplace

When you are ready to list on the HubSpot marketplace, follow the instructions in the [HubSpot documentation](https://developers.hubspot.com/docs/apps/developer-platform/list-apps/listing-your-app/listing-your-app).

* For the **App Information** section, you should use information about your company, not about Ampersand.
* For **Install Button URL**, use the URL of your application that users go to to start the installation process (this is usually where you've embedded the Ampersand UI Component).
