Skip to main content
client.chat is the WaAppStateMutationCoordinator. It writes app-state mutations β€” the per-chat and per-account settings WhatsApp syncs across all your linked devices (mute, pin, archive, read, labels, contacts, …). There are two layers:
  1. Typed convenience helpers for the common operations (setChatMute, setChatPin, …).
  2. A generic set / remove that works against any registered app-state schema β€” for everything without a dedicated helper.
Mutations made elsewhere arrive back as mutation events.

Convenience helpers

Examples

A WaAppStateMessageKey identifies a single message:

Option shapes

Status & broadcast lists

Generic set / remove

For schemas without a helper, use set (with value fields) or remove (index only). The input is flat: pick a schema name, then fill the schema’s index fields (id, chatJid, labelId, …) and value fields side by side. The coordinator routes them to the correct SyncActionValue subfield.
remove takes the same shape minus the value fields:

More schema examples

One concrete set (and remove where applicable) per remaining user-facing schema. Index fields and value fields match the schema’s indexParts and valueField in @vinikjkkj/wa-spec/appstate.

Chat actions

Contacts

Labels

Status & calls

Stickers

Business & marketing

AI threads

Settings & system

The schemas not covered above (ChatAssignment / ChatAssignmentOpenedStatus, the marketing and broadcast surfaces, the payment schemas, and the internal sync schemas like Sentinel and NctSaltSync) are either niche, deprecated on the wire, or managed by the sync engine itself β€” see the warning below before reaching for them.
The value-field name (contactAction, labelEditAction, …) matches the schema’s SyncActionValue subfield.

All schemas

Every key below is a valid schema for set / remove. Schemas with a βœ“ also have a typed convenience helper.

Chat actions

Contacts

Labels

Status & calls

Stickers

Business & marketing

Payments

AI threads

Settings & system

Several schemas (Sentinel, NctSaltSync, PrimaryVersion, DeviceCapabilities, …) are managed internally by the sync engine. They are listed for completeness because the type system accepts them, but writing them by hand can desync app-state β€” prefer the convenience helpers and the documented business schemas.

Syncing

Last modified on May 31, 2026