Registration Flows Overview
Registration Flows Overview
The SDK provides step-by-step functions for all four A2P 10DLC registration flows. Each flow is implemented as a TypeScript module with numbered step functions.
At a Glance
| Flow | Steps | Prerequisites | Timeline | Limits |
|---|---|---|---|---|
| ISV Standard | 4 | Approved ISV Primary Profile | 72hrs + review + 10-15 days | High throughput |
| ISV Sole Prop | 4 | Approved ISV Primary Profile | 72hrs + OTP (24hrs) + 10-15 days | 1 campaign, 1 phone, ~3K/day |
| Direct Standard | 3 | None (you create Primary Profile) | 72hrs + review + 10-15 days | High throughput |
| Direct Sole Prop | 3 | None | 72hrs + OTP (24hrs) + 10-15 days | 1 campaign, 1 phone, ~3K/day |
Flow Modules
All flows are exported under the flows namespace:
import { flows } from '@warp-message/a2p-sdk';
// ISV flows
flows.isvStandard.step1_createCustomerProfile(client, input);
flows.isvSoleProp.step1_createStarterProfile(client, input);
// Direct flows
flows.directStandard.step1_createCustomerProfile(client, input);
flows.directSoleProp.step1_createStarterProfile(client, input);Common Patterns
Step Results
Every step function returns a StepResult:
interface StepResult {
success: boolean;
state: Partial<RegistrationState>;
sids: Record<string, string>;
}Error Handling
All steps throw A2PRegistrationError or subclasses on failure:
try {
const result = await flows.directStandard.step1_createCustomerProfile(client, input);
} catch (error) {
if (error instanceof ProfileRejectedError) {
console.error('Profile rejected:', error.guidance);
}
}Status Callbacks
All profile, trust product, brand, and campaign creation steps accept an optional statusCallback URL:
const result = await flows.directStandard.step1_createCustomerProfile(client, {
...input,
statusCallback: 'https://example.com/webhooks/a2p',
});Flow Comparison
ISV Standard
Use when: You're an ISV registering customers who have a Tax ID.
Steps:
- Create Secondary Customer Profile
- Create Trust Product
- Register Brand
- Create Campaign(s)
Key features:
- Primary Profile prerequisite check
- Optional second authorized rep
- Optional automatic secondary vetting
- Unlimited campaigns per brand
ISV Sole Prop
Use when: You're an ISV registering customers in US/Canada without a Tax ID.
Steps:
- Create Starter Profile
- Create Sole Prop Trust Bundle
- Register Brand (triggers OTP)
- Create Campaign
Key features:
- Starter Profile policy SID
- OTP verification (24-hour window)
skipAutomaticSecVetalways true- 1 campaign per brand, 1 phone per campaign
Direct Standard
Use when: Your business has a Tax ID and you're registering your own brand.
Steps:
- Create Customer Profile
- Register Brand + Trust Product
- Create Campaign(s)
Key features:
- 3-step flow (faster than ISV)
brand_contact_emailrequired (since Oct 2024)- Supports multiple phone numbers per campaign
- Primary Profile prerequisite check
Direct Sole Prop
Use when: You're an individual/hobbyist in US/Canada without a Tax ID.
Steps:
- Create Starter Profile
- Register Brand + Trust Product (triggers OTP)
- Create Campaign
Key features:
- 3-step flow
- OTP verification (24-hour window)
skipAutomaticSecVetalways true- 1 campaign, 1 phone, ~3,000 msgs/day