A2P Watch Sample board Run a check

Free · read only · no signup

Know every client's A2P status — before their texts stop sending

One scan reads every subaccount, brand, campaign and number in your Twilio account, then tells you plainly what's broken, why, and how to fix it. About a minute.

Run your free check GET only

Destroyed the second the scan ends — here's exactly how

Nothing to install · the sample board needs no account

The problem

You find out when the client calls

A2P failures are silent. A brand is suspended, a campaign rejected, a number drifts out of a messaging service — and nothing announces it. Messages simply stop arriving. No bounce, no dashboard error, no email.

The first signal is usually a client asking why their reminders stopped three days ago. By then you're explaining a problem you didn't know you had, on an account you'd have caught in seconds if anything had been watching.

01

No single view

Twilio shows one account at a time. Twenty clients means twenty tabs, and there is no cross-account status page.

02

No notifications

Nothing emails you when a brand flips to suspended. The state just changes.

03

It decays

A check on Monday says nothing about Thursday. Carrier reviews, complaints and policy changes all land without warning.

04

Errors are cryptic

"Campaign rejected" doesn't tell you the opt-in page is at fault — so the resubmission fails too, and costs another fee.

Why it keeps happening

The rules changed, and they're still changing

US carrier messaging rules have tightened every year since 2023, and each change quietly invalidates something that worked the day before.

SEP 2023

Unregistered traffic stopped sending

Carriers moved from filtering unregistered application SMS to rejecting it outright. A number outside an approved campaign doesn't send at all — it returns error 30034.

MAY 2026

The early warnings went away

Twilio retired the warnings that used to fire at 50 and 70 percent of your T-Mobile daily cap. Error 30023 still fires at the ceiling, so you now find out by hitting it rather than before.

SEP 2026

Rejection reasons change again

From the 15th, new error codes replace the vague feedback on rejected campaigns. Clearer once you know them — and a reason to re-read every registration you last looked at a year ago.

This is why a one-off audit isn't enough

The obvious objection

"Why would I paste my Twilio credentials into this?"

Reasonable question, and it deserves a real answer rather than a privacy policy. The short version: use a restricted key, and we throw it away when the scan ends.

Every request the scanner makes is one of five reads. There is no code path that sends a message, edits a registration or spends your balance.

Encrypted on arrival · destroyed when the scan ends · swept after 15 minutes

Read the whole policy in plain language — what we keep, for how long, and the safer way to connect.

Every request the scanner can make
GET/v1/a2p/BrandRegistrations
GET/v1/Services
GET/v1/Services/{sid}/Compliance/Usa2p
GET/v1/Services/{sid}/PhoneNumbers
GET/2010-04-01/Accounts/{sid}/IncomingPhoneNumbers.json
Not implemented anywhere in the scanner
POST/Messages.json
POST/v1/a2p/BrandRegistrations
DELETEanything at all

How it works

STEP 1

Paste a read-only key

Use a Twilio Restricted API Key limited to reading Messaging and Accounts. Instructions are on the form. Delete the key afterwards if you like.

STEP 2

We read, and only read

The scanner walks every subaccount and asks Twilio for the state of each brand, campaign and number. It issues no writes — it cannot send, change or spend anything.

STEP 3

You get a graded report

Worst accounts first, each finding in plain English with a how-to-fix panel. Share the link, or have it emailed to you.

Fit

Built for you if

You run SMS for clients across multiple Twilio subaccounts

You've had a campaign rejected and weren't sure why

You'd rather hear about a suspension from a tool than from a client

You're an ISV or platform whose customers send under their own brands

You inherited a Twilio account and have no idea what state it's in

Not yet, if

All your client messaging runs on GoHighLevel's LC Phone rather than your own Twilio. There's no API for us to read yet — it's what we're working on next.

You send only outside the US and Canada, where A2P 10DLC doesn't apply.

You want us to fix things for you. Right now we tell you what's wrong and how to fix it; we never touch your account.

If something is already broken

What each failure actually means, and what to do about it

Written from the states the scanner finds most often, with every claim traced back to Twilio's own documentation rather than to another blog post.

Questions people ask

Is it actually free, or free-until-a-paywall?

The scan and the report are free, with no account and no card. What's coming later is continuous monitoring — we keep watching and message you the moment something breaks — and that will be a paid subscription. The one-off check stays free.

What do you store after the scan?

The results only: which brands and campaigns are in what state, and the findings. Your credentials are destroyed when the scan ends. The report sits behind an unguessable link for 30 days and is then deleted.

Can this send messages or change my registrations?

No. Every request the scanner makes is a read. There is no code path that sends a message, edits a registration or spends your balance, which is why a read-only restricted key is all it needs.

How is this different from opening the Twilio console?

The console shows one account at a time, has no cross-account status view, and reports state without telling you what to do about it. This checks every subaccount in one pass, sorts the broken ones to the top, and explains each finding in plain English with a fix.

I use GoHighLevel — will this work?

Only if your clients run on your own Twilio account. If you use LC Phone, GoHighLevel exposes no A2P status to third parties, so there's nothing for us to read. Tell us on the report page and we'll let you know when that changes.

Do I need to be technical to use this?

No. You copy two values out of the Twilio console and paste them in. The report is written for whoever has to explain the problem to the client, not for an engineer.

What if I only have one Twilio account?

It still works and still finds things — uncovered numbers and stalled registrations are just as common on a single account. The cross-account view simply matters more once you're managing several.

Run your free check

About a minute from here to a full report

If you'd rather not hand over your auth token, make a restricted key first — two minutes, and you can delete it the moment you're done.

One caveat worth knowing: Twilio only lets a restricted key read the account it belongs to. If you manage clients in subaccounts and want all of them in one report, use the parent account's Auth Token. We'll say which accounts we couldn't reach either way.

Back to the form
Making a read-only key
01
In Twilio: Account → API keys & tokens → Create API key, and choose Restricted.
02
Tick Read and List only — never Create, Update or Delete — on these:
  • Messaging → brand-registrations
  • Messaging → services
  • Messaging → services.usa2p-campaign
  • Messaging → services.phonenumbers
  • Phone-numbers → active-numbers
  • Identity & Access Management → accounts

brand-registrations sits above content-templates in the Messaging list — easy to scroll past, and without it the scan can't see suspended brands.

03
Paste the key SID and secret here. Delete the key once you have your report.