Skip to main content

BoothMaven - HubSpot Integration API Documentation

Reference URL: https://www.boothmaven.com/integration/hubspot/
API Version: HubSpot CRM API v3 / v4 Associations
Supported Plans: All Plans — Capture , Essential , Business
Contact / Support: BoothMaven.com

Overview

BoothMaven delivers real-time synchronization between on-site event lead capture and HubSpot CRM. Within seconds of a badge scan or business card exchange, full contact records, event metadata, qualifying answers, meeting schedules, and engagement signals land directly in HubSpot.

Four Layers of Event Intelligence

  1. Contact & Company Intelligence: Standard contact fields, company properties, and automated Apollo.io enrichment (industry, revenue, headcount, tech stack).
  2. Event Context & Qualification: Event title, booth number, capturing representative, lead score (0–100), and custom qualifying survey responses mapped to named properties.
  3. Meeting Activities & Conversation Notes: Scheduled booth meetings, attendee responses (Accepted/Declined), and voice memo audio transcriptions synced as native HubSpot Notes and Meetings.
  4. Content Engagement Signals (Timeline Activities): Post-event document opens, video views, time spent reading, and multi-touch revisit signals that trigger automated HubSpot Workflows.

Table of Contents

  1. Authentication & Connection (OAuth 2.0)
  2. Data Model & Object Architecture
  3. API Endpoints & Payloads
  4. Field Mapping Specifications
  5. Deduplication & Auto-Healing
  6. Asynchronous Trigger Points & Execution Architecture
  7. HubSpot Workflow Automation Triggers

1. Authentication & Connection (OAuth 2.0)

BoothMaven connects to HubSpot portals using the official HubSpot App OAuth 2.0 flow.

OAuth Endpoints

Required OAuth Scopes

  • crm.objects.contacts.write & crm.objects.contacts.read: Contact creation and updates.
  • crm.objects.companies.write & crm.objects.companies.read: Company associations.
  • crm.objects.custom.read & crm.objects.custom.write: BoothMaven Event App Objects.
  • timeline: Publishing Content Signal Timeline Events.
  • crm.schemas.contacts.read: Schema and custom property discovery.

Token Refresh Payload (POST https://api.hubapi.com/oauth/v1/token)


2. Data Model & Object Architecture


3. API Endpoints & Payloads

3.1 Contact Sync (Create & Update)

Creates a new Contact or updates an existing Contact matched by email address.
  • Create Endpoint: POST https://api.hubapi.com/crm/v3/objects/contacts
  • Update Endpoint: PATCH https://api.hubapi.com/crm/v3/objects/contacts/{contactId}

Request Payload (SimplePublicObjectInput)


3.2 Custom Event Objects (App Object Schema)

BoothMaven creates custom event records under its dedicated HubSpot App Object prefix (a44678917_).
  • Endpoint: POST https://api.hubapi.com/crm/v3/objects/2-12345678 (Custom Event Object Type ID)

Request Payload


3.3 Meeting Activities & Attendees

Booth bookings sync as HubSpot Meetings. Attendee responses (Accepted/Declined) create associated status notes.
  • Create Meeting: POST https://api.hubapi.com/crm/v3/objects/meetings
  • Associate to Contact (v4): PUT https://api.hubapi.com/crm/v4/objects/meetings/{meetingId}/associations/contacts/{contactId}

Meeting Request Payload

Meeting Association Definition (v4)


3.4 Conversation Notes (Voice & Text)

Transcribed booth conversations and audio memo notes are created and associated directly with the Contact:
  • Endpoint: POST https://api.hubapi.com/crm/v3/objects/notes
  • Association: Linked to Contact via associationTypeId: 202

Note Request Payload


3.5 Content Engagement Signals (Timeline Activities)

When an attendee engages with digital cards or downloaded content post-event, a Timeline Activity is posted to the contact’s record.

Timeline Event Payload


4. Field Mapping Specifications


5. Deduplication & Auto-Healing

1. 409 Conflict Deduplication Resolution

If HubSpot returns an HTTP 409 Conflict (indicating a duplicate contact exists by email):
  1. BoothMaven parses the existing contact ID from the response message: Existing ID: (\d+).
  2. Automatically falls back to a PATCH update against that discovered ID.
  3. Continues execution smoothly without dropping lead data.

2. Auto-Healing Missing Custom Properties

If a user’s HubSpot portal lacks required custom properties (e.g. bm_qualification_data or bm_social_links):
  1. BoothMaven catches the HTTP 400 Bad Request schema error.
  2. Calls ensureCustomContactProperties() to provision the missing properties via HubSpot’s Schemas API.
  3. Automatically retries the contact sync request transparently.

6. Asynchronous Trigger Points & Execution Architecture

To ensure zero latency on mobile badge scanning and immediate lead capture offline or online, all HubSpot sync actions execute asynchronously through Laravel Queue workers.

Sync vs. Async Trigger Matrix

Job Dispatch Pipeline & Observers

Cascade Synchronization

When a contact is newly synced to HubSpot, cascadeSyncContactRelations() immediately syncs related event attendance, scheduled meetings, and notes for that contact, eliminating race conditions between related records.

State Tracking (CrmLog)

Every asynchronous sync operation is logged in the bm_crm_logs table with provider hubspot, recording the external HubSpot ID, timestamp, and status.

7. HubSpot Workflow Automation Triggers

Each event captured by BoothMaven can trigger native HubSpot Workflows:
  1. New Contact Captured → Enrol in post-event nurturing sequence and send instant Slack notification to the booth team.
  2. Hot Lead Score (≥ 80) → Create high-priority AE task with 2-hour SLA and alert the Sales Director.
  3. Pricing Sheet Viewed (Content Signal) → Trigger: Timeline activity Pricing Sheet Viewed → Action: Create AE task to follow up within 4 hours.
  4. Meeting Completed → Advance deal stage to “Demo Delivered” and trigger proposal request sequence.
  5. Meeting No-Show → Trigger: Meeting outcome = NO_SHOW → Action: Enrol in rescheduling sequence with self-booking link.
  6. “Met Again” Visitor → Contact captured at a 2nd trade show → Flag as key account and notify account executive of multi-event interest.