Flows
Direct Sole Prop Flow
Direct Sole Proprietor Flow
For individuals/hobbyists in US/Canada without a business Tax ID.
Overview
Steps: 3
Timeline: Profile review (up to 72hrs) → OTP verification (24hrs) → Campaign vetting (10-15 days)
Limits: 1 campaign per brand, 1 phone per campaign, ~3,000 messages/day
Who This Is For
- Individuals or hobbyists in the US or Canada
- No business Tax ID (EIN/CBN)
- Low-volume messaging needs (~3,000 msgs/day)
Strict Limits
- 1 campaign per brand (cannot create more)
- 1 phone number per campaign
- ~3,000 messages/day throughput cap
- Mobile number 3-use limit — can only be used 3 times total for Sole Prop registrations across ALL vendors
Step-by-Step
Step 1: Create Starter Profile
import { flows } from '@warp-message/a2p-sdk';
const step1 = await flows.directSoleProp.step1_createStarterProfile(client, {
email: 'john@example.com',
profileName: 'John Doe Sole Prop',
starterProfile: {
first_name: 'John',
last_name: 'Doe',
email: 'john@example.com',
phone_number: '+15555551234',
},
address: {
city: 'Austin',
customerName: 'John Doe',
isoCountry: 'US', // Must be US or CA
postalCode: '78701',
region: 'TX',
street: '456 Oak St',
},
});What happens: Starter Profile submitted for review (up to 72 hours).
Step 2: Register Brand (Triggers OTP)
const step2 = await flows.directSoleProp.step2_registerBrand(client, {
email: 'john@example.com',
customerProfileSid: step1.state.customerProfileSid!,
solePropInfo: {
first_name: 'John',
last_name: 'Doe',
email: 'john@example.com',
phone_number: '+15555551234',
mobile_phone_number: '+15555551234', // OTP sent here
brand_name: 'John Doe Messaging',
vertical: 'RETAIL', // Optional
},
});What happens:
- Trust Product and Brand Registration created
- OTP SMS sent to
mobile_phone_number - Customer must verify OTP within 24 hours
- Brand status becomes
APPROVEDafter OTP verification
Critical: The mobile number can only be used 3 times total across ALL vendors.
Step 3: Create Campaign
const step3 = await flows.directSoleProp.step3_createCampaign(client, {
brandRegistrationSid: step2.state.brandSid!,
messagingServiceName: 'John Notifications',
campaign: {
description: 'Order confirmations and customer updates for my small business',
messageFlow: 'Customers receive messages after placing orders',
messageSamples: [
'Your order is ready for pickup!',
'Thanks for your purchase!',
],
usAppToPersonUsecase: 'SOLE_PROPRIETOR', // Required
hasEmbeddedLinks: false,
hasEmbeddedPhone: false,
},
phoneNumberSid: '+15555556789', // Required (exactly 1)
});What happens: Campaign submitted for manual vetting (10-15 business days).
Gotchas
- OTP 24-hour window — Customer must verify OTP within 24 hours or re-trigger from Console
- 3-use mobile number limit — Mobile number can only be used 3 times total across ALL vendors
- 1 campaign limit — Cannot create a second campaign for the same brand
- 1 phone limit — Cannot add a second phone number to the campaign
- ~3,000 msg/day cap — Hard throughput limit
skipAutomaticSecVetalways true — Sole Prop brands skip secondary vetting