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

# ETL: Connecting to HubSpot (Service Token)

> Connect Integrate.io ETL to HubSpot using a service token, configure API access, and load contacts, deals, and marketing data into your pipelines.

## How to Retrieve a HubSpot Private App Token for Integrate.io

You can use **HubSpot Private Apps** to connect your HubSpot account securely with **Integrate.io** using an **Access Token (Bearer Token)**. This guide walks you through creating the token from the HubSpot Dashboard.

## Step 1: Log In to HubSpot

<Steps>
  <Step>
    Go to [https://app.hubspot.com](https://app.hubspot.com)
  </Step>

  <Step>
    Log in with an account that has **Super Admin** or **App Management** permissions.
  </Step>
</Steps>

## Step 2: Create a Private App

<Steps>
  <Step>
    In the top right, click the **Settings** icon.

    <Frame>
      <img src="https://mintcdn.com/integrateio/EbCNa5DlFLu_U6wb/images/connectivity-and-security/hubspot-service-token/image-1.webp?fit=max&auto=format&n=EbCNa5DlFLu_U6wb&q=85&s=4cd128c121f2fbc3399285dd70b6a91f" alt="HubSpot settings navigation" width="764" height="204" data-path="images/connectivity-and-security/hubspot-service-token/image-1.webp" />
    </Frame>
  </Step>

  <Step>
    In the left sidebar, scroll down and click **Integrations > Legacy Apps**

    <Frame>
      <img src="https://mintcdn.com/integrateio/EbCNa5DlFLu_U6wb/images/connectivity-and-security/hubspot-service-token/image-2.webp?fit=max&auto=format&n=EbCNa5DlFLu_U6wb&q=85&s=47595a284928667dc7affb707a9eedc8" alt="Navigating to Legacy Apps in HubSpot" width="528" height="1066" data-path="images/connectivity-and-security/hubspot-service-token/image-2.webp" />
    </Frame>
  </Step>

  <Step>
    Click the **Create** button

    <Frame>
      <img src="https://mintcdn.com/integrateio/EbCNa5DlFLu_U6wb/images/connectivity-and-security/hubspot-service-token/image-3.webp?fit=max&auto=format&n=EbCNa5DlFLu_U6wb&q=85&s=49684031b712421dfab71536e46cb5a4" alt="Creating a new private app in HubSpot" width="1200" height="341" data-path="images/connectivity-and-security/hubspot-service-token/image-3.webp" />
    </Frame>
  </Step>

  <Step>
    Select **Private** (For one account)

    <Frame>
      <img src="https://mintcdn.com/integrateio/EbCNa5DlFLu_U6wb/images/connectivity-and-security/hubspot-service-token/image-4.webp?fit=max&auto=format&n=EbCNa5DlFLu_U6wb&q=85&s=46c62ac5dd5cbac33b7feff0bbf68c37" alt="Private app creation form in HubSpot" width="1120" height="914" data-path="images/connectivity-and-security/hubspot-service-token/image-4.webp" />
    </Frame>
  </Step>
</Steps>

## Step 3: Configure the App

<Steps>
  <Step>
    **Give your app a name**, e.g. `Integrate.io Sync`
  </Step>

  <Step>
    (Optional) Add a description, icon, or team owner for tracking

    <Frame>
      <img src="https://mintcdn.com/integrateio/EbCNa5DlFLu_U6wb/images/connectivity-and-security/hubspot-service-token/image-5.webp?fit=max&auto=format&n=EbCNa5DlFLu_U6wb&q=85&s=d06d7ad3946b822ccb78294cc0fa4aa9" alt="Configuring the private app details in HubSpot" width="1200" height="1033" data-path="images/connectivity-and-security/hubspot-service-token/image-5.webp" />
    </Frame>
  </Step>
</Steps>

## Step 4: Define Access Scopes

<Steps>
  <Step>
    Under **Scopes**, search and select the APIs your integration needs access to.
  </Step>

  <Step>
    Some common scopes for data sync into Integrate.io:

    | Scope Category | Scope Name                  | Description              |
    | -------------- | --------------------------- | ------------------------ |
    | CRM            | `crm.objects.contacts.read` | Read contacts            |
    | CRM            | `crm.objects.deals.read`    | Read deals               |
    | Marketing      | `marketing.emails.read`     | Read marketing emails    |
    | Analytics      | `reports.read`              | Access analytics reports |
    | Custom Objects | `crm.objects.custom.read`   | Read custom CRM objects  |

    For exporting (writing to HubSpot), select appropriate **write** scopes.

    <Frame>
      <img src="https://mintcdn.com/integrateio/EbCNa5DlFLu_U6wb/images/connectivity-and-security/hubspot-service-token/image-6.webp?fit=max&auto=format&n=EbCNa5DlFLu_U6wb&q=85&s=7bda07765a81e99a3d3e0646e79a82d3" alt="Defining access scopes for the HubSpot private app" width="1200" height="1163" data-path="images/connectivity-and-security/hubspot-service-token/image-6.webp" />
    </Frame>
  </Step>
</Steps>

## Step 5: Create the App and Copy the Token

<Steps>
  <Step>
    Click **Create App**
  </Step>

  <Step>
    Once created, you'll see your **Access Token** in the **Auth** tab

    * **Copy and store this token securely**

    <Note>The access token is like a password. Treat it as sensitive.</Note>
  </Step>
</Steps>

## Step 6: Use Token in Integrate.io

In **Integrate.io**:

<Steps>
  <Step>
    Go to **Connections > Create New Connection**
  </Step>

  <Step>
    Select **HubSpot**
  </Step>

  <Step>
    For **authentication**, select:

    * **Access Token (Private App)**
  </Step>

  <Step>
    Paste the token you copied from HubSpot
  </Step>
</Steps>

Integrate.io will now use this token for authenticated API calls.

## Token Expiration

HubSpot Private App tokens do **not expire** unless:

* You **regenerate** the token
* You **delete the private app**
* Your user permissions are removed
