A2P Campaign Registration — Step by Step
The Campaign is the last real gate before carriers stop filtering your traffic. It's a separate registration from the Brand (see A2P Brand Registration) — it describes what your messages actually look like and how people opted in to receive them.
Why it's separate from the Brand
The Brand says who you are. The Campaign says what you're sending and how consent was collected — a business could plausibly run several different Campaigns (say, appointment reminders vs. marketing) under one Brand, each with its own use case and throughput.
Where to register
Two ways to get to campaign registration:
- Directly in Twilio: in the console's left sidebar, Products and services → Communications → Messaging → Trust & compliance, then the Campaigns tab, then attach the campaign to your Messaging Service.
- Through Linxi: Linxi Settings → Number Setup → A2P Campaign submits the same registration via the API once your Brand is approved, and pre-fills fields from your Compliance Profile and Brand where possible.
Choosing a use case
| Use case | Cost | Best for |
|---|---|---|
| Low Volume Mixed | $1.50/month | Most small businesses — recommended default |
| Marketing | $10/month | Pure marketing/promotional sends only |
| Customer Care | $10/month | Support/service messages only |
| Mixed | $10/month | Multiple use cases at higher volume than Low Volume covers |
The code Twilio actually uses for the cheap option is LOW_VOLUME — a separate code called MIXED also exists and looks similar, but it's the pricier, non-discounted use case. Easy to pick the wrong one if you're going by name alone.
Campaign description
Be specific about what you actually send, not generic marketing language. Naming concrete message types and mentioning that recipients are an existing, opted-in list both help reviewers approve faster.
Sample messages that pass review
- Include your brand name
- Include a STOP opt-out instruction
- Use
[BRACKETS]for variable content (dates, names, amounts) - Include a phone number or URL if any real message will ever contain one — check the box for it even if only some messages do
Real example, actually submitted and auto-approved on a Low Volume Mixed campaign:
Opt-in flow description
Describe every method you actually use to collect consent, with the exact language shown to the person opting in. See Opt-In Requirements for the full breakdown by method (web form, verbal, paper form, QR code, keyword).
Privacy policy URL
Must be publicly accessible with no login required, and must contain specific required language. See Privacy Policy Guide for the exact phrase TCR checks for.
Message content checkboxes
Check "embedded links" and "phone numbers" if any message you send will ever include either — under-declaring here is one of the more avoidable rejection causes.
Common rejection reasons
| Error | Cause |
|---|---|
| 30908 | Privacy policy missing the required "do not share" language, word for word |
| 30909 | Opt-in flow / CTA description too vague or incomplete |
See Troubleshooting for fixes to both.
Pre-submission check
Before you hit submit, worth knowing what it actually costs and what happens on a rejection:
- Twilio charges a one-time $15 campaign vetting fee the first time a campaign is submitted for review — this is charged once per campaign regardless of whether it's approved or rejected, not specifically a "rejection fee."
- If a campaign is rejected, you can edit and resubmit the same campaign without being charged again — the $15 fee only applies to that campaign's first vetting.
- You are only charged a second time if you delete the rejected campaign and create a brand-new one instead of editing it — so always fix and resubmit rather than starting over.
Processing time
Typically 1-3 business days for TCR to review. Low Volume campaigns can sometimes clear faster.
