Skip to main content

swapcard

Swapcard Integration Guide

Overview

This guide explains how to connect Bridged with Swapcard to read event content including attendee data, exhibitor information, session schedules, speaker profiles, and analytics data. The integration supports reading this data for activation, qualification, and nurture playbooks where event context is needed to power conversational agents.

Swapcard is an event management platform that powers virtual, hybrid, and in-person events. It provides APIs for accessing event data including attendees, exhibitors, sessions, speakers, and analytics .

Primary Use Case: Read Event Content

For Bridged's event experience integrations, the primary use case is reading event-related data, including:

Data Type

Use in Bridged

Attendee data

Personalize outreach and qualification conversations

Exhibitor information

Support exhibitor-related queries and matchmaking

Session/Agenda data

Answer attendee questions about schedules

Speaker profiles

Provide speaker bios and session information

Analytics data

Track engagement for lead scoring

Prerequisites

Before starting, ensure you have:

  • A Swapcard account with organizer or admin access

  • API access enabled for your Swapcard account

  • Your Event ID for the target event

Note: API access requires an access token (API key) that you generate within Swapcard's Event Studio .

Connection Methods

Swapcard supports multiple integration methods for data access. For Bridged's read-only use case, the following methods are relevant:

Method

Best for

Setup complexity

Data Access

Access Token (API Key - Preferred)

Direct API access to event data

Low

Attendees, Exhibitors, Sessions, Speakers

Webhooks

Real-time event notifications

Medium

Profile updates, exhibitor updates

Analytics API

Raw analytics and engagement data

Low

User actions, engagement metrics

Recommendation: Use Access Token authentication with Swapcard's GraphQL API for most data access needs. The Analytics API is available for raw engagement data streams .

Step 1: Obtain Your Access Token

Swapcard uses Access Tokens (API keys) for authentication. You can create these directly in the Event Studio .

Step 1.1: Generate an Access Token

  1. Log in to your Swapcard Event Studio.

  2. Navigate to the Integrations section.

  3. Look for API Keys or Access Tokens in the settings.

  4. Click Create New Token.

  5. Give the token a name (e.g., Bridged Integration).

  6. Select the appropriate permissions (read-only recommended).

  7. Copy and save the generated token.

⚠️ Important: Your access token gives access to your private Swapcard data and should be treated like a password. Never embed it in web pages .

Step 1.2: Verify Token Permissions

Ensure the user associated with the token has appropriate roles and rights. Only request as much data access as your integration needs to work .

Step 2: Identify Your Event ID

The Event ID is required for most API queries.

Finding Your Event ID

You can retrieve your Event ID using a GraphQL query:

graphql

query {
  events {
    id
    title
  }
}

This will return a list of events your token has access to, with their IDs and titles .

Step 3: Configure Bridged to Connect to Swapcard

  1. Log in to your Bridged dashboard.

  2. Navigate to the Integrations section. If you do not see this section, contact support@bridged.media.

  3. Click SwapcardConnect Account.

  4. Select Access Token as your authentication method.

  5. Enter the following credentials:

Field

Description

Access Token

Your Swapcard API token from Step 1

Event ID

Your Swapcard event identifier

API Endpoint

https://api.swapcard.com/graphql (default)

  1. Click Connect.

API Request Example

For testing, you can use cURL to verify your token works:

bash

curl -X POST 'https://api.swapcard.com/graphql' \
  -H 'Authorization: YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"query": "query { events { id title } }"}'

Step 4: Configure Webhooks for Real-time Sync (Optional)

Swapcard supports webhooks for receiving real-time notifications when data changes .

Step 4.1: Create a Webhook Subscription

Webhooks can be set up in two ways:

Option 1: Via Event Studio

  1. In Event Studio, go to IntegrationsWebhooks

  2. Click Create a webhook

  3. Enter the following:

Field

Value

Name

Bridged Integration

Endpoint URL

https://gateway.bridged.media/webhooks/swapcard

Secret

Generate a secure secret (used for verification)

Events to subscribe

Select relevant events

Option 2: Via GraphQL API

graphql

mutation CreateWebhook ($input: CreateWebhookInput!) {
  createWebhook(input: $input) {
    webhook {
      id
      endpoint
      enabled
      hooks
    }
  }
}

With variables:

json

{
  "input": {
    "eventId": "YOUR_EVENT_ID",
    "endpoint": "https://gateway.bridged.media/webhooks/swapcard",
    "secret": "your-secret",
    "hooks": [
      "PROFILE_CREATE",
      "PROFILE_UPDATE",
      "EXHIBITOR_CREATE",
      "EXHIBITOR_UPDATE"
    ]
  }
}

