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

# HubSpot Integration

> Connect AltamIQ to HubSpot with a Private App access token so partners sync in automatically when you tag them in your CRM, keep key company fields in sync one way, and track every change from the sync dashboard.

The HubSpot integration keeps your partner records in step with your CRM. When you tag a company in HubSpot as a partner, AltamIQ creates or updates the matching partner automatically. The sync is **one-way (HubSpot → AltamIQ)**, so HubSpot stays your source of truth and AltamIQ keeps the synced fields up to date for you.

You manage the connection from **Settings → Integrations**. Connecting HubSpot is an Admin-only task, but once it's connected everyone benefits: partners simply appear and stay current.

<Frame caption="The Integrations tab in Settings — the HubSpot connection card">
  <img src="https://mintcdn.com/altamiq/aIU1SAewDxaFkAyT/images/hubspot-1.png?fit=max&auto=format&n=aIU1SAewDxaFkAyT&q=85&s=6d8515e777e72d920c20e17b33521ef8" alt="AltamIQ Settings Integrations tab showing the HubSpot connection card and, for Admins and Managers, the HubSpot Sync Dashboard shortcut" width="1500" height="1046" data-path="images/hubspot-1.png" />
</Frame>

<Note>
  **HubSpot is the only active integration today.** The **Slack** and **Zapier** cards on the Integrations tab are placeholders for the future — their buttons don't connect to anything yet. The **API Access** and **Webhook Support** switches at the top of the tab are simple on/off preferences; they aren't part of the HubSpot connection, which sets up its own secure link automatically when you connect.
</Note>

<Note>
  Connecting or disconnecting HubSpot is **Admin-only**. Managers can see the connection status and open the sync dashboard; Viewers can see synced partners but not the dashboard. Only an Admin can change the connection.
</Note>

## How the sync works

Once HubSpot is connected, the sync runs quietly in the background whenever a partner company changes in HubSpot.

<CardGroup cols={2}>
  <Card title="A tag triggers it" icon="tag">
    Setting a company's **Partner Type** in HubSpot is what tells AltamIQ to bring it across. When that field changes, HubSpot notifies AltamIQ and the matching partner is created or updated.
  </Card>

  <Card title="One-way sync" icon="arrow-right">
    Updates travel in one direction only: from HubSpot into AltamIQ. Changes you make to synced fields in AltamIQ are not sent back to HubSpot.
  </Card>

  <Card title="HubSpot is the source of truth" icon="database">
    Because the sync is one-way, HubSpot holds the master copy of the synced fields. Edit those details in HubSpot and AltamIQ catches up on its own.
  </Card>

  <Card title="Matched, not duplicated" icon="link">
    AltamIQ links each HubSpot company to one partner — first by the HubSpot company it came from, then by matching website. An existing partner you added by hand gets linked and updated rather than duplicated.
  </Card>
</CardGroup>

<Info>
  A partner can reach AltamIQ two ways: **synced from HubSpot** (tagged as a partner in your CRM) or **added manually** in the Partner Directory. Both live side by side in the same list.
</Info>

<Note>
  Removing the partner tag from a company in HubSpot **does not delete the partner** in AltamIQ. The sync records that the tag was cleared and simply stops updating that record — everything you already have stays put. Remove a partner from the Partner Directory yourself if you no longer need it.
</Note>

## Which fields come across

The sync reads a partner company (and its primary contact) from HubSpot and fills in the matching fields on the AltamIQ partner. On an update, AltamIQ only overwrites a field when HubSpot actually has a value for it, so a re-sync never wipes something you filled in by hand — with two exceptions that always refresh: the company **name** and the **partner type**.

<AccordionGroup>
  <Accordion title="Company details" icon="building">
    | HubSpot | Becomes in AltamIQ |
    | - | - |
    | Company name | Partner name |
    | Company domain | Website (also used to match existing partners) |
    | Industry | Industry tag |
    | Partner Type | Partner type (Catalyst, Alliance, Keystone, and so on) |
    | City / State / Zip | HQ location |
    | Street address | Address |
    | Company phone | Contact phone |
    | Last contacted date | Last contact date |
    | Company logo | Partner logo (when HubSpot has one — otherwise a placeholder) |
    | Company description | Shown in the HubSpot Info card (see below) |
    | Number of employees | Employee size band (e.g. 201-500) |
  </Accordion>

  <Accordion title="Primary contact" icon="user-check">
    The company's first associated contact in HubSpot fills the partner's main point-of-contact details:

    | HubSpot contact | Becomes in AltamIQ |
    | - | - |
    | First + last name | Contact name |
    | Email | Contact email |
    | Job title | Contact title |
    | Phone | Contact phone |
  </Accordion>

  <Accordion title="The HubSpot Info card on the profile" icon="id-card">
    A synced partner's **Overview** tab shows a **HubSpot Info** card (marked with a green **Synced** chip) alongside Partner Contact and Quick Links. It starts collapsed; expand it to see the **address**, **company phone**, **last contact date**, and the **company description** carried over from HubSpot. The card only appears when the partner is linked to a HubSpot company and at least one of those fields has a value.
  </Accordion>
</AccordionGroup>

<Frame caption="A synced partner shows a HubSpot Info card on its Overview tab">
  <img src="https://mintcdn.com/altamiq/aIU1SAewDxaFkAyT/images/hubspot-2.png?fit=max&auto=format&n=aIU1SAewDxaFkAyT&q=85&s=56785651c8738c88227925f0162d54e4" alt="Hubspot 2" width="1500" height="1046" data-path="images/hubspot-2.png" />
</Frame>

## Connecting HubSpot

