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
Log in to your Swapcard Event Studio.
Navigate to the Integrations section.
Look for API Keys or Access Tokens in the settings.
Click Create New Token.
Give the token a name (e.g.,
Bridged Integration).Select the appropriate permissions (read-only recommended).
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
Log in to your Bridged dashboard.
Navigate to the Integrations section. If you do not see this section, contact
support@bridged.media.Click Swapcard → Connect Account.
Select Access Token as your authentication method.
Enter the following credentials:
Field | Description |
|---|---|
Access Token | Your Swapcard API token from Step 1 |
Event ID | Your Swapcard event identifier |
API Endpoint |
|
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
In Event Studio, go to Integrations → Webhooks
Click Create a webhook
Enter the following:
Field | Value |
|---|---|
Name |
|
Endpoint URL |
|
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 |
|---|---|---|
| New attendee/speaker profile created | Real-time attendee sync |
| Profile information updated | Keep attendee data current |
| New exhibitor added | Real-time exhibitor sync |
| Exhibitor information changed | Keep exhibitor data current |
| New session created | Real-time agenda updates |
| 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 |
| List of events |
Attendees |
| Attendee profiles and registration data |
Exhibitors |
| Exhibitor information |
Sessions/Planning |
| Session schedules and details |
Speakers |
| Speaker profiles |
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 |
|---|---|---|
| string array | Required - IDs of events |
| string | RFC 3339 timestamp - start of time range |
| string | RFC 3339 timestamp - end of time range |
| string | Starting position for consecutive calls |
| integer | Maximum rows to stream (default: infinite) |
| string array | Filter by action types |
Available Analytics Events
The Analytics API tracks various user actions :
Event Type | Description |
|---|---|
| User searched for people |
| User viewed an exhibitor |
| User opened a document |
| 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
In Bridged, go to Integrations → Swapcard → Test Connection.
Verify that the access token is valid.
Run a test GraphQL query to fetch event data.
Verify that attendee, exhibitor, or session data appears correctly.
If using webhooks: Create a test profile update and verify the webhook is received.
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:
Reads exhibitor data from Swapcard's GraphQL API
Filters by booth location
Provides a conversational list of relevant exhibitors
When a lead asks "What sessions is Jane Smith speaking at?", Bridged:
Reads speaker and planning data from Swapcard
Identifies sessions linked to that speaker
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-256header for request verificationAll 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 |
Webhook not received | Invalid endpoint or secret | Verify URL and test with |
Analytics API returns no data | Time range too narrow | Expand |
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 |
|---|---|
| Access token invalid or expired |
| Token lacks required permissions |
| Event ID does not exist |
| Rate limit exceeded |
Support
For integration support, contact your Bridged account manager or email support@bridged.media.
For Swapcard-specific questions:
Swapcard Developer Hub: https://swapcard.dev
Swapcard Help Center: https://help.swapcard.com
API access requests: Generate tokens in Event Studio or contact Swapcard Support