A hailstorm rolls through, your canvassers pull 400 doors in two days, your office texts every homeowner who took a card — and almost nobody writes back. If those texts went out from an unregistered business number, most were blocked or filtered before they reached a single roof.
A2P means application-to-person: any text sent by software rather than a person tapping a phone. 10DLC is the 10-digit local number it comes from. AT&T, T-Mobile, and Verizon require every business texting from local numbers to register with The Campaign Registry (TCR): a Brand (who you are) and a Campaign (what you text, with real samples and your opt-in story). Registered traffic gets delivered; unregistered traffic gets treated like spam.
Carrier spam filters learn from complaint reports, and post-storm roofing blasts generate complaints at industrial scale. “Your roof may qualify for a FREE replacement through your insurance” is one of the most-reported message patterns in the country, so roofing vocabulary — storm, hail, claim, free inspection, insurance — gets extra scrutiny even on registered numbers. A legitimate roofing sales operation has to register and write like a contractor, not a claim-farming operation.
There is also a legal layer 10DLC does not touch: Florida, Texas, and Louisiana restrict contractor solicitation tied to insurance claims. Before texting a storm-hit zip code, read our guide to storm-solicitation laws in FL, TX, and LA and the state SMS rules hub.
Registration goes through your messaging provider (Twilio, Telnyx, Bandwidth), which files with TCR. Have ready:
Solo operators without an EIN can register as Sole Proprietor, but that tier is capped around 1,000 messages a day and filtered hardest. If you sell under an entity, register the entity.
This is where roofers get rejected. Most roofing companies under about 2,000 messages a day fit Low Volume Mixed (roughly $1.50 to $2 a month); Marketing or Mixed runs about $10 to $12. A campaign description that passes:
“Apex Roofing sends inspection scheduling confirmations, estimate delivery, follow-ups after in-person visits, and job-status updates to homeowners who requested an inspection via our website or from a company representative in person. Recipients opt in at the time of the request. All messages identify Apex Roofing and include opt-out instructions.”
Notice what that description is not: it is not “we contact homeowners in storm-affected areas about insurance claim opportunities.” That sentence is a rejection, and in some states it is also a confession.
First message of any thread or blast carries the compliance footer: “Apex Roofing. Msg & data rates may apply. Msg frequency varies. Reply HELP for help, STOP to opt out.” Opt-outs (STOP, CANCEL, QUIT) must suppress the number immediately and permanently — your provider catches the keyword; your CRM must never queue that number again.
Samples that promise or imply insurance outcomes (“your claim may cover full replacement,” “we waive your deductible”) fail vetting. Deductible-waiver offers are also illegal in several states.
“Free” plus urgency is the classic spam signature. “No-obligation inspection” reads cleaner to vetters and homeowners alike.
A registered number that jumps from 50 texts a day to 2,000 the morning after a storm looks like every spam operation the filters were trained on.
Florida 489.147, Texas 4102.163, and Louisiana 45:844.11 restrict claim-related solicitation regardless of your 10DLC status. Registered spam is still spam — and in those states, an actionable violation.
“Homeowner requested inspection and gave their number to a rep” is opt-in; “we canvassed the neighborhood” is not. That satisfies the campaign form — automated marketing texts additionally need prior express written consent, covered in the storm-solicitation guide.
| Trust score (approx.) | Tier | T-Mobile daily cap | Roofing reality check |
|---|---|---|---|
| 75 to 100 | Top | ~200,000/day | National storm-response outfits |
| 50 to 74 | Upper-mid | ~40,000/day | Multi-market restoration companies |
| 25 to 49 | Lower-mid | ~10,000/day | Where most regional roofers land; plenty |
| 0 to 24 | Low | ~2,000/day | New brands; enough until a big storm week |
| Sole Proprietor | Bottom | ~1,000/day | Heavy filtering — avoid if you have an EIN |
TCR scores your brand 0 to 100; T-Mobile enforces published daily caps, AT&T rate-limits per minute, Verizon filters on reputation. If a storm week will push past your cap, external vetting (roughly $40 one-time) can raise a low score — or spread sends across additional registered numbers instead of spiking one.
On Twilio, unregistered US-bound traffic dies at the API with error 30034 (“message from an unregistered number”). On providers that let it through, carriers filter it silently — and every filtered message drags the number’s reputation lower, so by the time you register you may be ramping a burned number back from zero. Our Twilio deliverability guide covers diagnosing that spiral.
Registration is roughly $20 up front and a few dollars a month; one storm’s worth of blocked follow-ups costs more. The mechanics are identical if you also sell solar or run a pest control route — same brand-then-campaign process, different samples.
FollowUp handles this for roofing teams out of the box: the Autopilot tier includes a dedicated 10DLC-registered business number, with opt-outs and quiet hours enforced automatically. No TCR paperwork, no vetting wait, no error 30034 — registered before the next storm, not after it.
Yes. Any roofing contractor sending business SMS to US numbers from a 10-digit local number through software must register a brand and campaign with The Campaign Registry. In 2026, unregistered roofing traffic is blocked by Twilio with error 30034 and filtered by AT&T, T-Mobile, and Verizon.
Brand registration is $4 one-time. Campaign registration costs approximately $15 in one-time vetting plus roughly $1.50 to $12 per month depending on use case. Most roofing companies fit Low Volume Mixed (about $1.50 to $2 per month) or Mixed (about $10 per month). Carriers add small per-segment A2P surcharges on top.
10DLC registration gets your texts delivered, but state storm-solicitation laws control whether you may solicit at all. Florida (489.147), Texas (4102.163/4102.151), and Louisiana (45:844.11) restrict contractor solicitation tied to insurance claims and disasters. Registration is not permission; check the state rules before texting storm-damaged zip codes.
Common triggers: “free roof” or “free inspection” claims in sample messages, insurance-claim language that reads like claim solicitation, campaign descriptions that sound like storm-chasing lead generation, missing opt-out language in samples, and no described opt-in flow. Rewrite the samples as inspection scheduling and job-status updates and resubmit.
It can. Carrier reputation models watch for sudden spikes, and a number that goes from 50 texts a day to 2,000 the day after a hailstorm looks like a spam operation even when registered. Ramp volume over days, spread sends across the day, and stay within the daily cap for your trust tier.
This is a general summary, not legal advice.