Skip to content

Seamless Direct and Group Calling Without Pre-existing Rooms #3393

@RebaseYourExpectations

Description

@RebaseYourExpectations

What would you like to do?

I would like to initiate voice/video calls to any Matrix user or group of users without requiring a pre-existing room. Currently, Element Call requires manual room creation and invitation acceptance before any call can begin, creating a significant barrier to spontaneous communication.

Current unpleasant workflow:

  1. Search for contact(s)
  2. Create DM/room
  3. Hope they notice the room
  4. Wait for invitation acceptance
  5. Finally start call

Desired workflow:

  1. Click call button on any contact
  2. They receive incoming call notification
  3. Call connects

Why would you like to do it?

This limitation makes Element Call unsuitable as a primary VoIP solution for organizations and individuals who need:

  1. Emergency Communications: Security teams need instant contact with any employee
  2. Customer Service: Support staff must call users without pre-chat setup
  3. Sales Operations: Outbound calls to new contacts are impossible
  4. Healthcare: Medical staff need immediate colleague consultation
  5. Cross-team Collaboration: Spontaneous calls between users

Real-world impact examples:

  • IT Incident Response: "Server down, need to call on-call engineer" - Cannot reach them without existing room
  • Medical Emergency: "Code call, assemble trauma team" - Must individually invite each doctor first
  • Business Development: "Quick call with prospective client" - Requires awkward "accept my chat first" conversation
  • Private Scenarios: "Call specific group of friends for an event" - Must create room probably days in advance for every one to be able to join.

This represents a severe adoption blocker when organizations evaluate Element against Teams, Zoom, or traditional phone systems. As well as private users searching a replacement for systems like WhatsApp.

How would you like to achieve it?

Implement Seamless Auto-Join functionality that creates rooms transparently during call initiation.

Configuration options:

  • Server-level: Enable/disable seamless calling per homeserver
  • Federation policy: Control cross-server call permissions
  • User preferences: Opt-out of receiving seamless calls
  • Admin controls: Allowlist for seamless calling domains

Technical approach:

  1. Extend m.call.invite to include auto-join tokens
  2. Create (ephemeral) rooms (with special retention policies)
  3. Implement "ring-first, join-later" notification flow

Have you considered any alternatives?

** Alternative 1: Pre-create Rooms for Everyone**
Automatically create DM rooms with all possible contacts. Rejected: Scales terribly, clutters room list, privacy concerns. Not possible for group calls.

** Alternative 2: External Call Routing**
Use SIP/PSTN for contact. Rejected: Breaks E2EE, requires additional infrastructure, defeats Matrix-native approach.

** Alternative 3: Accept Current Limitations**
Train users on current workflow. Rejected: Users expect click-to-call functionality. Does not satisfy requirements.

Additional context

Implementation Benefits

For Organizations:

  • Instant employee reachability
  • Emergency response readiness
  • Reduced onboarding friction
  • Familiar calling patterns

For Matrix Ecosystem:

  • Increased adoption in enterprise
  • Competitive parity with centralized platforms
  • Gateway to Matrix for voice-first users
  • Showcase of protocol flexibility

** Consent mechanisms: **

  • Global "accept calls from" settings (everyone/contacts/nobody)
  • Per-domain allowlists for federated calls
  • Block lists inherited from existing Matrix ignore functionality

** Federation Considerations**

  • Respect remote server policies
  • Clear capability negotiation

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-EnhancementNew features, changes in functionality, performance boosts, user-facing improvements

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions