Skip to main content

BoothMaven - Salesforce Integration API Documentation

Reference URL: https://www.boothmaven.com/integration/salesforce/
API Version: Salesforce REST API v60.0 (Spring β€˜24 / Summer β€˜24)
Supported Plans: **Essential ** & **Business ** (Not available on Capture)
Contact / Support: BoothMaven.com

Overview

BoothMaven connects event lead capture, badge scanning, and attendee interactions directly with Salesforce CRM in real time without batch imports or CSV files. Unlike conventional lead capture tools that push flat contact rows, BoothMaven integrates natively with the Salesforce Campaign Object:
  • One Campaign per Event: Auto-generated or linked when an event is configured in BoothMaven.
  • One Campaign Member per Captured Lead: Holds event context, booth number, rep, capture method, lead score, and qualifying answers.
  • Contact & Account Creation/Matching: Contacts matched by email; Accounts matched by company domain/name with Apollo.io company intelligence.
  • Two-Way Meeting Sync (Business Plan): Meetings sync as Salesforce Tasks/Events; rep updates in Salesforce flow back to BoothMaven.
  • Content Engagement Signals: Spec sheet, brochure, and pricing views sync as Tasks to trigger Salesforce Flows.

Table of Contents

  1. Authentication & Connection (OAuth 2.0)
  2. Data Model & Object Hierarchy
  3. API Endpoints & Integration Requests
  4. Field Mapping Specifications
  5. Deduplication & Conflict Handling
  6. Asynchronous Trigger Points & Execution Architecture
  7. Salesforce Flow Automation Triggers

1. Authentication & Connection (OAuth 2.0)

BoothMaven connects to Salesforce using OAuth 2.0 Web Server Flow (Authorization Code Grant).

Base URLs

  • Production Login: https://login.salesforce.com
  • Sandbox Login: https://test.salesforce.com
  • REST API Path: https://{instance_url}/services/data/v60.0/

OAuth Endpoints

Required Scopes

  • api: Access and manage Salesforce data via REST API.
  • refresh_token / offline_access: Allows background synchronization when user is not active.
  • full / id: User identity and profile validation.

Token Refresh Payload (POST /services/oauth2/token)

Automatic Session Healing

If any Salesforce API call returns an HTTP 401 Unauthorized with errorCode: INVALID_SESSION_ID, BoothMaven automatically refreshes the token and transparently replays the request.

2. Data Model & Object Hierarchy


3. API Endpoints & Integration Requests

3.1 Contact & Account Sync

Creates or updates a Salesforce Contact. If company information is captured, it matches or creates an Account.
  • Endpoint: PATCH /services/data/v60.0/sobjects/Contact/{id} or POST /services/data/v60.0/sobjects/Contact
  • Query Check: GET /services/data/v60.0/query?q=SELECT+Id+FROM+Contact+WHERE+Email='{escapedEmail}'+LIMIT+1

Request Payload (Contact)


3.2 Campaign & Campaign Member Sync

Every BoothMaven event creates/updates a Salesforce Campaign and links the lead as a CampaignMember.
  • Campaign Endpoint: POST /services/data/v60.0/sobjects/Campaign
  • Campaign Member Endpoint: POST /services/data/v60.0/sobjects/CampaignMember

Campaign Payload

Campaign Member Payload


3.3 Meeting & Activity Sync (Two-Way)

Syncs booth meetings as Salesforce Event or Task records. When sales reps update the meeting status in Salesforce (Completed, Rescheduled, No-Show), the outcome syncs back to BoothMaven.
  • Endpoint: POST /services/data/v60.0/sobjects/Event
  • Update Endpoint: PATCH /services/data/v60.0/sobjects/Event/{id}
  • Multi-Contact Link: POST /services/data/v60.0/sobjects/EventRelation

Request Payload (Event)


3.4 Voice & Text Notes Sync

Booth conversations, voice memo transcriptions, and rep text notes are attached directly to the Salesforce Contact:
  • Text Notes: Synced as standard Salesforce Note (ParentId, Title, Body).
  • Audio Voice Notes: Uploaded as binary ContentVersion records linked to ContentDocumentLink.

Text Note Payload (POST /services/data/v60.0/sobjects/Note)

Audio Voice Note Payload (POST /services/data/v60.0/sobjects/ContentVersion)


3.5 Content Engagement Signals

When attendees view digital cards, download technical spec sheets, or view brochures after the show, BoothMaven creates a Task associated with the Contact.

Content Signal Task Payload (POST /services/data/v60.0/sobjects/Task)


4. Field Mapping Specifications


5. Deduplication & Conflict Handling

BoothMaven implements a multi-stage deduplication strategy to preserve CRM data integrity:
  1. Email Address Matching: Before creating a Contact, a SOQL query checks SELECT Id FROM Contact WHERE Email = '{email}' LIMIT 1.
  2. Native Duplicate Rule Catching: If Salesforce throws a DUPLICATES_DETECTED error, BoothMaven extracts the existing duplicate record ID from the error response and patches the existing Contact instead of failing.
  3. β€œMet Again” Visitor Logic: If a lead is captured at a second event, BoothMaven does not create a duplicate Contact; it links the existing Contact as a CampaignMember to the new Campaign and logs a β€œMet Again” activity.

6. Asynchronous Trigger Points & Execution Architecture

To keep the BoothMaven mobile scanner instant (sub-second response even on spotty trade show Wi-Fi), all Salesforce API network calls are offloaded asynchronously using Laravel’s queue workers.

Sync vs. Async Trigger Matrix

Job Dispatch Pipeline & Observers

Audit Trail & State Management (CrmLog)

Every asynchronous sync operation records its outcome in the database:
  • Table: bm_crm_logs
  • Fields: provider (salesforce), model_type (contact, event, meeting, contact_note), model_id, parent_record_id (Salesforce ID), sync_status (success, failed), and error details.
  • Prevents redundant syncs and resolves parent-child relationships (e.g. attaching Notes to the correct Salesforce Contact ID).

7. Salesforce Flow Automation Triggers

Because BoothMaven maps each event capture to native Salesforce objects, RevOps and Admins can build automated Salesforce Flows without custom code:
  1. New Contact Created β†’ Trigger: Contact.LeadSource = 'boothmaven' β†’ Action: Create Opportunity, assign territory rep, alert via Chatter.
  2. Hot Lead Score (Score β‰₯ 80) β†’ Trigger: BM_Lead_Score__c >= 80 β†’ Action: Immediately route to Senior AE and create high-priority follow-up Task within 2 hours.
  3. Qualifying Budget Approved β†’ Trigger: BM_Qualification_Data__c contains β€œBudget approved: Yes” β†’ Action: Create Opportunity in β€œEvaluating” stage.
  4. Content Signal Task Created β†’ Trigger: Task.Subject starts with πŸ“„ Content Signal: β†’ Action: Notify account owner via Slack/email that lead is reviewing collateral post-event.
  5. Two-Way Meeting Completed β†’ Trigger: Event.ShowAs = 'Busy' β†’ Action: Advance Opportunity stage to β€œProposal” and push completion outcome back to BoothMaven.