Sole proprietor without an EIN? This walkthrough assumes you have a tax ID (EIN or CBN). If you don’t, follow the Sole Proprietor Path — different fields, no EIN required, and dashboard-first.
Prerequisites
- Surge project and API key: Create the project at hq.surge.app and copy a key from API Keys.
- Business tax ID: Your EIN (US) or CBN (Canada).
- Privacy policy and terms of service URLs: Both must be live and publicly indexable when reviewers visit them.
1. Create an account
An account represents a brand in carrier terms. Create one with your business details:Optional: 2. Check what’s missing
The status endpoint tells you whether your account is ready to register a campaign and what fields are still needed:fields_needed array listing any missing or invalid fields:
fields_needed array and a "ready" status means you can proceed to create a campaign.
Optional: 3. Fill the gaps
Iffields_needed is non-empty, patch the account to add the missing information. The field names in the response are dot-delimited paths into the account object:
capabilities.local_messaging.status is "ready".
4. Create a campaign
A campaign tells carriers what you’ll send and how users opted in. Every field here is read by human reviewers, so write for clarity.in_review:
volume:"low"allows up to 2,000 SMS segments/day to T-Mobile."high"allows up to 200,000/day, depending on the trust score assigned by The Campaign Registry.use_cases: The types of messages you’ll send. Common values:marketing,customer_care,account_notification,two_factor_authentication. See the Schema Reference for the full list.message_samples: 2–5 examples of what you’ll actually send. The first should be a compliance opt-in confirmation. Use real brand names, not placeholders.
active, Surge fires a campaign.approved webhook event. The campaign is approved, but a number isn’t ready to send production messages until it’s also been attached to the campaign. Surge starts attaching numbers automatically as soon as the campaign goes active; the phone_number.attached_to_campaign webhook fires per number once the attachment completes. Wait for that event before sending real traffic from a given number.
5. Purchase a phone number
You can buy a number while your campaign is in review. You just can’t send production messages from it until two things have happened: the campaign isactive, and the number has been attached to it. After the campaign is approved, attachment runs automatically; you’ll receive a phone_number.attached_to_campaign webhook for each number once it’s ready.
campaign_id is null because the campaign isn’t active yet. Surge attaches phone numbers to campaigns automatically. Two things trigger attachment:
- Purchase while a campaign is active: Surge attaches the number immediately.
- Campaign becomes active after purchase: Surge attaches all existing unattached numbers on the account when the campaign is approved.
phone_number.attached_to_campaign webhook event. Once you receive that event, the number can send production traffic.
What’s next
- Review the Schema Reference for every valid value of
type,industry,use_cases, and other enum fields - Learn what trips up most registrations in Avoiding Rejection
- Start sending messages with your new number