This page contains the setup guide and reference information for the HubSpot integration.
HubSpot is a customer relationship management (CRM) platform widely used by event organizers and associations to manage Contacts, Companies, and event registrations. The Swapcard integration imports HubSpot Contacts as Swapcard People (Attendees, Speakers) and HubSpot Companies as Swapcard Exhibitors, scoped to a specific event via a custom Swapcard Event object in HubSpot.
Prerequisites
A HubSpot account on a premium plan (required to create Custom Objects)
Admin-level permissions on the HubSpot account
A configured Swapcard Event custom object in HubSpot, with associations to Contacts and Companies (see Setting up your HubSpot account)
A HubSpot Private Legacy App with read scopes for Contacts, Companies, and Custom Objects, and its Access Token copied (see Setting up your HubSpot account)
Setting up your HubSpot account
Before connecting Swapcard, your HubSpot account needs two pieces of configuration:
A Swapcard Event custom object with associations to Contacts and Companies — used to scope which records are imported into a given Swapcard event.
A Private Legacy App with the right scopes — used to authenticate Swapcard against the HubSpot API.
Part 1: Create the Swapcard Event custom object
The Swapcard integration uses a HubSpot custom object called Swapcard Event to scope event data. Contacts associated with a Swapcard Event record are imported as Swapcard People, and associated Companies are imported as Swapcard Exhibitors.
Step 1 — Open HubSpot Settings
Log in to your HubSpot account and click the Settings gear icon in the top navigation bar.
Step 2 — Navigate to Custom Objects
In the left sidebar, go to Data Management → Objects → Custom Objects.
Step 3 — Create the Custom Object
Click the Create custom object button.
Step 4 — Configure object properties
Fill in the following fields, then click Create:
Field | Value |
Object name (Singular) |
|
Object name (Plural) |
|
Internal name |
|
Primary display property |
|
Property Type |
|
Important: the Internal name must be swapcard_events exactly. The HubSpot API exposes this object as p_swapcard_events, which is what the Swapcard sync queries.
Step 5 — Set up associations
From the Swapcard Events object view, select the Associations tab.
Step 6 — Create the required associations
Create the following two associations:
Swapcard Events → Contacts
Swapcard Events → Companies
Step 7 — Create the first Swapcard Event record
Use the Search HubSpot bar to find Swapcard Events and open the object.
Step 8 — Add a new event
Click Add swapcard events, then select Create new.
Step 9 — Name the event
Enter the name of your event, then click Create Swapcard Event. This record represents your event in HubSpot — Swapcard will list it when you connect the integration and ask you to pick which event to sync.
Step 10 — Associate Contacts and Companies
Open the event record. From this view, you can associate Contacts and Companies to the event.
Contacts associated with the event will be imported as Swapcard People (Attendees, Speakers). Companies associated with the event will be imported as Swapcard Exhibitors. Records that are not associated with the Swapcard Event record are ignored by the sync.
Part 2: Create a Private Legacy App for API access
Swapcard authenticates to HubSpot using a Private Legacy App access token.
Step 1 — Open the Development menu
In the HubSpot left sidebar, select Development.
Step 2 — Navigate to Legacy Apps
From the Development menu, select Legacy Apps.
Step 3 — Select app type
On the Create Legacy App view, select Private.
Step 4 — Configure basic info
On the Basic info tab, fill in:
Field | Value |
Name |
|
Description |
|
Step 5 — Add the required scopes
Select the Scopes tab and click Add new scope. Add read scopes for the following objects:
Contacts (
crm.objects.contacts.read)Companies (
crm.objects.companies.read)Custom Objects (
crm.objects.custom.read)
Without all three read scopes the integration cannot list events, contacts, or companies and the connection test will fail.
Step 6 — Create the app
Click Create app, then Continue creating to confirm.
Step 7 — Copy the access token
Go to the Auth tab on the Swapcard-Access app, click Show token, then Copy. This token is what you will paste into Swapcard Studio in the next section.
Important: treat this token like a password. It grants read access to Contacts, Companies, and Custom Objects on your HubSpot account.
Setup guide
Step 1: Set up the HubSpot integration in Swapcard
Sign in to your Swapcard account.
Navigate to your Event page within the Communities section.
In the left navigation bar, go to Event Builder, then select Integrations.
On the integration selection page, choose HubSpot from the list of integrations.
To activate the integration, you will need:
API Key — the access token of the Swapcard-Access Private Legacy App (see Part 2)
Once connected, select the Swapcard Event record that corresponds to this Swapcard event. Swapcard lists every record from the
Swapcard Eventscustom object on your HubSpot account.Enable the Contacts and/or Companies objects and configure field mappings — choosing which HubSpot properties map to which Swapcard fields or custom fields.
Your HubSpot event has been successfully linked with your Swapcard event.
You have the flexibility to adjust your integration settings according to the specific data requirements. It's crucial to highlight that the synchronization will only begin when you manually start the integration process and finish the necessary mapping.
Supported sync modes
The HubSpot integration supports the following sync modes:
Feature | Supported? |
Yes | |
Yes |
On the first sync (no previous successful sync), Swapcard fetches every Contact and Company associated with the configured Swapcard Event record. On subsequent syncs, only records modified since the last successful sync are fetched, using HubSpot's hs_lastmodifieddate / lastmodifieddate filters.
In addition, when HubSpot webhook subscriptions are enabled for contact.* and company.* events, Swapcard processes those updates in near real-time — each notified record is re-fetched, verified to still be associated with the Swapcard Event, and re-synced.
Supported streams
This integration supports two streams: Contacts and Companies, scoped to a single Swapcard Event custom object record on the HubSpot side.
HubSpot object | Maps to |
| Swapcard People (Attendees, Speakers) |
| Swapcard Exhibitors |
Only Contacts and Companies that are associated with the selected Swapcard Event record in HubSpot are imported. Records without that association are ignored.
Capturing deleted records
The HubSpot integration does NOT capture deletions. When a record is deleted in HubSpot (or unassociated from the Swapcard Event), it will not be removed from Swapcard. Deleted records must be MANUALLY removed from Swapcard.
Stream dependencies
The HubSpot integration uses the HubSpot record ID (hs_object_id) as the primary identifier for both Contacts and Companies. This value is stored in the Client Id field on the People or Exhibitor record on the Swapcard side.
Streams supporting fields
Each stream exposes a set of standard fields plus all custom HubSpot properties of supported types. Supported property types are: string, number, date, datetime, bool. HubSpot properties whose label contains an underscore are excluded from the field picker (these are typically internal / system properties).
Contacts
These fields come from the HubSpot Contact properties. Any custom property defined on the Contact object in HubSpot (matching the supported types above) is automatically available in the Swapcard mapping UI.
Provider Field | Mapping Label | Type |
| First Name |
|
| Last Name |
|
|
|
Default Swapcard mappings:
Provider Field | Swapcard Field |
| first_name |
| last_name |
|
Companies
These fields come from the HubSpot Company properties. Any custom property defined on the Company object in HubSpot (matching the supported types above) is automatically available in the Swapcard mapping UI.
Provider Field | Mapping Label | Type |
| Name |
|
| Description |
|
Default Swapcard mappings:
Provider Field | Swapcard Field |
| name |
| description |
Limitations & Troubleshooting
Connector limitations
Association-based filtering
The HubSpot integration only imports records associated with the selected Swapcard Event custom object record. Contacts and Companies that exist in HubSpot but are not associated with that event will not be imported, even if they otherwise match a sync filter.
Incremental sync still requires association lookup
Because the HubSpot Search API cannot filter associated records by last-modified date in a single call, incremental syncs first fetch all records modified since the last sync and then verify, one record at a time, whether each is still associated with the Swapcard Event. On accounts with very high modification volume this verification step can be slow.
Connection test scope
The integration validates credentials by calling the p_swapcard_events endpoint. If the Custom Objects read scope is missing on the Private Legacy App, the connection test will fail even when Contacts/Companies scopes are present.
Enhancement
Please be aware that any enhancements to this integration, which encompass any requirements not covered by the existing integration state, will be subject to custom development processes and associated costs.
Changelog
Version | Date | Subject |
1.0.0 | 2026-04-28 | Initial release |
Read more

