NNabeel Hassan

Blog · October 8, 2026 · 8 min read

A2P 10DLC Registration for AI Voice Agents: Getting Confirmation Texts Actually Delivered

By Nabeel Hassan — AI Engineer · ICPC World Finalist

TL;DR: If an AI voice agent sends a text to a US number from a local business number, that text needs A2P 10DLC registration behind it, or carriers will filter it and nobody will tell you. Registration is two things: a brand (the legal business, matched to its EIN and website) and a campaign (what the texts are for, sample messages, how people opt in, how they opt out). Most rejections come from the same few gaps: a website that does not match the brand, no privacy policy line about mobile numbers, an opt-in story that does not explain how consent is collected, and sample messages that do not look like the real ones. For voice agents the tricky part is consent, because it is given out loud on a call. Ask for it in the conversation, log it as data, describe that flow in the campaign, and start the registration on day one of the project, because it is usually the longest wait in the whole build.

Almost every voice agent I have shipped sends texts. A booking confirmation, a reminder the day before, a link to a form, a "sorry we missed you" after a dropped call. At Fortell AI that meant agents for clinics, vet practices, garages and real estate teams. At Tested Media it means the CallSetter AI product, where Retell agents feed GoHighLevel and the follow-up happens by text. The voice part gets all the attention in a demo. The text part is what the caller actually holds on to afterwards.

And the text part has a failure mode the voice part does not: it can stop working completely while every system reports success. I have mentioned A2P 10DLC in passing in a lot of posts, including the missed-call text-back build and the phone number setup guide. This is the full version: what it is, how I get it approved the first time, and the voice-specific detail most guides skip.

What A2P 10DLC actually is

A2P means application-to-person: software sending messages to people, as opposed to a person texting a friend. 10DLC means a standard ten-digit local US number, the kind a business normally uses as its main line.

US carriers treat business texting from local numbers as a separate class of traffic, and they want to know who is sending it and why before they deliver it. The registration lives in a central registry and has two layers:

Numbers are then attached to an approved campaign. In Twilio that happens through a Messaging Service. In GoHighLevel it happens through the A2P wizard in the phone settings, which walks through the same brand and campaign steps on top of LC Phone or a connected Twilio account.

Why unregistered texts are worse than failed texts

A failed text is easy to deal with. Something errors, someone sees it, someone fixes it.

Unregistered texts on 10DLC are handled differently. They get accepted by the platform, they go out, and then they are blocked or filtered on the carrier side. The automation in n8n or GHL shows a green tick. The voice agent says "I've just sent you a confirmation." The caller gets nothing.

This is the exact shape of failure I wrote about in post-call automations that fail silently: the call was fine, the workflow ran, the outcome never happened. The client finds out weeks later when a patient says they never got a reminder, and by then the no-show numbers look like the agent is not working. If you are using texts to cut no-shows, an unregistered number quietly turns that whole strategy off.

The brand: boring, exact, and where most delays start

The brand step looks like a form. Treat it like a reconciliation exercise.

When I scope a project, I ask for the EIN letter, the exact legal name and the website on the first call. If those three do not line up, I know the registration will bounce before I submit anything, and fixing the website is cheaper than waiting through a rejection.

The campaign: write it like the reviewer is skeptical

Campaigns are reviewed by people, and they are reviewing a lot of them. A campaign gets approved when the reviewer can understand in a minute who gets texted, why, and how they agreed to it.

Pick a narrow use case

For a voice agent, the honest use case is almost always customer care or account notifications: confirmations, reminders and replies to people who contacted the business. I keep marketing out of the same campaign. Promotional texts carry stricter rules, and mixing them in makes the whole campaign harder to approve and easier to filter. If the client wants promos later, that is a separate campaign with its own opt-in.

Sample messages that look like the real ones

Reviewers compare your samples to your description, and carriers compare live traffic to your samples. So the samples should be the actual templates the agent will send, with the business name in them and placeholders where the details go:

"Hi {name}, this is Riverside Vet. Your appointment is confirmed for {date} at {time}. Reply C to confirm or call us to change it. Reply STOP to opt out."

Every sample names the business. At least one includes opt-out language. Links, if used, are on the client's own domain. Public link shorteners are a common filtering trigger, so I avoid them in both the samples and the live messages.

