WhatsApp Bridge #

Based on mautrix-whatsapp, the most feature-complete Matrix ↔ WhatsApp bridge. Uses the same multi-device pairing that WhatsApp Web and WhatsApp Desktop use, so no phone number re-registration is needed.

WhatsApp uses Signal-protocol E2EE natively. The bridge participates in the encryption on the WhatsApp side AND your Matrix room can independently be E2EE — messages are encrypted at every hop.

Prerequisites #

  • Meldry plan: Business
  • A working WhatsApp account on your phone — the bridge uses your phone as the "primary device", exactly like linking WhatsApp Web
  • Your phone online when linking (messages can still sync later when the phone is offline, but the initial pair requires it to be reachable)

Enable the bridge #

  1. Dashboard → Server → Bridges → WhatsApp → Enable.
  2. Wait ~10 seconds for the container. The bot appears at @whatsappbot:<your-name>.meldry.com.
  1. In your Matrix client, DM @whatsappbot:<your-name>.meldry.com.
  2. Send login.
  3. The bot replies with a QR code image. Open it at full size in your Matrix client.
  4. On your phone, open WhatsApp → Settings → Linked devices → Link a device. Point the camera at the QR code.
  5. WhatsApp registers your Meldry bridge as a linked device. The bot replies Successfully logged in as +14155550001.
  6. The bridge backfills your recent chats as Matrix rooms within a minute.

What gets bridged #

  • 1:1 chats → Matrix DM rooms, with your contact's display name and avatar puppeted.
  • Groups → Matrix rooms under a WhatsApp space.
  • Media — photos, videos, voice notes, documents, stickers. All downloaded, re-encrypted and re-uploaded to Matrix.
  • Reactions, replies, edits, deletes → bidirectional.
  • Read receipts → bidirectional, respecting your WhatsApp privacy settings.
  • Status updates → NOT bridged (WhatsApp's Stories feature is not part of the multi-device API).
  • Communities and broadcast lists → partial support.
  • Voice and video calls → NOT bridged (WhatsApp's Signal-protocol calls can't be proxied).

Commands reference #

CommandWhat it does
loginStart QR-code pairing
logoutUnlink from WhatsApp (also unlinks on the phone's linked-devices list)
statusShow link health
list-contactsList your WhatsApp contacts
pm <+countrynumber>Start a DM with a WhatsApp number
syncForce a resync of all chats
helpFull command list

The linked-device limit #

WhatsApp caps you at 4 linked devices per phone number (5 including the phone itself). If you're already using WhatsApp Web on a computer, WhatsApp Desktop and WhatsApp for iPad, the bridge link is your fourth slot. Check Settings → Linked devices on the phone to see what's using slots.

Phone-offline behavior #

On the legacy (pre-multi-device) WhatsApp bridge, your phone had to stay online. The current multi-device bridge works even if your phone is off — but:

  • For the first ~14 days of being linked, WhatsApp may require your phone to ping in every few days or the link is revoked.
  • After the bridge has "proven" itself, it can run standalone.

If your phone stays off for too long and the link is revoked, just re-run login and scan a new QR code.

Troubleshooting #

QR code expires — WhatsApp regenerates it every ~30 seconds. Run login again if you miss the window.

"WhatsApp says this device is already linked" — Open Settings → Linked devices on your phone and unlink any stale Meldry entry, then re-run login.

Messages suddenly stop syncing — the link was revoked. Usually a phone software update or a prolonged phone-offline period. Re-run login.

Contact names missing — WhatsApp's multi-device API only gives you contacts that the phone has already synced. Open the chat on your phone once, then run sync in the bridge DM.

Media doesn't download — Meldry's bridge downloads media into your workspace's media store. Check your storage quota (Dashboard → Server → Resources).

Privacy considerations #

  • Your WhatsApp messages traverse Meldry infrastructure while being bridged. They're E2EE on both ends but momentarily decrypted at the bridge process to re-encrypt for Matrix.
  • Your phone number is stored in the bridge database. Deleting the bridge deletes the credential.
  • Meldry does not log or retain message content beyond what's needed for the Matrix room state.

What's next #