HubSpot

HubSpot is a CRM and marketing platform. ZombieLicenseHunter connects to HubSpot via OAuth 2.0 to sync portal user accounts — the people who have access to your HubSpot portal — so you can identify inactive or zombie licenses.

Prerequisites

  • A HubSpot account with Super Admin access
  • Access to the HubSpot Developer Portal to create an OAuth app
  • The public URL of your ZombieLicenseHunter instance, for the redirect URI

Setup Instructions

Step 1: Create a HubSpot OAuth App

  1. Log in to the HubSpot Developer Portal.
  2. Navigate to Apps and click Create app.
  3. Give the app a name (e.g., ZombieLicenseHunter).
  4. Under Auth, locate the Redirect URLs section and add:
    https://<your-zombielicensehunter-host>/integrations/hubspot/callback
    
  5. Note the Client ID and Client Secret — you will need these in Step 3.

Step 2: Configure Scopes

  1. In your app's Auth settings, scroll to Scopes.
  2. Add the scope settings.users.read. The oauth scope is included by default.
  3. Save your changes.

These two scopes, oauth and settings.users.read, are what ZombieLicenseHunter requests when it sends you to HubSpot for consent.

Step 3: Connect in ZombieLicenseHunter

  1. In ZombieLicenseHunter, go to Integrations → Add Integration and select HubSpot. Leave Category as Application.
  2. Enter your Client ID and Client Secret from Step 1.
  3. Click Save Integration. You are redirected to the HubSpot consent screen.
  4. Authenticate with a Super Admin account, choose the portal to connect, and grant consent.
  5. After approval, you are redirected back and a background sync begins automatically.

Note: The account used to authorize the connection must be a Super Admin of the HubSpot portal. Non-admin accounts do not have permission to read portal user settings.

What Gets Synced

ZombieLicenseHunter syncs portal user accounts from the HubSpot Settings API v3 (/settings/v3/users/). This includes:

Field Description
User ID Internal HubSpot user identifier
Email User's email address
Active status Whether the user is active or archived
License type Role assigned (Super Admin or Full)

Not synced: CRM data (contacts, deals, companies), last-login timestamps, or any marketing/sales data. Only portal user accounts are synced.

Troubleshooting

Connection fails at consent screen Ensure the redirect URL registered in your HubSpot app exactly matches https://<your-zombielicensehunter-host>/integrations/hubspot/callback, including the protocol and with no trailing slash.

"Insufficient permissions" error during sync The HubSpot account that authorized the connection must be a Super Admin. Re-connect using a Super Admin account.

Missing settings.users.read scope If the scope was not added before connecting, HubSpot refuses the consent request. Add the scope in the HubSpot Developer Portal, then disconnect and reconnect the integration.

Users not appearing after sync Archived users are included in the sync. If a user is missing entirely, verify they exist in Settings > Users & Teams in your HubSpot portal.