Tendro

HubSpot Trade Show Integration: How to Sync Booth Leads in 10 Seconds

Ali Varinlioglu||7 min read

Most HubSpot trade show setups are a CSV upload to a static list three days after the show closes. That works. It also kills every speed and attribution argument for being at the show.

This post covers the RevOps-grade version. Real-time Contact upsert, Company association, event properties, Workflow enrollment, pipeline attribution. If you came to HubSpot from Salesforce, the data model surprises start in section two.

Related: the event-leads-to-CRM hub, the Salesforce sibling, universal badge scanner, and the event lead capture pillar.

How do you sync trade show leads to HubSpot in real time?

Use a scanner that upserts each lead as a HubSpot Contact via the v3 Contacts API on email match, then enrolls it in a Workflow tied to that event.

The actual sequence: rep scans the badge, the scanner OCRs the badge face plus any card or note and enriches it into email and identity fields (most show badges encode an opaque organizer ID, not contact data, so OCR-and-enrich is the path), the integration looks up the Contact by email via POST /crm/v3/objects/contacts/search and either updates or creates via POST /crm/v3/objects/contacts, HubSpot returns the contact ID, an event-specific property gets set, a Workflow listens for that property change, first follow-up fires. End to end, seconds. (Note: HubSpot's batch upsert endpoint does not reliably accept idProperty: email because email is not flagged as a unique property; teams report HTTP 400 errors. The search-then-write pattern is the working path.)

The CSV-to-static-list path is the default failure mode. Scan all weekend on the organizer's tablet, get a CSV Monday, dedup manually, upload, build a Workflow against the list. By Wednesday the prospect has forgotten the booth.

Tier check: Workflow automation requires Marketing Hub Professional or higher (or Sales Hub Pro+ for sales-side workflows). Sequences are gated at Sales Hub Pro and Enterprise (Starter does not include them). Confirm tier before building.

Should trade show scans become HubSpot Contacts or stay as leads?

HubSpot has no standalone Lead object for most accounts. Scans should land as Contacts with an event-tagged Lifecycle Stage and source property.

This is the part that breaks people coming from Salesforce. In Salesforce you land scans as Leads, qualify, then convert to Contact plus Account plus Opportunity. HubSpot's data model is Contacts, Companies, Deals, Tickets. No standard Lead object for most accounts.

The caveat: HubSpot rolled out a Leads object inside the Prospecting workspace for Sales Hub Professional and Enterprise users with an assigned Sales Seat. It is a secondary object associated to Contacts and Companies, not a separate top-level CRM record like Salesforce Leads. Most teams do not use it for trade show ingest. They land the scan as a Contact, set Lifecycle Stage to Lead or MQL, and let Workflows handle the rest.

For RevOps coming from Salesforce: stop trying to recreate the Lead-to-Contact conversion. It does not exist as a one-to-one analog. The HubSpot pattern is Contact-first, Lifecycle Stage as the qualification spine.

For the scanner integration: every scan becomes a Contact. Dedup is by email at upsert time. The "real lead or noise" question gets answered by Lifecycle Stage transitions downstream.

How do you associate event Contacts to the right Company record?

HubSpot auto-associates Contacts to Companies by email domain. Personal-email scans break this. Capture work email or set the Company association manually.

A Contact created with email: jane@acme.com gets auto-associated to the Company record whose domain matches acme.com. If no Company exists, HubSpot creates one and runs Insights enrichment for firmographics.

The break point is personal email. Half the badges at any major show have jane.doe@gmail.com because the prospect did not want spam. Auto-association fails silently. The Contact sits orphaned with no Company tie, which kills Deal-by-Company reporting and account-based scoring.

Three fixes:

  1. Capture work email at the booth. Train reps to ask. Cheap, hard to enforce.
  2. Parse company from the badge. A scanner that OCRs the badge writes the company Contact property, giving HubSpot enough to match by name. Imperfect but covers the common case.
  3. Manually associate post-show. Pull Contacts with no Company, look up domains, set associations. The cleanup tax.

What HubSpot properties should an event scan populate?

Lifecycle Stage, Original Source, Drill-Down 1 and 2, custom Event Name, captured-by owner, scan timestamp, and booth notes.

These eight properties cover routing, attribution, and reporting. Skip any and you lose a downstream capability.

PropertyValueWhy it matters
Lifecycle StageLead or MQL (decide before the show)Routes Workflow + sales SLA
Original SourceOffline SourcesHubSpot's native source attribution
Original Source Drill-Down 1Trade ShowFilterable in reports and lists
Original Source Drill-Down 2Event name (e.g., SaaStr 2026)Per-event attribution
Event Name (custom)Same value as Drill-Down 2Immutable spine; easier to group
Booth OwnerHubSpot user ID of the capturing repFollow-up assignment
Scan TimestampISO 8601 timestampSpeed-to-first-touch reporting
Booth NotesFree text from the conversationSales context

Original Source is HubSpot's native attribution, but in 2026 HubSpot made it editable and introduced a separate Record Source property to carry the immutable platform-native origin signal. Use a custom Event Name property as your attribution spine, let Record Source carry the immutable origin, and treat Original Source as supplementary.

UTM-equivalent fields (hs_analytics_source, hs_analytics_source_data_1, hs_analytics_source_data_2) apply to web-tracked visits only. Scans are offline. Backfilling them is a wasted hour.

How do you trigger HubSpot Workflows from an event scan?

Enroll on contact property change (event property is set) or on list membership (a static or active list of event Contacts). Both fire in seconds.

Two enrollment patterns, both fast:

Property change. Contact-based Workflow with trigger "Event Name is known" or "Event Name is equal to SaaStr 2026". Fires the instant the property is set. Cleanest trigger for real-time follow-up.

Active list membership. Active list filtered by Event Name, enroll Workflow on list membership. Slightly slower because list re-evaluation is not instant. Useful when you also want the list for reporting or ad audience export.

Static lists are a trap. They only contain Contacts matched at build time. Post-show scans never enroll. Use active lists or property-change triggers.

The first Workflow action is the speed play: a personalized email from the booth owner inside the first hour. The Oldroyd/MIT speed-to-lead study found a lead contacted in 5 minutes is 100x more likely to be reached and 21x more likely to qualify than one contacted at 30 minutes. (Caveat: that was measured for inbound web leads, not events, and it measures contact and qualify, not close. Treat as directional.) By day three you are competing with everything else in the inbox.

With Sequences (Sales Hub Pro plus), the second action enrolls the rep for the manual touch.

How do you attribute event-sourced pipeline back to the booth?

Tag each Contact with an event-name and booth-source property, then group Deal reports by that property in Marketing Hub or a custom report.

The Event Name custom property is the attribution spine. Every Deal inherits the associated Contact's Event Name when you build a custom Deal report grouped by associated Contact properties.

What to report on:

  1. Sourced pipeline. Total Deal amount where associated Contact's Event Name equals the show. Headline number.
  2. Closed-won by event. Same filter at 30, 60, 90, 180 days post-show. Most B2B event-sourced deals close in the 90-180 day window.
  3. Pipeline by booth owner. Grouped by Booth Owner property. Identifies which reps generate value at the booth versus which ones just scan.
  4. Speed-to-first-touch. Scan Timestamp to first email send. Lower is better.

Marketing Hub Professional and Enterprise have multi-touch attribution for influenced pipeline. CFOs prefer sourced because it is provable. Marketing prefers influenced because it credits the work. Run both, label which is which.

Reporting only works if Event Name gets set on every scan and never gets overwritten. Do not use Original Source as your spine. Use a custom, immutable Event Name property.

What does an offline scan plus delayed sync look like in HubSpot?

The scanner queues scans locally, then upserts on Contact email when the device reconnects. Dedup happens because upsert matches existing Contacts by email.

Trade show floors have terrible signal. Your scanner needs offline mode or it dies at the worst possible moment. The HubSpot pattern survives because the v3 Contacts API supports an email search before write, which collapses duplicate scans to a single Contact record.

Offline sequence: rep scans, scanner writes to local storage with synced=false, rep keeps scanning. On reconnect, the scanner walks the queue and upserts each Contact. HubSpot creates new Contacts where the email is new and updates existing ones where it matches. Dedup is handled at the API layer: three reps scanning the same prospect resolve to the same Contact ID, latest data wins on conflicts.

Watch the form-fill race: if the prospect submitted a form on your site between scan and sync, your form Workflow may overwrite event attribution. Configure form Workflows to not overwrite Event Name when populated. Five minutes of config.

How does Tendro integrate with HubSpot specifically?

Tendro upserts each scan as a HubSpot Contact in under 10 seconds, applies Company association by domain, and maps event properties via OAuth.

Tendro is what I work on. Factor in the bias.

Setup is OAuth 2.0 against your HubSpot account. Tendro reads custom Contact properties from HubSpot's Properties API so the team can map captured fields to standard or custom properties (Lifecycle Stage, Original Source, anything custom). Mapping survives token refresh.

On scan: badge or card captured, enrichment fills missing email, phone, title, company (Apollo, Hunter, PDL), the integration searches Contacts by email and writes via the v3 Contacts API, Contact ID returned, event-name and booth-owner properties set in the same round trip. Sub-10-second sync is measured from scan completion to HubSpot confirming the Contact ID. Offline scans queue and follow the same flow on reconnect.

HubSpot is one of 17 destinations. Owner assignment uses the captured-by email against HubSpot's Owners API, so the Contact goes to the actual booth rep. Tendro can write hs_lead_name, hs_lead_label, and hs_lead_type for teams using the Leads object; the recommended path is Contact-first plus property-change Workflow enrollment.

Honest limit: Tendro has 11 paying customers. The customer base is smaller than iCapture or Cvent's. If "nobody got fired for picking the biggest vendor" is the operating logic, Tendro will not win on logo strength. The math case: every scan reaches your reps faster, no organizer rental per show, flat annual pricing.

Frequently asked questions

How do you sync trade show leads to HubSpot in real time?

Use a scanner that upserts each lead as a HubSpot Contact via the v3 Contacts API on email match, then enrolls it in a Workflow tied to that event.

Should trade show scans become HubSpot Contacts or stay as leads?

HubSpot has no standalone Lead object for most accounts. Scans should land as Contacts with an event-tagged Lifecycle Stage and source property.

How do you associate event Contacts to the right Company record?

HubSpot auto-associates Contacts to Companies by email domain. Personal-email scans break this. Capture work email or set the Company association manually.

What HubSpot properties should an event scan populate?

Lifecycle Stage, Original Source, Drill-Down 1 and 2, custom Event Name, captured-by owner, scan timestamp, and booth notes.

How do you trigger HubSpot Workflows from an event scan?

Enroll on contact property change (event property is set) or on list membership (a static or active list of event Contacts). Both fire in seconds.

How do you attribute event-sourced pipeline back to the booth?

Tag each Contact with an event-name and booth-source property, then group Deal reports by that property in Marketing Hub or a custom report.

What does an offline scan plus delayed sync look like in HubSpot?

The scanner queues scans locally, then upserts on Contact email when the device reconnects. Dedup happens because upsert matches existing Contacts by email.

How does Tendro integrate with HubSpot specifically?

Tendro upserts each scan as a HubSpot Contact in under 10 seconds, applies Company association by domain, and maps event properties via OAuth.

Stop losing deals at your next event

Keep reading