Flows
ISV Sole Prop Flow
ISV Sole Proprietor Flow
For ISVs registering customers in US/Canada who don't have a business Tax ID.
Overview
Steps: 4
Timeline: Profile (72hrs) → Trust Product (hours) → OTP (24hrs) → Campaign (10-15 days)
Limits: 1 campaign per brand, 1 phone per campaign, ~3,000 msgs/day
Prerequisites: Your ISV Primary Customer Profile must be approved first
Who This Is For
- ISVs sending messages on behalf of customers
- Customers in US or Canada without a Tax ID
- Customers need low-volume messaging (~3,000 msgs/day)
ISV Prerequisites
Same as ISV Standard: your ISV Primary Customer Profile must be approved with business_identity: 'isv_reseller_or_partner'.
Step-by-Step
Step 1: Create Starter Profile
import { flows } from '@warp-message/a2p-sdk';
const step1 = await flows.isvSoleProp.step1_createStarterProfile(client, {
email: 'customer@example.com',
customerName: 'Jane Doe',
starterProfile: {
first_name: 'Jane',
last_name: 'Doe',
email: 'customer@example.com',
phone_number: '+15555554444',
},
address: {
city: 'Seattle',
customerName: 'Jane Doe',
isoCountry: 'US',
postalCode: '98101',
region: 'WA',
street: '123 Pine St',
},
});Step 2: Create Sole Prop Trust Bundle
const step2 = await flows.isvSoleProp.step2_createSolePropTrustBundle(client, {
email: 'customer@example.com',
customerName: 'Jane Doe',
customerProfileSid: step1.state.customerProfileSid!,
solePropInfo: {
first_name: 'Jane',
last_name: 'Doe',
email: 'customer@example.com',
phone_number: '+15555554444',
mobile_phone_number: '+15555554444',
brand_name: 'Jane Doe Messaging',
},
});Step 3: Register Brand (Triggers OTP)
const step3 = await flows.isvSoleProp.step3_registerBrand(client, {
customerProfileSid: step1.state.customerProfileSid!,
trustProductSid: step2.state.trustProductSid!,
});What happens: OTP SMS sent to customer's mobile_phone_number. Customer must verify within 24 hours.
Critical: Mobile number can only be used 3 times total across ALL vendors.
Step 4: Create Campaign
const step4 = await flows.isvSoleProp.step4_createCampaign(client, {
brandRegistrationSid: step3.state.brandSid!,
messagingServiceName: 'Customer Notifications',
campaign: {
description: 'Customer notifications',
messageFlow: 'Users receive order updates',
messageSamples: [
'Your order is ready!',
'Thanks for your order!',
],
usAppToPersonUsecase: 'SOLE_PROPRIETOR', // Required
hasEmbeddedLinks: false,
hasEmbeddedPhone: false,
},
phoneNumberSid: '+15555555555', // Required (exactly 1)
});Gotchas
- OTP 24-hour window — Customer must verify within 24 hours
- 3-use mobile limit — Mobile number can only be used 3 times across ALL vendors
skipAutomaticSecVetalways true — Hardcoded in Step 3- 1 campaign, 1 phone, ~3K/day — Strict limits
- 4-step flow — More steps than Direct Sole Prop due to ISV architecture