The messaging preference store is now a public API. Preferences are stated consent grants and opt-outs, keyed by channel and handle (an email address or phone number), and they already decide delivery for every send: an opt-out blocks marketing traffic, and one recorded for all messages blocks transactional traffic too.

## What's new

- `GET`/`POST /v1/preferences` and `GET`/`DELETE /v1/preferences/{preference_id}` are available to API keys carrying the new `preferences` scope. Recording a grant with `consented_at` evidence is also the documented way to resume mailing someone after an unsubscribe.
- The `bird preferences` CLI group and matching MCP tools cover the same operations, and all four SDKs gain a `preferences` resource with typed results.
- Four webhook event types are now public: `preference.granted`, `preference.revoked`, `preference.deleted`, and `whatsapp_suppression.created`. Each fires only when a statement actually changes a record.

Statements are ordered by when they were made rather than when they arrive, so an out-of-order write answers `applied: false` with the surviving statement instead of applying. A statement the recipient made themselves, such as an unsubscribe or a stop keyword, cannot be deleted through the API; it ends only when they opt back in.

Read more in the [webhooks guide](/docs/guides/webhooks#preference-events) and the [API reference](/docs/api/reference/create-preference).