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
- Open any channel inside a group.
- Click Start huddle in the channel header. A docked huddle panel opens at the bottom of the app.
- 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 → Notifications →Huddle 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_trendsPostgres 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
| Feature | Where to find it | What you control |
|---|---|---|
| Quality indicator | Huddle dock header | Read-only — auto-updating |
| Peer warnings | Huddle dock banner | Read-only — auto-updating |
| Auto-reconnect | Notifications settings | On/off + max retry duration |
| Report call issue | Huddle header button | One-click bundle send |
| Analytics dashboard | Sidebar → Call quality | Time range & channel filter |