mautrix-whatsapp surfaces two MXID flavors per human
Integrating with mautrix-whatsapp for a personal-CRM or message-sync use case.
The same WhatsApp contact arrives under different puppet MXIDs depending on chat context. DMs use the phone-derived local part (@whatsapp_<phone>:server). Group chats often use a LID-derived local part instead (@whatsapp_lid-<digits>:server) because WhatsApp privacy gates the LID-to-phone mapping for non-DM contacts and the bridge cannot always resolve it. If you key contacts on the local part you will silently split one human into two records. Inspect a few weeks of live messages before designing the schema, then model phone and LID as separate identifier kinds on the same person.
Before mapping mautrix-whatsapp puppet MXIDs to contacts, scan recent traffic for senders matching @whatsapp_lid- and decide upfront how LIDs attach to people.