Connect HubSpot
Deals, opportunities, contact-owner activity, deal stage movement per employee.
Prerequisites
- HubSpot account with admin or super-admin role (required to create Private Apps)
- A PerfCopilot admin account (the Connect button is only visible to admins)
1. Generate credentials in HubSpot
- Sign in to https://app.hubspot.com.
- Open Settings (the gear icon in the top nav) → Integrations → Private Apps.
📖 Official guide: Private apps — HubSpot's own documentation for creating this credential.
- Click Create a private app and name it "PerfCopilot".
- On the Scopes tab, enable:
crm.objects.deals.readcrm.objects.contacts.readcrm.objects.owners.readcrm.schemas.deals.read
- Click Create app and copy the Access token shown once on the confirmation screen.
Copy these values; you'll paste them in the next step:
- API token (the Private App Access token)
2. Paste into PerfCopilot
-
Open Integrations on your PerfCopilot admin.
-
Find the HubSpot card and click Connect (or Manage if already configured).
-
Paste each value into the matching field:
| Field in PerfCopilot | Value from step 1 | |---|---| | API token |
<your value>| -
Click Save.

3. Verify
Click Test in the drawer. Expected:
✅ Authenticated as PerfCopilot (private app)
If you see a red error, jump to Common errors.
Common errors
| Message | What it usually means | Fix |
|---|---|---|
| HTTP 401: This hapikey ... doesn't exist | Token mistyped or the private app was revoked. | Re-open the private app in HubSpot, click Rotate token, and re-paste the new value. |
| HTTP 403: scope mismatch | The private app is missing one of the required scopes. | Re-edit the private app, add the missing scope on the Scopes tab, save, refresh the token, and re-paste. |
| HTTP 401: <body excerpt> | Credentials rejected. | Re-check that you copied the full token, no leading/trailing whitespace. |
What signals we pull
crm— deals_won, contacts_touched
Need a feature you don't see? Tell us →.