diff --git a/docs.json b/docs.json
index bf329f7..5ccff72 100644
--- a/docs.json
+++ b/docs.json
@@ -277,16 +277,19 @@
"pages": [
"apps/asp-integration",
"apps/bizzabo-integration",
+ "apps/brella-integration",
"apps/event-platform-comparison",
"apps/expoplatform-integration",
"apps/gleanin-integration",
"apps/grip-integration",
"apps/ingo-integration",
+ "apps/livebuzz-integration",
"apps/on24-integration",
"apps/snoball-integration",
"apps/stova-integration",
"apps/swapcard-integration",
"apps/swoogo-integration",
+ "apps/visit-integration",
"integrations/cvent",
"integrations/sso",
"integrations/zapier"
diff --git a/public/logo/apps/brella-integration.png b/public/logo/apps/brella-integration.png
new file mode 100644
index 0000000..c534ee5
Binary files /dev/null and b/public/logo/apps/brella-integration.png differ
diff --git a/public/logo/apps/livebuzz-integration.png b/public/logo/apps/livebuzz-integration.png
new file mode 100644
index 0000000..f48f644
Binary files /dev/null and b/public/logo/apps/livebuzz-integration.png differ
diff --git a/public/logo/apps/visit-integration.png b/public/logo/apps/visit-integration.png
new file mode 100644
index 0000000..eee6521
Binary files /dev/null and b/public/logo/apps/visit-integration.png differ
diff --git a/public/og/apps--brella-integration.png b/public/og/apps--brella-integration.png
new file mode 100644
index 0000000..e1924e6
Binary files /dev/null and b/public/og/apps--brella-integration.png differ
diff --git a/public/og/apps--livebuzz-integration.png b/public/og/apps--livebuzz-integration.png
new file mode 100644
index 0000000..fd7ac75
Binary files /dev/null and b/public/og/apps--livebuzz-integration.png differ
diff --git a/public/og/apps--visit-integration.png b/public/og/apps--visit-integration.png
new file mode 100644
index 0000000..bd9afc4
Binary files /dev/null and b/public/og/apps--visit-integration.png differ
diff --git a/src/breadcrumbs.json b/src/breadcrumbs.json
index 3169d82..e9a03b9 100644
--- a/src/breadcrumbs.json
+++ b/src/breadcrumbs.json
@@ -1930,6 +1930,19 @@
],
"section": "Apps & connectors"
},
+ "apps/brella-integration": {
+ "trail": [
+ {
+ "label": "Apps",
+ "href": "/integrations/overview"
+ },
+ {
+ "label": "Apps & connectors",
+ "href": "/apps/asp-integration"
+ }
+ ],
+ "section": "Apps & connectors"
+ },
"apps/event-platform-comparison": {
"trail": [
{
@@ -1995,6 +2008,19 @@
],
"section": "Apps & connectors"
},
+ "apps/livebuzz-integration": {
+ "trail": [
+ {
+ "label": "Apps",
+ "href": "/integrations/overview"
+ },
+ {
+ "label": "Apps & connectors",
+ "href": "/apps/asp-integration"
+ }
+ ],
+ "section": "Apps & connectors"
+ },
"apps/on24-integration": {
"trail": [
{
@@ -2060,6 +2086,19 @@
],
"section": "Apps & connectors"
},
+ "apps/visit-integration": {
+ "trail": [
+ {
+ "label": "Apps",
+ "href": "/integrations/overview"
+ },
+ {
+ "label": "Apps & connectors",
+ "href": "/apps/asp-integration"
+ }
+ ],
+ "section": "Apps & connectors"
+ },
"integrations/cvent": {
"trail": [
{
diff --git a/src/content/docs/apps/brella-integration.mdx b/src/content/docs/apps/brella-integration.mdx
new file mode 100644
index 0000000..a3c8b6c
--- /dev/null
+++ b/src/content/docs/apps/brella-integration.mdx
@@ -0,0 +1,73 @@
+---
+title: "Brella"
+description: "Push speakers and content timeslots from Sessionboard to a Brella event, and unpublish them when they leave the accepted set."
+---
+
+import { Note, Steps, Step } from '@compat';
+
+
+
+Brella is an event networking and content platform. Connect a Sessionboard event to a Brella event and Sessionboard pushes speakers and content timeslots, then keeps them aligned on a 30-minute cadence.
+
+Each Brella event is its own connection. Sessionboard matches remote records by `external_id`, which is the Sessionboard contact or session id.
+
+## Connect Brella
+
+You can start from **Apps** on the organization or the event. The **Settings → Integrations** Brella tile opens the same page.
+
+
+
+ Go to **Apps**, then click **Brella**. Click **Connect Brella**.
+
+
+ Enter a **Name** — for example, the show year. A name is required because you can add more than one Brella connection.
+
+
+ Fill in the values from your Brella organization:
+
+ - **Brella API Access Token**
+ - **Brella Organization ID**
+ - **Brella Event ID** — Brella's event id, not the Sessionboard event id.
+
+
+ Confirm the Brella event timezone matches the Sessionboard event timezone on **Settings → Event Details**. Then click **Save connection**. Sessionboard verifies the token before it stores the connection.
+
+
+
+
+Credentials are encrypted at rest and are not shown again after you save. Leave a secret blank when you edit a connection to keep the current value.
+
+
+## What syncs
+
+Only **accepted** sessions and the people on those sessions sync.
+
+| Sessionboard | Brella |
+| --- | --- |
+| Speaker, moderator, or chairperson on an accepted session | Speaker (name, email, company, role, `external_id` = the contact id) |
+| Accepted session | Content timeslot (title, description, start, end, `external_id` = the session id) |
+| Person on a session | Speaker attached to that timeslot |
+
+When a session or participant leaves the accepted set, Sessionboard unpublishes the matching Brella record. Meetings and RSVPs on that record stay intact because the record is hidden, not removed.
+
+## Field mappings
+
+After the connection is saved, open **Field mappings** on the Brella app page to change which Sessionboard fields map to Brella for that connection. Defaults cover name, email, company, role, title, description, and times.
+
+## Run a sync
+
+Scheduled sync runs about every 30 minutes once the connection is saved.
+
+To push immediately, open the connection on the Brella app page and click **Sync**. **Check drift** compares Sessionboard to Brella without writing.
+
+Accept the sessions you want in Brella, and confirm timezones match, before the first sync.
+
+## Add or remove a connection
+
+Click **Add a connection** to point a second Brella event at the same Sessionboard event.
+
+To remove a connection, use the trash control on that row. Previously synced Brella records stay in Brella; Sessionboard stops updating them.
+
+## Still having issues?
+
+Email [support@sessionboard.com](mailto:support@sessionboard.com) and include the connection name, the Brella organization and event id, and the session or contact that did not sync.
diff --git a/src/content/docs/apps/livebuzz-integration.mdx b/src/content/docs/apps/livebuzz-integration.mdx
new file mode 100644
index 0000000..b5bdf10
--- /dev/null
+++ b/src/content/docs/apps/livebuzz-integration.mdx
@@ -0,0 +1,79 @@
+---
+title: "LiveBuzz"
+description: "Push accepted sessions, rooms, and speakers from Sessionboard to a LiveBuzz campaign, then keep them in sync."
+---
+
+import { Note, Steps, Step } from '@compat';
+
+
+
+LiveBuzz (LiveControl) is the campaign and registration system behind many Clarion and other large-format events. Connect a Sessionboard event to a LiveBuzz campaign and Sessionboard pushes accepted sessions, rooms, and speakers on a 30-minute cadence.
+
+Each campaign is its own connection. Name them so two campaigns on the same event stay distinct.
+
+## Connect LiveBuzz
+
+You can start from **Apps** on the organization or the event. The **Settings → Integrations** LiveBuzz tile opens the same page.
+
+
+
+ Go to **Apps**, then click **LiveBuzz**. Click **Connect LiveBuzz**.
+
+
+ Enter a **Name** — for example, the campaign or show year. A name is required because you can add more than one LiveBuzz connection.
+
+
+ Fill in the fields from your LiveBuzz account:
+
+ - **LiveBuzz API Key**
+ - **LiveBuzz Organization** — the subdomain, such as `clarion` for `clarion.control.buzz`
+ - **LiveBuzz Campaign ID**
+ - **LiveBuzz Domain** — leave blank to use `control.buzz`. UAT uses `control.dev.uat.buzz`.
+
+
+ Leave **Push sessions (seminars)** and **Push speakers (customers)** on unless you only want rooms. Click **Save connection**. Sessionboard verifies the key before it stores the connection.
+
+
+
+
+Credentials are encrypted at rest and are not shown again after you save. Leave a secret blank when you edit a connection to keep the current value.
+
+
+## What syncs
+
+Only **accepted** sessions and the people on those sessions sync. Rooms come from the event's session rooms.
+
+| Sessionboard | LiveBuzz |
+| --- | --- |
+| Session room | Theater (`source` = `sessionboard`, `source_id` = the room id) |
+| Accepted session | Seminar (title, description, start, end, theater) |
+| Speaker, moderator, or chairperson on an accepted session | Customer (name, email, company, biography) |
+| Person on a session | Customer–seminar registration, with their role |
+
+Sessionboard looks up existing LiveBuzz records by `source` + `source_id`, so a second sync updates the same theater, seminar, or customer instead of creating a duplicate.
+
+When a session leaves the accepted set, Sessionboard cancels that speaker's LiveBuzz registration. The customer record stays.
+
+The LiveBuzz registration id and badge id write back onto the Sessionboard contact when LiveBuzz returns them.
+
+## Field mappings
+
+After the connection is saved, open **Field mappings** on the LiveBuzz app page to change which Sessionboard fields map to LiveBuzz for that connection. Defaults cover the standard name, email, company, biography, title, description, and time fields.
+
+## Run a sync
+
+Scheduled sync runs about every 30 minutes once the connection is saved.
+
+To push immediately, open the connection on the LiveBuzz app page and click **Sync**. **Check drift** compares Sessionboard to LiveBuzz without writing.
+
+Accept the sessions you want in LiveBuzz, and assign rooms, before the first sync.
+
+## Add or remove a connection
+
+Click **Add a connection** to point a second campaign at the same event.
+
+To remove a connection, use the trash control on that row. Previously synced LiveBuzz records stay in LiveBuzz; Sessionboard stops updating them.
+
+## Still having issues?
+
+Email [support@sessionboard.com](mailto:support@sessionboard.com) and include the connection name, the LiveBuzz organization and campaign id, and the session or contact that did not sync.
diff --git a/src/content/docs/apps/visit-integration.mdx b/src/content/docs/apps/visit-integration.mdx
new file mode 100644
index 0000000..ec8d582
--- /dev/null
+++ b/src/content/docs/apps/visit-integration.mdx
@@ -0,0 +1,83 @@
+---
+title: "Visit"
+description: "Push accepted-session participants from Sessionboard to Visit as visitors, and optionally push sessions as activities."
+---
+
+import { Note, Steps, Step } from '@compat';
+
+
+
+Visit (Visit Cloud) is the registration and visitor-management system used on many Informa and partner expos. Connect a Sessionboard event to a Visit expo and Sessionboard creates visitors for people on accepted sessions. The Visit visitor id writes back onto the Sessionboard contact as the Visit registration ID.
+
+Each expo is its own connection. Visit does not treat email as unique — Sessionboard matches a visitor by the Visit contact reference, which is the Sessionboard contact id.
+
+## Connect Visit
+
+You can start from **Apps** on the organization or the event. The **Settings → Integrations** Visit tile opens the same page.
+
+
+
+ Go to **Apps**, then click **Visit**. Click **Connect Visit**.
+
+
+ Enter a **Name** — for example, the expo or show year. A name is required because you can add more than one Visit connection.
+
+
+ Fill in the values from your Visit expo:
+
+ - **Visit API Key** — the per-event token. Sessionboard sends it as the HTTP Basic username with an empty password.
+ - **Visit Expo ID**
+ - **Registration Form ID** — the Visit form these visitors should use.
+ - **Registration Type ID** — the Visit registration type these visitors should receive (for example Speaker or Panellist).
+
+
+ Turn on **Also push sessions as Visit activities** only if you also want accepted sessions created as Visit activities. If you do, paste the **Visit Location ID** and **Visit Track ID** from the same expo — Visit already has those records, and Sessionboard attaches them by id.
+
+
+ Click **Save connection**. Sessionboard verifies the key against that expo before it stores the connection.
+
+
+
+
+Credentials are encrypted at rest and are not shown again after you save. Leave a secret blank when you edit a connection to keep the current value.
+
+
+The Expo ID, form IDs, registration type IDs, location IDs, and track IDs all live on the Visit expo. Copy them from Visit rather than inventing values.
+
+## What syncs
+
+Participants on **accepted** sessions become Visit visitors. The default connection pushes visitors only.
+
+| Sessionboard | Visit |
+| --- | --- |
+| First name, last name, email, company | Visitor contact |
+| Contact id | Contact `reference` — this is how Sessionboard finds the same visitor on the next sync |
+| Form ID and registration type ID from the connection | Visitor form and registration type |
+| Visit visitor id | Writes back as the contact's Visit registration ID |
+| Accepted session (when activities are on) | Activity (name, start, end, `reference` = the session id) |
+
+A later sync updates the same visitor. If a participant leaves the accepted set, Sessionboard marks that Visit visitor deleted. Sessionboard does not hard-delete Visit records.
+
+Visit allows two API calls at a time, so large speaker lists sync in a steady stream rather than all at once.
+
+## Field mappings
+
+After the connection is saved, open **Field mappings** on the Visit app page to change which Sessionboard fields map to Visit for that connection.
+
+## Run a sync
+
+Scheduled sync runs about every 30 minutes once the connection is saved.
+
+To push immediately, open the connection on the Visit app page and click **Sync**. **Check drift** compares Sessionboard to Visit without writing.
+
+Accept the sessions you want represented in Visit before the first sync.
+
+## Add or remove a connection
+
+Click **Add a connection** to point a second expo at the same event.
+
+To remove a connection, use the trash control on that row. Previously synced Visit visitors stay in Visit; Sessionboard stops updating them.
+
+## Still having issues?
+
+Email [support@sessionboard.com](mailto:support@sessionboard.com) and include the connection name, the Visit expo id, and the contact or session that did not sync. Do not send the API key in email — rotate it in Visit and paste the new key into the connection instead.
diff --git a/src/content/docs/integrations/overview.mdx b/src/content/docs/integrations/overview.mdx
index 5a8b1ae..902ce4b 100644
--- a/src/content/docs/integrations/overview.mdx
+++ b/src/content/docs/integrations/overview.mdx
@@ -45,6 +45,8 @@ Bring webinar recordings and video into your Media library — auto-discover, cl
| App | Notes |
| --- | --- |
| **Cvent** | [Sync sessions & speakers](/integrations/cvent) · Discover · Webinars · *Connected* |
+| **LiveBuzz** | [Push sessions, rooms, and speakers to a campaign](/apps/livebuzz-integration) |
+| **Visit** | [Push participants as visitors](/apps/visit-integration) |
| **Swapcard** | [Event platform sync](/apps/swapcard-integration) · *Connected* |
| **Swoogo** | [Registration sync](/apps/swoogo-integration) · *Connected* |
| **ASP Events** | [Send sessions & speakers to your ASP site](/apps/asp-integration) |
@@ -56,6 +58,7 @@ Bring webinar recordings and video into your Media library — auto-discover, cl
| App | Notes |
| --- | --- |
+| **Brella** | [Speakers and content timeslots](/apps/brella-integration) |
| **Gleanin** | [Social sharing & advocacy](/apps/gleanin-integration) · *Connected* |
| **Grip** | [Networking & matchmaking](/apps/grip-integration) · *Connected* |
| **Snöball** | [Referral marketing](/apps/snoball-integration) · *Connected* |
diff --git a/src/sidebar.json b/src/sidebar.json
index 6b55935..1ca979d 100644
--- a/src/sidebar.json
+++ b/src/sidebar.json
@@ -577,6 +577,9 @@
{
"slug": "apps/bizzabo-integration"
},
+ {
+ "slug": "apps/brella-integration"
+ },
{
"slug": "apps/event-platform-comparison"
},
@@ -592,6 +595,9 @@
{
"slug": "apps/ingo-integration"
},
+ {
+ "slug": "apps/livebuzz-integration"
+ },
{
"slug": "apps/on24-integration"
},
@@ -607,6 +613,9 @@
{
"slug": "apps/swoogo-integration"
},
+ {
+ "slug": "apps/visit-integration"
+ },
{
"slug": "integrations/cvent"
},