Email unsubscribes and SMS opt-outs
Understand how GrowthLoop captures unsubscribe requests, records events, and prevents future delivery through GrowthLoop Email and GrowthLoop SMS.
Use unsubscribe groups for email and opt-out handling for SMS to respect recipients' messaging preferences. GrowthLoop's native sending infrastructure stores the preference and blocks future delivery within its scope. GrowthLoop also captures subscription events for your warehouse history and channel reporting.
This guide covers GrowthLoop Email and GrowthLoop SMS. Contact [email protected] to confirm the preference handling available for your channel configuration. For composable destinations, the external platform manages its own unsubscribe and suppression behavior.
How it works
An unsubscribe has two related paths:
- Delivery enforcement — GrowthLoop's sending infrastructure records the email address or phone number as opted out and prevents later delivery covered by that preference.
- Event capture — GrowthLoop receives a webhook, an automatic event notification, from its sending infrastructure. GrowthLoop validates the notification, converts it to a standard event, and queues it for warehouse storage and reporting.
Delivery blocking does not wait for a warehouse write or a reporting refresh. An unsubscribe event does not automatically remove the recipient from your audiences, end their participation in a journey, or change a consent column in your source data.
Key concepts
| Concept | Description |
|---|---|
| Suppression | A sending rule that prevents delivery to an email address or phone number. |
| Email unsubscribe group | A category of email a recipient can unsubscribe from without opting out of every category. |
| Global email unsubscribe | An email preference that blocks all email within the sending account associated with your email channel. |
| SMS messaging service | A GrowthLoop SMS sending service that groups numbers and their opt-out handling. |
| Subscription event | A historical record of an action, such as unsubscribed or resubscribed. It is separate from the current preference used for sending. |
Email unsubscribes
Configure the message and unsubscribe group
Select an Unsubscribe group in the email channel configuration used by your journey destination. GrowthLoop includes that group's identifier with the email send. Configurations that use the same group share its unsubscribe scope. Confirm the group is attached to the configuration you send through; a send without a group does not carry that group's suppression scope.
In Content Studio, use the editor's unsubscribe link with the special destination [unsubscribe]. Use [preference_center] for a link to manage preferences. When you publish to an email configuration with a selected group, GrowthLoop prepares these links for that configuration. The links resolve for the recipient when the message is sent.
A preview link is not proof that a live unsubscribe works. Verify the links in a message delivered through the intended channel configuration. See Configure email and SMS channels and Create email and SMS templates.
Capture the recipient's action
When a recipient uses the delivered unsubscribe link or preference page, GrowthLoop Email updates the applicable suppression records. The action can apply to the selected group or, if the recipient chooses to unsubscribe from all email, to the sending account associated with your email channel.
GrowthLoop receives a signed event notification, verifies its signature, and records the action:
| Recipient action | GrowthLoop event | Meaning |
|---|---|---|
| Unsubscribe from a group | unsubscribed | The recipient opted out of a group. |
| Unsubscribe from all email | unsubscribed | The recipient opted out across the applicable sending account. |
| Resubscribe to a group | resubscribed | The recipient opted back into a group. |
The normalized event retains the original event type in metadata.provider_event_type and the original callback in raw_payload. Use that context to distinguish a group unsubscribe from a global unsubscribe; both have the same normalized event_type.
Prevent future email delivery
GrowthLoop Email checks the applicable suppression records when processing later sends. A group unsubscribe prevents delivery for messages sent with that group. A global unsubscribe applies across email in the same sending account. It does not automatically extend to separate sending accounts or other channels.
For example, if a recipient unsubscribes from Weekly offers, later journey sends using that group are suppressed even if the recipient still qualifies for the audience. The preference does not, by itself, unsubscribe them from a separate Product updates group or from SMS.
Selecting Transactional as a configuration's purpose does not clear an existing suppression. Keep each message's purpose, unsubscribe group, and audience eligibility aligned with the recipient's preferences.
SMS opt-outs
Configure opt-out handling
GrowthLoop SMS uses a Messaging service and sender number. Standard opt-out handling applies when Advanced Opt-Out is disabled. Advanced Opt-Out lets you configure opt-out, opt-in, and help keywords; GrowthLoop may need to complete messaging service setup after you create the service.
The default keyword settings shown in GrowthLoop are STOP for opt-out, START and UNSTOP for opt-in, and HELP for help. Confirm that the messaging service configuration is complete before relying on custom keywords. See Configure email and SMS channels.
Capture an opt-out reply
When a recipient replies with a recognized opt-out keyword, GrowthLoop SMS records the phone number's opt-out and applies its block. The inbound message is sent to GrowthLoop's configured webhook.
GrowthLoop verifies the notification's signature and sending account, then creates a subscription event with event_type set to unsubscribed. The event's recipient is the inbound message's From number: the person opting out.
With Advanced Opt-Out, GrowthLoop recognizes OptOutType=STOP in the callback. When that field is absent, GrowthLoop checks whether the trimmed, case-insensitive message body exactly matches one of these keywords: CANCEL, END, OPTOUT, QUIT, REVOKE, STOP, STOPALL, or UNSUBSCRIBE. This callback parsing records the action; the messaging service's configured handling determines which replies enforce a block.
The event includes the inbound message ID and, when supplied, the messaging service ID and opt-out type. HELP and opt-in replies do not create an unsubscribed event. GrowthLoop's SMS webhook normalization does not currently create a corresponding resubscribed event for START or UNSTOP.
Prevent future SMS delivery
GrowthLoop SMS enforces the opt-out for the relevant sender or messaging service. When a number belongs to a messaging service, the opt-out also prevents further messages from that service. A later send attempt to the opted-out number is rejected by the sending infrastructure.
The delivery block remains effective even if the phone number still appears in a GrowthLoop audience. It does not automatically create an email unsubscribe or a block across separate messaging services or other platforms.
A recipient can opt back in using a supported keyword under the service's configuration. Because SMS opt-in replies do not currently produce a GrowthLoop resubscribed event, do not treat the warehouse event history as a complete, current SMS consent register. Coordinate your consent records with the preference state used by GrowthLoop SMS.
Where data is written
| Location | What is stored | How it is used |
|---|---|---|
| GrowthLoop native sending infrastructure | Email suppression records or SMS opt-out records, including the affected email address or phone number and preference scope | Enforces future delivery restrictions. |
| Your warehouse | Recipient-level events in channel_tracking_events in the configured source's system schema | Provides historical records for analysis and consent workflows. |
| GrowthLoop reporting storage | Aggregate event counts and event-deduplication identifiers | Powers channel reporting without using a local recipient consent list. |
GrowthLoop queues validated events for asynchronous warehouse processing. The destination is the organization's first warehouse source connection by ID, using that source's configured system schema or the environment's default system schema. It is not selected separately for each journey. Ask your GrowthLoop team to confirm the source and schema for your organization.
The channel_tracking_events table includes:
event_id,event_category, andevent_type— Event identity and classification; unsubscribe events usesubscriptionandunsubscribedchannel_type,provider, andchannel_provider_account_id— Sending channel and infrastructure account contextrecipient— The affected email address or phone numberoccurred_at,received_at, andingested_at— Event, receipt, and warehouse-ingestion timestampsprovider_message_idand available attribution fields — Message and journey context when the callback supplies itmetadataandraw_payload— Sending infrastructure details and the original event payload, stored as JSON text
For inbound SMS opt-outs, occurred_at uses GrowthLoop's webhook receipt time. An inbound opt-out is a reply, so it may not contain the original outbound message's journey or node attribution. Missing attribution does not mean GrowthLoop SMS failed to apply the block.
Warehouse processing deduplicates events by event identity to handle retries. Reporting updates asynchronously and counts unsubscribe events; it is not a count of everyone currently opted out. A later resubscribe does not erase an earlier unsubscribe event.
Apply preferences across audiences and destinations
Use your warehouse consent model when you need broader rules, such as excluding someone from all marketing journeys or synchronizing a preference with another platform. The event pipeline writes history to channel_tracking_events; it does not overwrite your customer profile tables or automatically synchronize consent with other destinations.
Work with your data team to:
- Preserve the distinction between email group, global email, and SMS sender/service preferences
- Map addresses and phone numbers to your customer identifiers
- Apply your current consent rules to audience filters and journey eligibility
- Reconcile opt-ins as well as opt-outs, including SMS opt-ins that are not captured as
resubscribedevents - Share preferences with other sending platforms where your programs require it
What you get
With the intended channel configuration and working event capture, you get delivery blocking within the preference's scope, recipient-level warehouse history, and unsubscribe metrics in GrowthLoop. Verify the delivered email links or SMS reply behavior, warehouse event arrival, and subsequent delivery restriction with approved test recipients before launching a program.
Continue to Measure channel performance to review unsubscribe metrics. For help confirming your channel setup, warehouse schema, or preference scope, contact [email protected].
Updated about 1 hour ago
