Most rejected 10DLC campaigns are not rejected for what they plan to send. They are rejected for how the business says people signed up. The reviewer reads your opt-in description, opens your form, checks your sample messages, and decides whether a stranger could tell they were agreeing to texts. If any one of those is vague, the campaign comes back.
This post covers the pieces you need: the form wording, keyword opt-in, the confirmation text, and the STOP and HELP replies. Each one is written to be copied and edited, with notes on what reviewers check and what each message costs to send. If you want a deeper treatment of the exact consent sentence, we cover that in the opt-in wording that clears registration on the first submission.
What carrier review looks for in an opt-in flow
Reviewers check five things. Your flow passes when all five are visible to someone who has never heard of your business:
- Who is texting. The brand name, matching the brand you registered.
- What they'll get. "Order updates," "appointment reminders," "promotions." Not "messages."
- How often. "Up to 4 msgs/month" or "Msg frequency varies."
- Cost disclosure. "Msg & data rates may apply."
- How to leave and get help. "Reply STOP to opt out, HELP for help," plus links to your terms and privacy policy.
Two structural rules sit on top of those. Consent for texts can't be bundled into agreeing to your terms of service. A checkbox has to start unchecked. Your privacy policy also needs to say mobile numbers and opt-in data aren't shared with third parties for their marketing. Our guide to 10DLC website, privacy policy and terms requirements has template language for that part.
Web form opt-in examples
Lead form or contact form
Put an unchecked checkbox under the phone field. The form must submit without it.
☐ Yes, text me appointment reminders and occasional offers from Northside Dental at the number above. Up to 6 msgs/month. Msg & data rates may apply. Reply STOP to opt out, HELP for help. Consent is not a condition of purchase. Terms · Privacy
Checkout opt-in (ecommerce)
Keep transactional and marketing texts separate if you send both. Shoppers can then take order updates without signing up for promos, and your opt-in description can explain each one clearly.
☐ Text me shipping updates for this order from Fern & Co.
☐ Also text me sales and new arrivals from Fern & Co. Msg frequency varies. Msg & data rates may apply. Reply STOP to opt out, HELP for help. Not required to purchase. Terms · Privacy
Account signup (SaaS)
☐ Send me account alerts and billing reminders by text from Ledgerly. Up to 4 msgs/month. Msg & data rates may apply. Reply STOP to cancel, HELP for help. Terms · Privacy
What gets these rejected: a pre-checked box, the disclosure hidden in the terms page only, or a form that stays behind a login the reviewer can't reach. If the form is gated, upload a screenshot with your campaign registration.
Keyword opt-in examples
Keyword opt-in means the person texts a word to your number. It works on printed material, in-store signage and at the register.
Signage or flyer copy:
Text DEALS to (555) 010-0199 for weekly offers from Harbor Bikes. Up to 4 msgs/month. Msg & data rates may apply. Reply STOP to opt out, HELP for help. Terms & privacy: harborbikes.example/sms
The disclosure has to sit next to the call to action, not on a separate page. In your registration, describe the flow in plain terms: "Customers text DEALS to our number after seeing in-store signage that shows the brand, frequency, rates and STOP/HELP disclosure." Attach a photo of the sign.
Verbal opt-in (front desk, phone call): say what you'd print, then send a confirmation that repeats it. The confirmation text is your written record that the disclosure went out.
Confirmation message examples
The first text after opt-in confirms the signup and repeats the disclosures. Carriers expect it, and the reviewer will usually ask for its wording.
Standard confirmation:
Northside Dental: You're signed up for appointment reminders and offers. Up to 6 msgs/month. Msg & data rates may apply. Reply HELP for help, STOP to opt out.
That's 155 characters. Plain text, one segment.
Double opt-in (reply to confirm):
Harbor Bikes: Reply YES to get weekly deals by text. Up to 4 msgs/month. Msg & data rates may apply. Reply STOP to opt out.
Then on YES:
Harbor Bikes: Thanks, you're in. First deal arrives Friday. Reply HELP for help, STOP to opt out.
Double opt-in is not required for most 10DLC campaigns, but it removes doubt about who owns the number. That matters most for keyword and paper-form signups, where a typo can sign up a stranger.
The segment math on confirmations
Confirmations go to every new subscriber, so their length adds up. Here's a worked example with stated assumptions: 1,000 new subscribers a month, Ready's Standard rate of $0.0075/segment plus a $0.0045 carrier fee per segment.
| Version | Characters | Encoding | Segments | Cost for 1,000 sends |
|---|---|---|---|---|
| Plain confirmation above | 155 | GSM-7 | 1 | 1,000 × ($0.0075 + $0.0045) |
| Same text plus one 🎉 | 157 | Unicode | 3 | 3,000 × ($0.0075 + $0.0045) |
| Double opt-in (prompt + YES reply + welcome) | ~125 / 3 / ~95 | GSM-7 | 3 | 3,000 × ($0.0075 + $0.0045) |
Ready's all-in prices per segment include the carrier fee but not screening: Scrub lists and Number validation, the two switches in Settings under Compliance, each add $0.003 per segment when switched on, shown as screening on your bill, and both are off by default. Unless you turn the opt-out footer off, the first text to each contact, and one again from time to time, also gets "Reply STOP to opt out" and your business name if the message does not already have them, so a text close to the segment limit can bill one more segment.
A single emoji drops the segment limit from 160 to 70 characters, so a 157-character confirmation becomes three segments and triples the cost. On Ready, inbound replies are billed like sent texts, so the "YES" counts as a segment too. Double opt-in costs about 3x a single confirmation. For many senders, the clean record is worth it.
Curly quotes and long dashes don't matter on Ready, because we swap them for plain characters before sending. Emoji do.
STOP, HELP and opt-out reply examples
Opt-out confirmation
Send one final message, then nothing else:
Harbor Bikes: You're unsubscribed and won't get more texts. Reply START to resubscribe.
On Ready you don't send this yourself. The confirmation goes out automatically and uses the STOP reply from your registration, so put this wording in your campaign registration.
Don't add a promo or a "we'll miss you" pitch. Carriers want exactly one confirmation.
HELP reply
Harbor Bikes: Weekly deals by text. Up to 4 msgs/month. Msg & data rates may apply. Help: support@harborbikes.example or (555) 010-0199. Reply STOP to opt out.
Words to honor
Treat STOP, STOPALL, UNSUBSCRIBE, CANCEL, END and QUIT as opt-outs. When someone writes "please stop texting me" as a full sentence, honor it too. A reviewer won't see that one, but a plaintiff's lawyer would.
On Ready, inbound STOP and UNSUBSCRIBE are handled automatically. The opt-out applies across all campaigns, so that contact can't be texted again from a different list. Sends to opted-out numbers are refused up front and not charged. Through the API you can read them with GET /v1/opt-outs or check one number with GET /v1/opt-outs/:phone (docs).
Recording consent: what you keep and what the platform keeps
Here's where many teams get it wrong. The form collects the consent. Your system, whether that's your app, store or CRM, has to store it: the phone number, timestamp, the exact checkbox wording shown, and the page URL or keyword used. That is your proof if a number is ever disputed.
Ready records the sender's attestation on each bulk send, and on each API send that sets the consent_attested field: who sent, to how many, and when. An API send without it still goes out today, with a warning, and leaves no attestation:
POST https://api.tryready.com/v1/messages
X-API-Key: <key>
Idempotency-Key: 6f1c2a90-3b7e-4d1a-9c55-2e8f0b4a7d13
{"to": "+12125550199", "body": "Harbor Bikes: Thanks, you're in. Reply HELP for help, STOP to opt out.", "consent_attested": true} That builds an audit trail of sends. It is not a per-contact consent record. We don't store each recipient's opt-in time, wording or page, and a keyword reply doesn't create one. Keep that on your side. Quiet-hours holds and the optional litigator/DNC scrub lower your risk further, but they don't replace consent, and compliance stays the sender's responsibility. (A contact who signs up on a Ready-hosted opt-in page is the exception: Ready stores that sign-up, with the time, IP address and exact wording, and support@tryready.com can send you a copy.)
Matching your flow to your registration
The form, the confirmation and your sample messages have to say the same thing. If the checkbox promises "appointment reminders" and your samples are 20%-off promos, expect a rejection. Each sample message should open with your brand name and include an opt-out line in at least one example. If you've already been bounced, our rewrite guide for rejected campaigns walks through the common fixes.
On Ready, brand and campaign registration is done in-app. The charge at submit is the first month, $25 for registration, plus $2/mo per number after that, and most approvals take 2 to 7 days.
The practical takeaway
Write the disclosure once: brand, purpose, frequency, rates, STOP/HELP, and terms and privacy links. Then use the same wording on the form, the sign, the confirmation and your registration samples. Keep confirmations under 160 plain characters, skip emoji there, and store your own per-contact consent record.
To test the flow before registering, create an account (a card on file is required to send). The first 20 one-to-one texts are free, so use them on your own phone to check your confirmation and STOP replies before you pay for registration. For more ready-made wording by industry, see 10DLC opt-in examples and sample messages that get approved.