Opt-out and help keywords

STOP, HELP and their usual variants need to work, and the campaign needs the response text for each. GHL and Twilio handle the standard keywords once configured, but I still write the HELP reply myself so it includes the business name and a real contact method.

The voice agent part: consent given out loud

This is the bit most A2P guides do not cover, because most of them assume someone ticked a box on a web form.

With a voice agent, the caller usually agrees to texts in conversation. The opt-in description in the campaign has to explain that flow, and the agent has to actually follow it. My approach:

  1. The agent asks before it texts. Something like "Can I text you a confirmation to this number?" It is a single short question, and it reads naturally in the call. I covered how to phrase lines like this for the ear in prompt writing for speech.
  2. The answer becomes data, not just transcript. A post-call field like sms_consent: yes | no | not_asked, captured with the same care as the other caller details. The texting workflow checks that field before sending anything.
  3. The consent is stored on the contact. In GoHighLevel that means a tag or custom field on the contact record, with the call ID, so there is a trail if anyone ever asks. This is part of why I treat the CRM as the system of record, as in the CallSetter AI build.
  4. The campaign description says all of this. In plain words: the caller phones the business, the AI assistant asks during the call whether they would like a text confirmation, and texts are only sent to callers who say yes. Reviewers want to see the mechanism, not just the word "consent."
  5. The website mirrors it. The privacy policy states that mobile numbers and SMS consent are not shared with third parties for marketing, and there is a short SMS terms section describing what people will receive, how often, and how to opt out. Missing privacy policy language is one of the most common rejection reasons I have run into.

For outbound agents the bar is higher, because the business is starting the conversation. There, consent has to exist before the first contact, usually through the form or ad the lead came from, and the campaign has to describe that source honestly.

After approval: watch delivery, not workflow status

Approval does not mean every text arrives. Carriers still filter individual messages that look off, and things drift: someone edits a template, adds a link, or starts sending a promo through the care campaign.

So the monitoring watches delivery status from the carrier side, not just whether the workflow fired. In Twilio I subscribe to status callbacks and alert on filtering and unregistered-number errors, the 30007 and 30034 family, rather than just on failed API calls. In GHL I check the message status in Conversations for the first batches after launch. During the first two weeks live, text delivery is on the same daily checklist as call outcomes.

If a client wants to send texts but cannot get a brand approved quickly, a verified toll-free number is a reasonable stopgap. It has its own verification process, it is not instant either, and a local number usually feels more natural for a neighbourhood business. Outside the US none of this applies in the same way, which is one of the defaults I flag in the UK voice agent guide.

Start it on day one

The registration itself is not hard. The waiting is. Brand checks, campaign review and the occasional resubmission can take anywhere from days to a few weeks, and none of it can be sped up by writing code faster. That is why it sits at the very top of my project plan in how long it takes to build a voice agent. I collect the business details on the scoping call, submit the brand that week, and build the agent while the review runs. By the time the agent is ready, the texts are allowed to arrive.

The short version


I build production voice and chat agents on Retell, wired into n8n, GoHighLevel and Twilio, including the texting, compliance and follow-up that make the calls count. More about my background here, or book a call.

FAQ

Do AI voice agents need A2P 10DLC registration?

Yes, if the agent or its follow-up workflow sends texts to US numbers from a local ten-digit business number. Without a registered brand and campaign, carriers block or filter those texts even though the platform shows them as sent.

Why do A2P 10DLC campaigns get rejected?

The common reasons are a legal name or website that does not match the EIN record, a privacy policy with no statement about not sharing mobile numbers, an opt-in description that does not explain how consent is collected, and sample messages that do not name the business or match the use case.

How do you get SMS consent from a caller on a voice agent call?

The agent asks during the call whether it can text a confirmation to the number, the answer is captured as a structured post-call field, the consent is stored on the CRM contact with the call ID, and the texting workflow only sends when consent is yes. The campaign description explains that exact flow.

How long does A2P 10DLC approval take?

It varies from a few days to a few weeks depending on brand checks, campaign review and any resubmissions. That is why I submit the brand in the first week of a voice agent project and build the agent while the review runs.

Building something in this space?

I take on AI-agent, automation and product work directly — scoped fast, shipped fast.

Book a discovery call →

Keep reading