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

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