1. Confirm the opt-out actually registered
Open Contacts → Opt-outs and search for the contact’s phone number.- Listed, active: Flowella will block sends from the channel where they opted out.
- Listed, revoked: A teammate cleared the opt-out, manually or via the API. Re-add it.
- Not listed: The opt-out never registered. See section 2.
2. The opt-out keyword wasn’t recognised
By default, Flowella treats common keywords as opt-out triggers (for exampleSTOP, UNSUBSCRIBE). The match is case-insensitive but typo-sensitive. If the contact wrote please stop messaging me rather than just STOP, no automatic opt-out fires.
You can:
- Manually add the contact to the opt-out list from the inbox or Contacts → Opt-outs.
- Add a quick-reply button to your templates that explicitly says “Unsubscribe” and routes to your opt-out handling.
3. The contact opted out on a different channel
Opt-outs are recorded per WhatsApp channel because consent is given to a specific business sender. If the same contact is messaged from two channels in your org and only opted out on Channel A, sends from Channel B continue. Decide which model you want and apply consistently:- Strict — replicate across all channels
- Per-brand — keep separate
Replicate the opt-out across every channel using the API. Repeat for each channel. See the opt-outs endpoint.
4. A workflow re-enrols opted-out contacts
If a HubSpot workflow keeps trying to message the same opted-out person, the action will fail at the Flowella side (returningContact opted out) — but the contact may still see the workflow attempt.
Add a HubSpot enrolment criterion that excludes contacts whose WhatsApp opt-out property is true. Update that property whenever Flowella records an opt-out using a webhook subscriber or a periodic sync.
Alternatively, subscribe to the optout.created webhook and write back to HubSpot in real time.
5. The contact never opted in cleanly to begin with
This is a policy issue rather than a bug, but worth flagging: WhatsApp requires explicit, unambiguous opt-in before any business-initiated message. If the contact says “I never agreed to this”, investigate how they ended up on your list. Add the opt-out, apologise, and review your collection process.6. The block is working, but they still receive a final message in flight
Outbound sends are queued before the recipient list is finalised. A message that’s already in Meta’s send queue may still deliver in the seconds after an opt-out is recorded. This is rare and self-corrects within a minute.Still seeing messages reach an opted-out contact?
Capture the following before contacting support:
- The contact’s phone number
- The channel ID and name
- The exact send time

