Voice huddles & call quality

Huddles are lightweight multi-party voice rooms attached to any channel. This page covers every recently shipped huddle feature, and — for each one — how to control it and where it plugs in.

1. Starting a huddle

  1. Open any channel inside a group.
  2. Click Start huddle in the channel header. A docked huddle panel opens at the bottom of the app.
  3. Anyone with access to the channel can join. Every participant appears in the live grid with their name @ company badge.

2. Overall call-quality indicator

The huddle header shows three at-a-glance numbers computed across all connected peers:

  • Best — the healthiest peer link right now.
  • Worst — the weakest link (this is what limits the call).
  • Avg — the mean quality score across the room.

Scores combine RTT, jitter and packet-loss. Colour maps to standard tiers — green (good), amber (fair), red (poor). Nothing to configure; the indicator updates every few seconds while the huddle is active.

3. Peer connection warnings

When a remote participant's link degrades, an amber banner appears in the huddle dock listing plain-language reasons for each affected peer:

  • “likely experiencing packet loss (5%)”
  • “unstable connection (jitter 80 ms)”
  • “high latency (450 ms)”
  • “reconnecting (attempt 2)”

These warnings tell you why their audio is bad — so you don't blame your own mic. No setup required.

4. Auto-reconnect & retry duration

WebRTC transports drop occasionally on flaky networks. X-com will silently reconnect for you, but you decide the policy per user.

Where: workspace sidebar → NotificationsHuddle reconnect section.

  • Enable automatic reconnect — toggle on/off. When off, a dropped peer stays dropped until manually rejoined.
  • Maximum retry duration — how long the client keeps trying before giving up (default 30 seconds; raise it for high-latency networks).

Settings persist per user across devices via the user_notification_settings table.

5. Report call issue

Click Report issue in the huddle header (or immediately after the call ends). X-com packages the last few minutes of WebRTC telemetry into a support-ready bundle:

  • Per-peer RTT, jitter, packet-loss, bitrate samples
  • Reconnect attempts and their outcomes
  • Overall quality timeline and drop events
  • Anonymised peer IDs (never names or message content)

The bundle is attached to a support ticket in one click — no screenshots or copy-paste required.

6. Call-quality analytics dashboard

Where: workspace sidebar → Call quality (route: /app/w/:workspaceId/call-quality).

Filter by time range (24h / 7d / 30d) and by channel. You get:

  • KPI cards — total samples, weighted average drop rate, weighted average packet loss, total reconnects across the range.
  • Workspace-wide sparkline — drop-rate trend across the whole workspace.
  • Per-channel breakdown — detailed table showing which channels or clients are experiencing degraded voice, so ops can act.

Data is collected non-intrusively: while a huddle is active the client flushes aggregated stats every 30 seconds (and once on exit) to thehuddle_call_samples table. Telemetry errors never interrupt the call itself.

7. Connecting your own tooling

Everything above is queryable from your own backend or BI stack:

  • Aggregated trends — call the get_call_quality_trends Postgres function or expose it via the Data API (RLS applies).
  • Raw samples — read from huddle_call_samples (workspace-scoped via RLS).
  • Support tickets — the “Report issue” payload is a plain JSON document; forward it to Zendesk / Linear / your ticketing tool via Integrations.

Feature summary

FeatureWhere to find itWhat you control
Quality indicatorHuddle dock headerRead-only — auto-updating
Peer warningsHuddle dock bannerRead-only — auto-updating
Auto-reconnectNotifications settingsOn/off + max retry duration
Report call issueHuddle header buttonOne-click bundle send
Analytics dashboardSidebar → Call qualityTime range & channel filter