A2P 10DLC sample message checklist
Carriers and TCR review the two sample messages you submit far more carefully than the campaign description itself. The patterns below are what we see flagged in rejection threads over and over.
Guidance only — A2PCheck is not affiliated with Twilio, The Campaign Registry, or any carrier, and we can't guarantee approval.
Scan your sample messages
Paste your campaign details below — or click 'Scan this example' next to the bad/good messages below to see the verdict instantly. Free, no signup.
Your own campaign
Scan the packet you plan to submit. After the verdict, use the result action to save the report with your account.
Client campaigns
Run the same scan one client campaign at a time and keep the saved report with the handoff. Do not include recipient data.
Checklist
- Brand identifier at the start (e.g. 'Acme:'). Carriers want recipients to know who's texting them.
- Specific content — a promo code, an order number, an appointment time. No 'check out our offer'.
- Msg&data rates may apply (for promotional / marketing).
- Msg frequency disclosure when applicable ('Msg freq varies', '4 msgs/month').
- Reply STOP to opt out — exact wording, on every promotional sample.
- HELP keyword referenced if you've enabled it.
- URLs use your registered short domain or a clean branded link, not a generic shortener (bit.ly, t.co).
- Length: keep individual SMS under 160 chars where possible. Long copies look like spam.
Bad vs. good
Rejected
Hi! Check out our new sale at acme.com
- No brand prefix — who is "us"?
- No opt-out wording.
- No frequency or rate disclosure.
- Vague content — "new sale" says nothing.
Approved-shape
Acme: 20% off this week only. Shop acme.com/sale. Msg&data rates may apply. Msg freq varies. Reply STOP to opt out, HELP for help.
- Brand identifier ("Acme:").
- Specific offer with a destination on your own domain.
- Rate disclosure included.
- Frequency mentioned.
- STOP / HELP both surfaced.
Two-message strategy
You submit at least two examples. They should not be near-duplicates — the second one should demonstrate a different message type (transactional vs promotional, alert vs reminder). Carriers use the spread of samples to judge whether the campaign matches its declared use case.
Examples by use case
Requirements differ by campaign type. Promotional messages always need STOP wording; transactional messages (2FA, reminders) generally don't — but a brand prefix and specific content are still expected across all types.
2FA / Authentication
Needs work
Your code is 482917
- No brand prefix — recipient can't verify the sender.
- No expiry or escalation path.
Ready-shape
Acme: Your one-time login code is 482917. Expires in 10 min. Didn't request this? Visit acme.com/security.
- Brand name leads.
- Expiry and escalation path included.
- No generic short link.
Appointment / Delivery reminder
Needs work
Hi, your appointment is tomorrow. Don't forget!
- No brand prefix.
- No appointment details (date, time, provider).
- No action path for the recipient.
Ready-shape
Acme Dental: Reminder — Thu 6/26 at 2pm with Dr. Rivera. Reply CONFIRM or CANCEL. Questions? acme-dental.com/contact.
- Brand name leads.
- Specific appointment details: date, time, and provider.
- Clear action options (CONFIRM / CANCEL).
- Support link on the brand's own domain.
Frequently asked questions
How many sample messages do I need to submit?
At least two distinct examples. They should not be near-duplicates; the spread is what carriers use to verify your campaign matches its declared use case.
Do transactional samples need STOP wording?
Promotional samples must include STOP. Transactional samples (order updates, 2FA, appointment reminders) typically do not require it, but including HELP and a brand prefix is still expected.
Can I use a generic link shortener like bit.ly?
Use your own branded domain or a clean short URL on your domain. Generic shorteners are commonly flagged because carriers cannot easily inspect the destination.