Element Call and federated Matrix callers
Last updated: August 2026
When you use Sparks with federated Matrix contacts (other homeservers, e.g. with Element Call or Element Server Suite / ESS), they may call you via Element — not via the Sparks call button. Sparks and Element use different signaling; Sparks can optionally answer Element Call rings in the Sparks UI (MatrixRTC join) or only decline / notify.
What happens on an Element call?
| Call type | Typical source | Sparks behavior |
|---|---|---|
| Sparks call | Call button in Sparks chat | Normal incoming call with ringtone and Accept/Decline |
| Legacy Matrix VoIP | Older Element clients (m.call.invite) | Depending on settings: auto-decline + chat hint or desktop notification only |
| Element Call (MatrixRTC) | Modern Element clients (m.rtc.notification) | Depending on Element Call (MatrixRTC) setting: ignore, decline, notify only, or ring and answer in Sparks |
With “Ring and answer in Sparks”, you get the same call dialog as for Sparks calls. After accept, you join the caller’s LiveKit (basic audio/video; advanced meeting features such as recording or breakout rooms are not available in this interop mode).
Settings
Path: Settings → Chats and channels (Ctrl+. / Cmd+.)
Element / Matrix native calls (legacy VoIP)
Applies to older Matrix calls via m.call.invite:
| Option | Behavior |
|---|---|
| Automatically reject and suggest Sparks | Sparks declines and posts a chat message (e.g. “Please use Sparks for calls …”) |
| Only notify (accept in Element) | Desktop notification; answer in Element — no automatic decline |
Element Call (MatrixRTC)
| Option | Behavior |
|---|---|
| Ignore | No reaction to MatrixRTC ring events (default / safe rollout) |
| Decline and suggest Sparks | Protocol decline to Element + optional chat hint |
| Only notify (accept in Element) | Desktop notification; caller gets no decline |
| Ring and answer in Sparks | Call dialog + ringtone; accept opens the Sparks meeting UI (foreign LiveKit, interop) |
Details: Settings – Chat
Admin note: For answering federated Element Calls, the caller’s homeserver (ESS) must allow tokens for your Sparks homeserver. Without that, join fails — decline and notify still work.
Starting calls inside Sparks
For calls between Sparks users, use the Call or Video button in the Matrix chat. Everyone uses the same Sparks/LiveKit infrastructure (including advanced meeting features).
FAQ
Why doesn’t Sparks ring when someone calls me from Element?
Modern Element calls use MatrixRTC. With Ignore, Sparks does nothing. Choose Only notify or Ring and answer in Sparks.
Does the caller see that I declined?
For legacy VoIP (reject) and MatrixRTC Decline: yes — Sparks sends a protocol-level decline. With Only notify, the caller gets no automatic decline.
Can I still answer in Element?
Yes — with Ignore, Decline, or Only notify, open Element (or the caller’s Matrix client). With Ring and answer in Sparks, you can join directly in Sparks.
What about Microsoft Teams calls?
Teams calls appear in the Teams app, not in Sparks. See Parallel meeting apps for using both at once.
Further Matrix / Element interop (chat)
Besides calls, Sparks also supports (as of August 2026):
- Blocked contacts ↔ Element ignore list (
m.ignored_user_list) — Privacy - Chat favourites / low priority as Matrix tags — Chat
- Join requests when knocking — Room settings
- Voice messages (MSC3245), stickers (
m.sticker), incoming Element polls (MSC3381) - System lines for transcript and recording in the meeting chat — Call log
Related pages
- Dialog: Incoming call — Sparks-native calls (and MatrixRTC when set to answer)
- Area: Calls
- Settings – Chat
- End-to-end encryption