CTIA SMS Guidelines and carrier requirements mandate that SMS opt-in forms disclose message frequency — either as a specific count ('up to 4 messages per month') or a general disclosure ('message frequency varies'). Carriers validate opt-in flows during 10DLC campaign registration and will reject or throttle campaigns whose opt-in language is non-compliant. The confirmation SMS sent immediately after opt-in is the carrier's primary verification that the subscriber intended to opt in — omitting frequency and STOP instructions from that message is a registration failure point that can cause a 10DLC campaign to be denied.
Info because the primary consequence is carrier registration rejection or campaign denial rather than a direct legal penalty, though it blocks all commercial SMS sending until resolved.
Add frequency disclosure to the opt-in form label and include frequency and opt-out instructions in the confirmation SMS sent immediately after opt-in.
// SMS opt-in form — frequency disclosure required
<label>
<input type="checkbox" name="smsConsent" />
I consent to receive marketing texts from YourProduct.{' '}
<strong>Message frequency varies.</strong>{' '}
Message & data rates may apply. Reply STOP to opt out. Reply HELP for help.
</label>
// Confirmation SMS — sent synchronously after opt-in is recorded
await smsClient.messages.create({
from: process.env.TWILIO_FROM_NUMBER,
to: phoneNumber,
body: 'YourProduct: You are now subscribed to marketing alerts. Msg freq varies. Msg & data rates may apply. Reply STOP to cancel, HELP for info.',
})
Carriers check both the opt-in form language and the confirmation SMS content during 10DLC campaign review — both must include frequency and opt-out instructions.
ID: email-sms-compliance.content-delivery.sms-frequency-disclosed
Severity: info
What to look for: Enumerate every relevant item. CTIA guidelines and carrier requirements state that SMS opt-in forms must disclose the message frequency — either an exact number ("up to 4 messages per month") or a clear indication ("message frequency varies"). Check every SMS opt-in form in the codebase for a frequency disclosure. This is typically part of the consent language (see the TCPA consent check), but this check specifically verifies the frequency component. Also check whether the initial confirmation SMS (sent immediately after opt-in) includes the frequency disclosure, as carriers expect this.
Pass criteria: At least 1 of the following conditions is met. Every SMS opt-in form includes a frequency disclosure (e.g., "Message frequency varies" or "Up to X messages per month"). The opt-in confirmation SMS includes the message frequency and opt-out instructions.
Fail criteria: SMS opt-in form contains no frequency disclosure. Confirmation SMS does not include frequency or opt-out instructions.
Skip (N/A) when: The application sends no marketing SMS.
Detail on fail: Example: "SMS opt-in form contains TCPA consent language but no frequency disclosure. CTIA guidelines require frequency disclosure at opt-in.".
Remediation: Add frequency disclosure to the opt-in form and confirmation SMS:
// In the SMS opt-in form:
<label>
<input type="checkbox" name="smsConsent" />
I consent to receive marketing text messages from YourProduct at the number provided.
{' '}<strong>Message frequency varies.</strong>{' '}
Message & data rates may apply. Reply STOP to opt out. Reply HELP for help.
</label>
// Confirmation SMS sent immediately after opt-in
await smsClient.messages.create({
from: process.env.TWILIO_FROM_NUMBER,
to: phoneNumber,
body: 'Welcome to YourProduct alerts! Msg frequency varies. Msg & data rates may apply. Reply STOP to cancel, HELP for info.',
})