contacts
Read when: finding synced contacts, importing macOS Contacts names, or managing local contact metadata.
wacli contacts works with contact metadata stored locally. Aliases and tags are local to wacli; they do not edit WhatsApp contacts on the phone.
#Commands
wacli contacts search <query> [--limit N]
wacli contacts show --jid JID
wacli contacts check <phone> [phone...]
wacli contacts refresh
wacli contacts import-system [--input FILE] [--dry-run] [--clear]
wacli contacts alias set --jid JID --alias NAME
wacli contacts alias rm --jid JID
wacli contacts tags add --jid JID --tag TAG
wacli contacts tags rm --jid JID --tag TAG
#Notes
searchmatches alias, full name, push name, first name, business name, phone, and JID.searchandshowcombine phone-number and@lidcontact rows only when the local WhatsApp session has a verified mapping. Matching names alone never merge contacts. The combined result uses the phone-number JID and its actual phone number; an unmapped@lidstays separate with an emptyphonefield.- Search matches metadata and stored IDs on either row, as well as the resolved phone number.
--limitapplies after combining duplicates. A contact stored only as@lidis also searchable by its mapped phone number, including partial numbers. - For combined contacts, local aliases and system names retain their display precedence, with the phone-number row winning conflicts within each field.
showaccepts either stored JID or the resolved phone-number JID and combines tags. Reading contacts never rewrites their stored rows or metadata. - Alias and tag commands accept either verified identity, including the JID returned by
searchorshow. Changes apply atomically to both identities so removing metadata cannot reveal an older copy on the other row. These local commands read the session mapping without connecting to WhatsApp or modifying its session database; an unreadable session database fails the command before a metadata write. checkconnects with the account session and asks WhatsApp's servers whether each number is registered (accepts +E164, common formatting, or user JIDs). Results are reported per query and not stored locally; use--jsonfor scripting. A number the server did not answer for is reported asno response(JSON"responded": false) — treat it as unknown, not as a confirmed negative.refreshimports contacts from the whatsmeow session store intowacli.db.import-systemimports display names from macOS Contacts by matching phone numbers against already-synced wacli contacts. Runcontacts refreshfirst.import-system --input FILEreads a JSON array or newline-delimited JSON contacts file withfull_nameandphonesfields instead of opening macOS Contacts.- Imported system names are local wacli metadata. They do not edit WhatsApp contacts or macOS Contacts.
- Display precedence is local alias, imported system name, then WhatsApp names.
- Use
import-system --dry-runbefore writing. Useimport-system --clearto remove imported system names. - See contacts import-system for the full import workflow, JSON shape, file format, and verification steps.
- Tags are local grouping metadata for scripts and future workflows.
#Examples
wacli contacts search Alice
wacli contacts show --jid 1234567890@s.whatsapp.net
wacli contacts check +43 664 12345678 --json
wacli contacts refresh
wacli contacts import-system --dry-run
wacli contacts alias set --jid 1234567890@s.whatsapp.net --alias mom
wacli contacts tags add --jid 1234567890@s.whatsapp.net --tag family