Skip to main content
Synced from the repo — do not edit here

Canonical source: docs/claude/twilio-a2p-onboarding-template.md. This page is generated by docs/scripts/sync-handbook.mjs. Edit the source file in the repo; changes appear here on the next build.

Twilio A2P 10DLC Onboarding — per-provider SMS enablement template

Purpose: Every clinic that wants to send SMS (marketing lifecycle sequences + blasts) must be registered with Twilio's A2P 10DLC program before a single message will deliver in the US. This is a per-provider registration (Brand → Campaign → Messaging Service → number). Use this template to (1) collect the info from the clinic during onboarding, and (2) submit it to Twilio. Approval takes days → ~2 weeks; registration carries over if a number is ported with the same brand/campaign.

Optional onboarding task: only needed if the clinic wants SMS. Email (MailerSend) has no equivalent gate.


Part 1 — BRAND registration (the business). Collect from the clinic:

FieldNotes
Legal business nameExactly as registered with the IRS
Business EIN / Tax IDUS EIN (or local equivalent). Sole proprietors have a lighter flow
Business typePrivate / Public / Non-profit / Government
Industry / verticale.g. Healthcare
Registered business addressStreet, city, state, ZIP, country
Business websiteMust be live and describe the services
Support email + phoneReachable; used for verification
Authorized contactName, email, job title, phone
Stock ticker + exchangePublic companies only

Part 2 — CAMPAIGN registration (the messaging use case). Collect/prepare:

FieldNotes / our defaults
Use caseMixed / Marketing (lifecycle + promotional). "Low Volume Mixed" for small clinics
Campaign descriptionWhat the clinic texts patients about (appointment follow-ups, review requests, re-engagement, promotions)
Sample messages (2–3, real)Must match what we actually send, incl. brand name + opt-out. e.g. "{Clinic}: Thanks for visiting! Mind sharing quick feedback? {link} Reply STOP to opt out."
Opt-in descriptionHOW consent is collected — must be explicit for marketing. Ours: checkbox at booking / lead capture with SMS consent language; describe the flow + provide the URL/screenshot
Opt-in messageThe confirmation text sent after opt-in
Opt-out keywordsSTOP (+ STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT) — our compliant-send layer honors these
Help keywordsHELP / INFO → returns clinic contact
Message frequencye.g. "Up to ~4/month"
Embedded links / phone numbersYes (booking links) — declare it
Age-gated / affiliate / direct-lending contentNo (declare)

Part 3 — Provisioning (Twilio side, per clinic)

  1. Create/verify Brand (Part 1) → Twilio + TCR vetting.
  2. Create Campaign (Part 2) under the brand → carrier approval.
  3. Create a Messaging Service, attach the campaign, add the clinic's phone number (new or ported — porting keeps the registration).
  4. Enable Advanced Opt-Out on the Messaging Service (STOP/HELP auto-handling) — our layer also enforces suppression app-side.
  5. Store the clinic's Messaging Service SID → clinicsv2/{clinic}/messaging_numbers (what our SMS sender reads).

What's already handled on OUR side (so the clinic doesn't re-implement)

  • Consent capture (explicit for SMS), STOP/HELP handling, suppression, quiet-hours (marketing), rate-limit, dedup — the compliant-send gateway (#517).
  • The clinic only owes Twilio the registration data above + a verified number.

Gaps / to confirm with main agent

  • Is there a self-serve intake form in Settings → Integrations that captures Part 1 + Part 2 and files it? If not, that's the onboarding build. Today this is a manual submission.
  • Per-number → clinic mapping lives in messaging_numbers; confirm the SMS sender reads the Messaging Service SID from there.