A2P 10DLC Compliance Made Simple
Register your brand and messaging campaigns with The Campaign Registry (TCR) directly from CloudContactAI — through the dashboard or via SDK.
Get Started FreeManage All Your Brands in One Place
The CloudContactAI A2P Registration dashboard gives you a complete view of all brand registrations across your accounts — with real-time TCR status tracking.
- Track brands from Draft → In Review → Verified
- Filter by status or provider
- Search accounts by email or name
- View TCR Brand IDs once approved
Register Your Brand with TCR
Fill out your company identity, business address, and contact information. CloudContactAI submits your registration directly to The Campaign Registry for verification.
- Legal company name and DBA
- Vertical / industry selection
- Business address verification
- Tax ID and entity type
Register Your Messaging Campaign
Once your brand is verified, register your campaigns to get carrier approval for A2P 10DLC messaging. Define your use case, message flow, and opt-in/opt-out keywords.
- Select use case (Marketing, Customer Care, Mixed, etc.)
- Describe your message flow and subscriber opt-in
- Add sample messages for TCR review
- Save as draft or submit directly to TCR
How It Works
Register Your Brand
Submit your company details to TCR for business identity verification.
Get Brand Verified
TCR reviews your brand and assigns a TCR Brand ID upon approval.
Register a Campaign
Link your campaign to your verified brand and define your messaging use case.
Start Sending
Once your campaign is active, send A2P compliant SMS at scale with full carrier support.
Register via SDK
Prefer to automate? Register brands and campaigns programmatically using the CloudContactAI Node.js SDK. View full SDK docs →
// Install: npm install ccai-node import { CCAI } from 'ccai-node'; const ccai = new CCAI({ clientId: process.env.CCAI_CLIENT_ID, apiKey: process.env.CCAI_API_KEY }); const brand = await ccai.compliance.registerBrand({ legalName: "Your Company LLC", taxId: "12-3456789", taxIdCountry: "US", website: "https://www.yourcompany.com", vertical: "TECHNOLOGY", entityType: "PRIVATE_PROFIT", address: { street: "123 Main St", city: "San Francisco", state: "CA", postalCode: "94105", country: "US" }, contactEmail: "[email protected]", contactPhone: "+14155551234" }); console.log(`Brand ID: ${brand.brandId}`); console.log(`Status: ${brand.status}`); // PENDING, APPROVED, REJECTED
// Register a campaign after brand approval const campaign = await ccai.compliance.registerCampaign({ brandId: brand.brandId, useCase: "MARKETING", description: "Promotional messages for opted-in customers", messageFlow: "Customers opt-in via web form", sampleMessages: [ "Hi \${firstName}, check out our latest deals!", "Your order has shipped. Track it here: https://example.com" ], helpMessage: "Reply HELP for assistance.", optOutMessage: "Reply STOP to unsubscribe." }); console.log(`Campaign ID: ${campaign.campaignId}`); console.log(`Status: ${campaign.status}`);
// Poll for brand and campaign approval status const brandStatus = await ccai.compliance.getBrandStatus(brand.brandId); console.log(`Brand: ${brandStatus.status}`); // PENDING, APPROVED, REJECTED const campaignStatus = await ccai.compliance.getCampaignStatus(campaign.campaignId); console.log(`Campaign: ${campaignStatus.status}`); // Auto-poll until approved async function waitForApproval(brandId) { let status = 'PENDING'; while (status === 'PENDING') { const result = await ccai.compliance.getBrandStatus(brandId); status = result.status; if (status === 'PENDING') await new Promise(r => setTimeout(r, 30000)); } return status; }
Ready to Get A2P Compliant?
Register your brand and campaigns today — through the dashboard or automate it with our SDK.
