- Only MARKETING-category templates are blocked. Utility and authentication templates, and free-form messages inside an open session, always go through.
- The preference is scoped to the number the contact stopped. Sends from your other numbers are unaffected.
- A contact with no recorded preference is subscribed.
Blocked sends
Sending a marketing template to a stopped contact returns422:
- Broadcasts mark the recipient
suppressedand skip them. See Marketing opt-outs in broadcasts. - Workflow send-template steps record the send as skipped and the workflow continues.
Check a contact’s preference
status is stopped or resumed. marketing_allowed is what you should branch on before a marketing send. An empty data array means the contact never changed their preference — subscribed everywhere.
Fetch a single number with GET /whatsapp/contacts/{identifier}/marketing_preferences/{phone_number_id}. A 404 with "Marketing preference not found" means the contact has no recorded preference on that number — subscribed. Check the error string before treating a 404 as subscribed: a mistyped identifier returns "WhatsApp contact not found" and an unknown number returns "WhatsApp configuration not found".
Mirror opt-outs into your system
Subscribe towhatsapp.contact.marketing_preference_changed. It fires on every real transition — stop and resume — with a monotonic sequence to order deliveries by.

