Managing Opted-Out Contacts (‘Stopped’ Status)

Contacts may be placed in the Stopped folder when they opt out (often via channel-managed keywords like on Twilio) or when you set Status = Stopped in a flow, and this status removes them from groups and blocks outbound messaging while still allowing inbound messages that can reactivate them—so you should pair re-subscription with an explicit opt-in flow and group re-add logic when needed.

Place contacts in “Stopped” (and handle opt-ins) in a few steps

If you just need the essentials, follow this:

  1. Understand what Stopped means: no outbound, inbound allowed, groups removed
  2. Use channel-managed opt-outs when available (provider keywords like STOP/UNSUBSCRIBE)
  3. If not available, build flow-managed opt-out handling and set Status = Stopped
  4. Plan re-subscription: inbound messages can reactivate contacts, but groups won’t be restored automatically
  5. Use an opt-in flow to confirm intent and re-add contacts to the right groups

You’re done. You can now manage opt-outs safely while respecting user choice and channel rules.

Step-by-Step Process

1
Understand what “Stopped” does

Depending on the channel type (for example, Twilio), contacts may be automatically placed in the Stopped folder when they opt out of receiving messages.

Stopped contacts are:

  • removed from all groups
  • unable to receive outbound messages
  • still able to send inbound messages to opt back in

Using the Stopped status is a best practice for managing opt-outs while respecting user choice.

2
Automatic opt-outs (channel-managed)

Some channels provide built-in opt-out keywords (such as STOP, NO, UNSUBSCRIBE).

When a contact sends one of these keywords:

  • RapidPro automatically sets their status to Stopped
  • the contact is removed from all groups
  • outbound messaging to that contact is disabled

[CAPTURE: Contacts tab showing a contact in the “Stopped” folder.]

⚙️
Note: Opt-out and re-subscribe keywords are enforced by the channel provider. Refer to your channel’s documentation for the exact keywords.

3
Manual opt-outs (flow-managed)

If your channel does not support automatic opt-out keywords, you should build opt-out handling directly into your flows.

This is considered best practice.

Example: Opt-out from a newsletter flow

  1. Ask for confirmation: Send a message such as “Do you want to continue receiving our newsletter? Reply YES or NO.”
  2. Detect the opt-out response: Use Wait for Response with rules to detect an opt-out keyword such as NO.
  3. Update contact status to Stopped: Use Update Contact to set Status = Stopped.

[CAPTURE: Flow message asking “Do you want to continue receiving our newsletter? Reply YES or NO.”]
[CAPTURE: Wait for Response node with a rule matching “NO”.]
[CAPTURE: Update Contact action with Status set to Stopped.]

Once updated, the contact is placed in the Stopped folder, removed from all groups, and will no longer receive messages.

4
Handle opting back in correctly

Unlike Blocked contacts, Stopped contacts can opt back in.

If a stopped contact sends an inbound message:

  • they are automatically changed back to Active
  • they are not automatically re-added to groups

[CAPTURE: Contact moving from Stopped back to Active after sending a message.]

⚙️
Best practice: If opt-in matters, use a flow to confirm intent to re-subscribe and explicitly re-add the contact to relevant groups.

5
Stopped vs Blocked (quick comparison)

Status Can receive messages Can send messages Can auto-reactivate Typical use
Stopped ❌ No ✅ Yes ✅ Yes Opt-outs
Blocked ❌ No ❌ Ignored ❌ No Abuse / spam

Best practices

  • Use Stopped for user opt-outs
  • Use Blocked for abuse or spam
  • Always confirm re-subscription before re-adding to groups
  • Keep opt-out logic explicit in flows when channels don’t support it

Common Issues & Quick Fixes

Problem: A stopped contact became active again.

Fix: This is expected if the contact sends an inbound message. RapidPro reactivates them unless the channel provider still enforces an opt-out.

Problem: A stopped contact is still not receiving messages.

Fix: Confirm the channel re-subscribe keywords were used (if channel-managed) and use a flow to re-add the contact to the correct groups if your program depends on group membership.