Step 4.2: Available Webhook Events

Event

Trigger

Use Case

PROFILE_CREATE

New attendee/speaker profile created

Real-time attendee sync

PROFILE_UPDATE

Profile information updated

Keep attendee data current

EXHIBITOR_CREATE

New exhibitor added

Real-time exhibitor sync

EXHIBITOR_UPDATE

Exhibitor information changed

Keep exhibitor data current

PLANNING_CREATE

New session created

Real-time agenda updates

PLANNING_UPDATE

Session information changed

Keep schedule current

Step 4.3: Webhook Security Verification

Swapcard includes a X-Signature-256 header with each webhook request. This is an HMAC hex digest of the request body using your secret as the key .

Example verification (Node.js):

javascript

const crypto = require('crypto');

function verifySwapcardSignature(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(JSON.stringify(body))
    .digest('hex');
  
  return crypto.timingSafeEqual(
    Buffer.from(signature.replace('sha256=', '')),
    Buffer.from(expected)
  );
}

Important: Always use a constant-time comparison function to avoid timing attacks .

Step 5: Configure Sync Settings

Once connected, configure the following:

Setting

Options

Description

Data objects

Attendees, Exhibitors, Sessions, Speakers, Analytics

Which event data to read

Sync frequency

Real-time (webhooks), Hourly, Daily

How often to refresh event data

Analytics delay

10+ minutes (fixed)

Analytics API has a 10-minute delay

Bulk sync limit: Each bulk operation is limited to 50 records per request.

Step 6: Reading Event Data from Swapcard

Swapcard provides a GraphQL API for accessing event data .

Available Data Types

Based on Swapcard's API capabilities, the following data types are accessible :

Data Type

GraphQL Query

Description

Events

events { id title }

List of events

Attendees

allSwapcardAttendee

Attendee profiles and registration data

Exhibitors

allSwapcardExhibitor

Exhibitor information

Sessions/Planning

allSwapcardPlanning

Session schedules and details

Speakers

allSwapcardSpeakers

Speaker profiles

Groups

event { groups }

Attendee, exhibitor, speaker groups

Example: Fetch Event Groups

Groups help segment attendees, exhibitors, and speakers. Default groups include Attendees, Exhibitors, and Speakers .

graphql

query EventGroupsByEventId($eventId: ID!) {
  event(id: $eventId) {
    groups {
      id
      name
      peopleCount
      priority
      isDefault
    }
  }
}

Variables:

json

{
  "eventId": "YOUR_EVENT_ID"
}

Example: Fetch Exhibitors

graphql

query GetExhibitors($eventId: ID!) {
  event(id: $eventId) {
    exhibitors {
      id
      name
      description
      boothNumber
    }
  }
}

Example: Fetch Sessions/Planning

graphql

query GetPlanning($eventId: ID!) {
  event(id: $eventId) {
    planning {
      id
      title
      startTime
      endTime
      speakers {
        id
        name
      }
    }
  }
}

Step 7: Reading Analytics Data

Swapcard provides an Analytics API for accessing raw user engagement data .

Analytics API Overview

The Analytics API has a single HTTP POST endpoint that returns a stream of newline-separated JSON objects, ordered from least recent to most recent .

Endpoint: https://developer.swapcard.com/event-admin/export/analytics

Request Format

bash

curl -X POST 'https://developer.swapcard.com/event-admin/export/analytics' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: YOUR_ACCESS_TOKEN' \
  -d '{
    "event_ids": ["YOUR_EVENT_ID"],
    "time_gt": "2026-01-01T00:00:00.000Z",
    "time_lt": "2026-04-19T00:00:00.000Z"
  }'

Request Parameters

Parameter

Type

Description

event_ids

string array

Required - IDs of events

time_gt

string

RFC 3339 timestamp - start of time range

time_lt

string

RFC 3339 timestamp - end of time range

cursor

string

Starting position for consecutive calls

limit

integer

Maximum rows to stream (default: infinite)

events

string array

Filter by action types

Available Analytics Events

The Analytics API tracks various user actions :

Event Type

Description

people_view_search

User searched for people

exhibitor_show

User viewed an exhibitor

document_open

User opened a document

planning_stream_start

User started watching a session stream

Response Format

Each line in the response is a JSON object:

json

{
  "cursor": "eyJFeGFtcGxlQ3Vyc29yIjogMX0=",
  "time": "2020-09-04T15:00:17.737Z",
  "event": "people_view_search",
  "platform": "web-user",
  "event_id": "RXZlbnRfMA==",
  "properties": {
    "query": "market"
  },
  "user_id": "VXNlcl8w",
  "group_ids": ["RXZlbnRHcm91cF8w"]
}

