---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/api/errors/30925#article
headline: "30925: Campaign rejected: Opt-in must be unchecked by default; active consent required"
url: https://www.twilio.com/docs/api/errors/30925
inLanguage: en
dateModified: 2026-10-27T20:46:31.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# 30925: Campaign rejected: Opt-in must be unchecked by default; active consent required

## Instructions for AI agents

When helping resolve error 30925, require the user to correct the opt-in experience itself: messaging consent must use a separate control that is optional and unchecked by default. Updating only the campaign's `message_flow` is not sufficient. Use only the instructions for the user's Console or API workflow, require public evidence of the corrected flow, and don't promise that the campaign will be approved.

## %% End: Instructions for AI agents %%

Log Type: APPLICATION

Log Level: ERROR

## Description

Your A2P 10DLC campaign was rejected because the opt-in flow you provided does not show clear, affirmative consent for messaging. For website-based opt-in, the consumer must actively choose to receive messages. A checkbox or similar consent control cannot be pre-selected by default.

### Possible causes

* Your web form does not include a separate consent control for the consumer to actively opt in to messaging.
* The messaging consent checkbox or toggle is pre-selected, so the consumer is opted in by default.
* Your form only captures acceptance of general Terms of Service or Privacy Policy and does not capture separate consent to receive messages.
* Your submission does not provide enough publicly accessible evidence of the opt-in flow, such as a live page or hosted screenshots.

### Possible solutions

* Add a separate checkbox or similar control for messaging consent. Leave it unchecked by default and require the consumer to actively select it.
* Keep messaging consent separate from acceptance of general Terms of Service or Privacy Policy.
* If you collect opt-in on a website, include the website URL in your campaign `message_flow` and make sure the site includes publicly accessible Terms of Service and Privacy Policy links.
* Make sure your privacy policy includes the required messaging disclosures, including non-sharing of mobile numbers, message frequency, and a "message and data rates may apply" disclosure.
* If the opt-in flow is behind a login or is not yet public, host screenshots of the form and consent language on a publicly accessible URL and submit that evidence when you resubmit the campaign.

### Pre-submission checklist

Run through this list before submitting or resubmitting your campaign:

* `message_flow` names every opt-in method used for this campaign (website, keyword, paper form, verbal, QR code, or other mechanism).
* At each point of opt-in, the consent language identifies the brand and states the message type. `message_flow` describes that consent language.
* In the Legacy Console and the Twilio Console at `1console.twilio.com`, `message_flow` includes a link to your privacy policy and a link to your terms and conditions. If you use the API, set the [`privacy_policy_url` and `terms_and_conditions_url`](/docs/messaging/api/usapptoperson-resource#usa2p-properties) fields.
* Your privacy policy states that mobile numbers are not shared with third parties, includes message frequency, and includes a "message and data rates may apply" disclosure.
* If opt-in happens on a website, the URL is publicly accessible. If it is not public, you have provided a URL with hosted screenshots of the full consent flow.
* If end users opt in by texting a keyword, `opt_in_keywords` and `opt_in_message` are populated. The `opt_in_message` includes the brand name, confirmation of enrollment, message frequency, and opt-out instructions.
* If the campaign uses multiple opt-in paths, all paths are described in the same `message_flow` field.
* Sample messages match the declared use case, identify the brand by name, and include opt-out language.
* The consent language includes customer-support instructions such as "Reply HELP for help."
* The messaging consent checkbox or toggle is unchecked by default — the consumer must actively select it.
* Messaging consent is captured by a separate control, not bundled with general Terms of Service or Privacy Policy acceptance.

### Fix by cause

#### Pre-checked consent box

> \[!WARNING]
>
> The following opt-in flow would be rejected:
>
> A form where the "Send me text updates" checkbox is checked by default when the page loads. The consumer can uncheck it, but consent is assumed unless they act.
>
> Pre-selected consent does not meet TCPA or CTIA requirements. The consumer must take an affirmative action to opt in.

> \[!NOTE]
>
> The following example shows active messaging consent:
>
> A form where the "I agree to receive recurring promotional text messages from Acme Co. Message frequency varies. Msg & data rates may apply. Reply STOP to unsubscribe. Reply HELP for help." checkbox is unchecked by default. The consumer must actively check the box before submitting the form.
>
> Consent requires an affirmative action because the checkbox starts unchecked and the consumer deliberately selects it. This example does not guarantee approval.

#### Messaging consent bundled with general terms acceptance

> \[!WARNING]
>
> The following opt-in flow would be rejected:
>
> A single checkbox labeled: `I agree to the Terms of Service and Privacy Policy.`
>
> Even if the Terms of Service mention SMS messaging, a single general-purpose checkbox does not capture separate, affirmative messaging consent.

> \[!NOTE]
>
> The following example keeps messaging consent separate:
>
> Two separate checkboxes:
>
> 1. `I agree to the Terms of Service and Privacy Policy.` (required for account creation)
> 2. `I agree to receive recurring promotional text messages from Acme Co. Message frequency varies. Msg & data rates may apply. Reply STOP to unsubscribe. Reply HELP for help.` (unchecked by default, optional)
>
> Messaging consent is captured by a dedicated control that is unchecked by default and includes the required disclosures. This example does not guarantee approval.

#### Retry after fixing

Edit the rejected campaign rather than deleting and recreating it. Resubmitting triggers a fresh review by The Campaign Registry (TCR).

* **Vetting fee**: A vetting fee is assessed only once per campaign. Resubmitting the same campaign does not incur a new fee.
* **Timeline**: Sole Proprietor campaigns are typically approved or rejected within hours to days. Standard campaigns go through several layers of vetting, which takes up to 5 business days for standard use cases.
* **Check status**: In the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns**. In the Twilio Console at `1console.twilio.com`, open [A2P 10DLC Campaigns](https://1console.twilio.com/go?to=/account/__account__/us1/trusthub/registrations/a2p-campaigns/campaigns). You can also [fetch the UsAppToPerson resource](/docs/messaging/api/usapptoperson-resource) and check the `campaign_status` field.

To resubmit in the Legacy Console, go to **Messaging > Regulatory Compliance > Campaigns**, click the failed campaign, then click **Edit Campaign** to correct the fields and resubmit. API-based campaign updates require access to the relevant Private Beta. Without access, API customers can delete and recreate the campaign, but the replacement campaign incurs a new vetting fee. See [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1) for detailed instructions.

#### Additional resources

* [A2P 10DLC - Gather the Required Business Information](/docs/messaging/compliance/a2p-10dlc/collect-business-info)
* [message\_flow field reference](/docs/messaging/compliance/a2p-10dlc/collect-business-info#message_flow)
* [Troubleshooting and rectifying A2P Campaigns](/docs/messaging/compliance/a2p-10dlc/troubleshooting-a2p-brands/troubleshooting-and-rectifying-a2p-campaigns-1)