Connecting is a one-time setup an Admin does on the **Integrations** tab. AltamIQ uses a HubSpot **Private App access token** — there's no separate sign-in or approval screen.

<Steps>
  <Step title="Open Settings → Integrations">
    In the sidebar, open **Settings**, then select the **Integrations** tab. If the HubSpot card shows "not yet configured," your AltamIQ administrator needs to finish the one-time server setup first; ask them to complete it before connecting.
  </Step>

  <Step title="Create a HubSpot Private App and copy its token">
    In HubSpot, go to **Development → your Private App → Auth** and copy the **Access Token**. The app needs read access to companies and contacts.
  </Step>

  <Step title="Paste the token and connect">
    Paste the token into the HubSpot card and choose **Connect HubSpot**. AltamIQ checks the token with HubSpot, stores it securely (encrypted), and reads back which portal it belongs to. Only Admins see this form.
  </Step>

  <Step title="Confirm it's connected">
    The card turns to a green **Connected** state showing the **portal number** and the **last sync** time. That's your sign the sync is live.
  </Step>
</Steps>

<Note>
  The access token is stored encrypted and never shown again. HubSpot Private App tokens don't expire, so there's nothing to renew — if you ever need to rotate one, generate a new token in HubSpot and reconnect (Disconnect, then Connect).
</Note>

## The HubSpot Sync Dashboard

Admins and Managers get a **HubSpot Sync Dashboard** — reachable from the shortcut on the HubSpot card — that shows exactly what the sync has been doing. Viewers don't see it.

<Frame caption="The HubSpot Sync Dashboard: event counts, the 7-day volume chart, and the activity feed">
  <img src="https://mintcdn.com/altamiq/aIU1SAewDxaFkAyT/images/hubspot-3.png?fit=max&auto=format&n=aIU1SAewDxaFkAyT&q=85&s=a896b1de73e518c92be7758fc795eb24" alt="HubSpot Sync Dashboard showing a scoreboard of event counts, a 7-day volume chart, a filterable activity feed, and a Fields we track list" width="1400" height="977" data-path="images/hubspot-3.png" />
</Frame>

<CardGroup cols={2}>
  <Card title="Event counts" icon="hashtag">
    A scoreboard for the chosen time window: **Total**, **Success**, **Skipped**, **Failed**, and **Reverted**. Switch the window between the last 24 hours, 7 days, 30 days, or all time.
  </Card>

  <Card title="Daily volume" icon="chart-column">
    A simple bar chart of how many sync events landed on each of the last 7 days.
  </Card>

  <Card title="Activity feed" icon="list-check">
    Every sync event, newest first — the partner it affected, which field changed, and its status. Filter by status, page through the history, and select **View** on any row to see the full details.
  </Card>

  <Card title="Fields we track" icon="table-list">
    A reference list of every datapoint the sync maps from HubSpot into a partner, so it's clear exactly what's kept in sync.
  </Card>
</CardGroup>

Each event carries a status:

<AccordionGroup>
  <Accordion title="Success" icon="circle-check">
    The partner was created or updated from HubSpot.
  </Accordion>

  <Accordion title="Skipped" icon="circle-minus">
    Nothing needed to change — for example the company isn't tagged as a partner, the same update already arrived, or a required field (like a website) was missing. Skipped is normal, not an error.
  </Accordion>

  <Accordion title="Failed" icon="circle-exclamation">
    Something went wrong while syncing (for example HubSpot rejected the stored token). The row explains what happened.
  </Accordion>

  <Accordion title="Reverted" icon="rotate-left">
    An Admin undid this sync and restored the partner to how it was before (see below).
  </Accordion>
</AccordionGroup>

### Admin tools on the dashboard

<CardGroup cols={2}>
  <Card title="Revert a sync" icon="rotate-left">
    On a successful event, an Admin can select **Revert** to roll the partner back to its state just before that sync. If the partner has changed since, the revert stops safely instead of overwriting the newer data. Managers can see the button but can't use it.
  </Card>

  <Card title="Force a sync" icon="arrows-rotate">
    An Admin can trigger a fresh pull for a partner that's already linked to a HubSpot company, without waiting for a change in HubSpot.
  </Card>
</CardGroup>

## Who can do what

<CardGroup cols={3}>
  <Card title="Admin" icon="shield-check">
    Full control. Admins connect and disconnect HubSpot, see the connection status, open the sync dashboard, and can revert or force a sync.
  </Card>

  <Card title="Manager" icon="user-gear">
    Can see the connection status and open the **HubSpot Sync Dashboard** (read-only — no revert), but cannot connect or disconnect the integration.
  </Card>

  <Card title="Viewer" icon="eye">
    Sees synced partners like everyone else, but does **not** see the sync dashboard and cannot manage the connection.
  </Card>
</CardGroup>

## Tips & gotchas

<Tip>
  If a partner is missing, check that its company has a **Partner Type set in HubSpot**. That tag is what tells AltamIQ to bring it across — an untagged company won't sync.
</Tip>

<Warning>
  Because the sync is **one-way**, editing a synced field (like the address) in AltamIQ won't change it in HubSpot, and your edit may be replaced the next time that company updates in HubSpot. Make those changes in HubSpot so they stick — or ask an Admin to **Revert** a sync that overwrote something.
</Warning>

<Note>
  A **Skipped** event isn't a problem — it usually just means there was nothing to change. Only **Failed** events need attention; the most common cause is a HubSpot token that needs reconnecting, which an Admin can do on the Integrations tab.
</Note>

<Note>
  Disconnecting HubSpot stops new updates from flowing in; the partners already in AltamIQ stay in your directory. Disconnecting doesn't cancel the token inside HubSpot — rotate it there if you need to fully retire it. Only an Admin can disconnect.
</Note>


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