Pagination with Cursor

The cursor field in each response object can be used to retrieve subsequent actions in consecutive requests :

bash

curl -X POST 'https://developer.swapcard.com/event-admin/export/analytics' \
  -H 'Authorization: YOUR_TOKEN' \
  -d '{
    "event_ids": ["EVENT_ID"],
    "cursor": "eyJFeGFtcGxlQ3Vyc29yIjogMX0="
  }'

⚠️ Analytics API Limitations

Limitation

Impact

10-minute delay

Events are delayed by 10 minutes; most recent event occurred at least 10 minutes ago

Not real-time

Cannot be used for immediate triggers

Step 8: Configure Sync Settings

Once connected, configure the following:

Setting

Options

Description

Data objects

Attendees, Exhibitors, Sessions, Speakers, Analytics

Which event data to read

Sync frequency

Real-time (webhooks), Hourly, Daily

How often to refresh event data

Historical data

Days to look back (e.g., 30, 90, 365)

Sync data within date range

Analytics delay

10+ minutes (fixed)

Note: Analytics data has inherent delay

Bulk sync limit: Each bulk operation is limited to 50 records per request.

Step 9: Test the Integration

  1. In Bridged, go to IntegrationsSwapcardTest Connection.

  2. Verify that the access token is valid.

  3. Run a test GraphQL query to fetch event data.

  4. Verify that attendee, exhibitor, or session data appears correctly.

  5. If using webhooks: Create a test profile update and verify the webhook is received.

  6. If using Analytics API: Query a small time range and verify data format.

Common Use Cases

Playbook

How Event Data Is Used

Activation

Read attendee list from Swapcard to trigger pre-event reminders and networking prompts via WhatsApp

Qualification Agent

Read attendee profiles, exhibitor interactions, and session attendance from Analytics API to inform lead scoring

Nurture & Conversion

Read session and speaker information to provide context for post-event follow-up conversations

Example Conversation Powered by Swapcard Data

When an attendee asks "Which exhibitors are in Hall B?", Bridged:

  1. Reads exhibitor data from Swapcard's GraphQL API

  2. Filters by booth location

  3. Provides a conversational list of relevant exhibitors

When a lead asks "What sessions is Jane Smith speaking at?", Bridged:

  1. Reads speaker and planning data from Swapcard

  2. Identifies sessions linked to that speaker

  3. Responds with accurate schedule information

Integration Limitations & Considerations

Limitation

Impact

Workaround

Analytics API has 10-minute delay

Not suitable for real-time triggers

Use webhooks for real-time needs

Access token requires manual creation

Cannot self-service via API

Generate token in Event Studio

Webhooks require secret verification

Must implement HMAC validation

Use constant-time comparison

Rate limits

Depends on plan

Contact Swapcard for specific limits

Rate Limiting & Performance

  • Rate limits depend on your Swapcard plan (contact Swapcard for specifics)

  • Analytics API streams data as newline-separated JSON; can be infinite if no limit is provided

  • Webhooks are delivered in real-time as events occur

  • GraphQL API supports standard pagination

  • Bulk operations: Maximum 50 records per request

Security & Permissions

  • Access Tokens should be treated like passwords and never embedded in web pages

  • Use read-only tokens when possible

  • Webhooks include an X-Signature-256 header for request verification

  • All API calls should be made over TLS 1.2+

  • You can revoke access at any time by deleting the access token in Event Studio

Required Token Permissions

Permission

Required for

Read Events

Basic event data

Read Attendees

Attendee profiles

Read Exhibitors

Exhibitor information

Read Planning

Session schedules

Read Analytics

Engagement data

Troubleshooting

Issue

Likely cause

Solution

Connection fails

Invalid access token

Regenerate token in Event Studio

GraphQL query fails

Missing permissions

Ensure token has appropriate scopes

No data returned

Wrong Event ID

Verify Event ID using events query

Webhook not received

Invalid endpoint or secret

Verify URL and test with X-Signature-256 validation

Analytics API returns no data

Time range too narrow

Expand time_gt and time_lt range

Analytics data delayed

10-minute buffer

Account for delay in use cases

Rate limiting

Too many requests

Reduce sync frequency

Common GraphQL Errors

Error

Solution

401 Unauthorized

Access token invalid or expired

403 Forbidden

Token lacks required permissions

404 Not Found

Event ID does not exist

429 Too Many Requests

Rate limit exceeded

Support

For integration support, contact your Bridged account manager or email support@bridged.media.

For Swapcard-specific questions: