A2P SDK
Flows

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

FlowStepsPrerequisitesTimelineLimits
ISV Standard4Approved ISV Primary Profile72hrs + review + 10-15 daysHigh throughput
ISV Sole Prop4Approved ISV Primary Profile72hrs + OTP (24hrs) + 10-15 days1 campaign, 1 phone, ~3K/day
Direct Standard3None (you create Primary Profile)72hrs + review + 10-15 daysHigh throughput
Direct Sole Prop3None72hrs + OTP (24hrs) + 10-15 days1 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:

  1. Create Secondary Customer Profile
  2. Create Trust Product
  3. Register Brand
  4. Create Campaign(s)

Key features:

  • Primary Profile prerequisite check
  • Optional second authorized rep
  • Optional automatic secondary vetting
  • Unlimited campaigns per brand

Full Guide →

ISV Sole Prop

Use when: You're an ISV registering customers in US/Canada without a Tax ID.

Steps:

  1. Create Starter Profile
  2. Create Sole Prop Trust Bundle
  3. Register Brand (triggers OTP)
  4. Create Campaign

Key features:

  • Starter Profile policy SID
  • OTP verification (24-hour window)
  • skipAutomaticSecVet always true
  • 1 campaign per brand, 1 phone per campaign

Full Guide →

Direct Standard

Use when: Your business has a Tax ID and you're registering your own brand.

Steps:

  1. Create Customer Profile
  2. Register Brand + Trust Product
  3. Create Campaign(s)

Key features:

  • 3-step flow (faster than ISV)
  • brand_contact_email required (since Oct 2024)
  • Supports multiple phone numbers per campaign
  • Primary Profile prerequisite check

Full Guide →

Direct Sole Prop

Use when: You're an individual/hobbyist in US/Canada without a Tax ID.

Steps:

  1. Create Starter Profile
  2. Register Brand + Trust Product (triggers OTP)
  3. Create Campaign

Key features:

  • 3-step flow
  • OTP verification (24-hour window)
  • skipAutomaticSecVet always true
  • 1 campaign, 1 phone, ~3,000 msgs/day

Full Guide →

Next Steps

On this page