A client who no longer wants your broadcasts has two ways out: the one you give them, or the Block and Report buttons in WhatsApp. The second one is expensive. Repeated negative feedback lowers your quality rating, and Meta pauses templates that keep collecting it, so a template you rely on can stop working for every client because a few of them had no polite way to leave.
Data protection laws point the same way. Under the GDPR a client may object to direct marketing at any time, and once they have, you must stop sending it.
This document shows how to give clients a one-tap way out, and how Alaaqat stops messaging them afterwards.
Every contact has an Unsubscribed On property, in the Contact Conversations property group. While it holds a date, the business no longer starts conversations with that contact.
What stops:
What does not stop:
{info} Unsubscribed is not Blocked. Blocking a contact stops their incoming messages from reaching your inbox. Unsubscribing stops your automated outgoing messages. The two are set separately, and one does not imply the other.
Add a Quick reply button to the template you broadcast with. From Conversations > WhatsApp Broadcast, create the template, then in the Buttons section press + Add a Button and choose Quick Reply.

Type the label the client will see — for example Stop promotions or Unsubscribe — into the value
field. The preview on the right shows the button exactly as it will arrive on the client's phone.

Points to keep in mind:
Create a workflow with the following three pieces:
| Event | Message received | The workflow starts when the client taps the button, which reaches you as a message. |
| Condition | Message auto ID equals | The value is the button label from step 1, for example Stop promotions. |
| Action | Unsubscribe Contact | Stamps Unsubscribed On with the moment the client tapped. |
From the Conditions tab, add Message auto ID equals and type the button label into the box under it.

Unsubscribe Contact is in the Actions tab, next to the other contact actions.

Connect Unsubscribe Contact to the true branch of the condition. The false branch is every other message the client sends, so either leave it empty or continue it with your usual auto-reply.
{info} Message auto ID is the same condition used for interactive list and reply buttons, described in the Interactive Messages document. For a template quick reply button, the auto ID is simply the button label.
Use the Unsubscribe Contact action rather than Update Contact on the Unsubscribed On property. Update Contact writes a value you type while building the workflow, so every client who ever taps the button would be recorded with the date you built it. Unsubscribe Contact records the moment the client actually objected, which is the date you need if the objection is ever questioned.
Tapping a button and getting nothing back reads as "it did not work", and the client blocks you anyway. Add a Send Canned Response action that says the request was received, for example:
You have been unsubscribed and will not receive further promotional messages from us. You can still write to us here any time.
Put the canned response before the Unsubscribe Contact action. Automated messages to an unsubscribed contact are stopped, so a confirmation placed after the unsubscribe may never leave.
The confirmation is free: the client's tap opens a 24-hour window, and a reply inside that window is a free-form message, not a template.
Clients also ask verbally — in the chat, over the phone, or by email. To record that, open the contact and set the Unsubscribed On property to the date of the request. It sits in the Contact Conversations group, next to Blocked from Messages; searching the contact's properties for "unsub" is the quickest way to reach it, and the pencil opens a date picker.

Use the real date of the objection, not today's, when the client asked earlier and you are catching up.
If a client asks to receive your messages again, empty the Unsubscribed On property on the contact. From that moment they are a broadcast recipient again.
Only do this when the client asked for it. Clearing an objection to send another campaign is exactly what the property exists to prevent.
The finished workflow reads:
Message received → Message auto ID equals Stop promotions → true → Send Canned Response
(confirmation) → Unsubscribe Contact

From the next broadcast on, that client is no longer in the recipient list, and you never pay to send them a message they did not want.