Twilio: Create an A2P 10DLC Campaign

April 08, 2024 • 8 min read

Home / Blog / Twilio: Create an A2P 10DLC Campaign
Twilio: Create an A2P 10DLC Campaign | Tips on getting Twilio's A2P 10DLC Campaign approved in a step-by-step tutorial

Introduction

If your company requires to implement a messaging service to send, for example, SMS reminders for appointments, booking confirmations or any other message of any kind, you'll need a cloud communications solution. Whether it's a generally known brand such as Twilio or any other 3rd party provider, they all have a particularly same requirement: you'll have to go through the A2P 10DLC Campaign Verification if you want to send SMS from a 10-digit US phone number to other US numbers.

 

You may encounter different steps or even a different UI on each platform in order to fill the form, but the concept here is the same:

 

  1. You first register your brand, providing all the legal details to the communications provider
  2. You fill out the A2P 10DLC campaign form, in which you indicate what you're going to be using the campaign for
  3. You either go back and forth adjusting the details until it gets approved and then you'll be able to send SMS from within the purchased phone number

 

Keep in mind that these steps are only needed once the development/integration is complete or when you ran out of free credits from within the platform you chose. While you integrate Twilio in your project, Twilio will provide a test 10DLC phone number for you to play with.

 

But why are these steps needed to send SMS to US phone numbers? Basically, the US SMS/MMS system was not designed to be used the way it's being used right now. Before this new regulatory compliance was set in place, scammers and spammers were flooding with fake SMSs or even stealing people's personal information. Carriers needed a way to protect their customers while also adding an extra layer to avoid performance issues in all the SMS/MMS communication channels. That's where A2P 10DLC comes in play.

 

Feel like knowing more about it? Take a look at Twilio's explaination here.

 

Getting started

Explanations set apart, let's go to the Twilio Console and register both the Brand and Campaign. Keep in mind that in order to start the A2P 10DLC Campaign Verification, your account must be out of the free/trial plan.

 

Head over to the twilio console and log in using your credentials.

 

Once you're in the portal, head over to Messaging > Regulatory Compliance > Onboarding. Once in there, you'll be prompted to create a Customer Profile (if you haven't created one yet).

 

The Customer Profile is needed for Twilio's KYC. It basically asks for some general company information, including contact information and also EIN. This is the first step and it is a required step in order to create a Brand out of this Profile. Some of the fields that are needed to fill out are:

 

General information

  • Business legal name.
  • Business address.
  • Business PO code.

 

Business information

  • Business Type (Corporation, LLC, etc.).
  • Industry Type - make sure to fill the right one as Twilio sometimes verifies that the messages you send from within a campaign matches your industry type
  • EIN.
  • Business URL - needs to be a valid website which provides both contact information and ideally a contact form.

 

Contact information

  • People to contact - this includes role, full name, email address and a phone number
  • Notifications email - this email is the one that gets Twilio news but also notifications like billing alerts, usage reports, and so on.

 

Once you filled out all the information, you should have a Customer Profile like this:

 

 

The next step is to register a Brand. Brands in Twilio are defined based on 2 things: your Customer Profile and the message throughput that you need. Take a look at the following diagram to see which brand type suits you best

 

twilio-brand-types

 

So, once in the Brand section of the form, pick up the one that suits you best for your use case. Depending on the brand type, twilio is going to do a one-time fee charge to register the brand. Keep in mind that if the brand registration fails by any reason, such as wrong information, and you need to re-register the brand, you will be charged with the same fee.

 

 

The brand verification can take up to 48 hours and you'll have to wait until the brand gets registered in order to create a campaign.

 

Once the brand is approved, the last step is to create the campaign that's going to allow you to send SMS to any US phone number. Keep in mind that you can create as many campaigns for a brand as you like, there's no specific limit for that. I also encourage you to do so in order to keep track of the costs of each campaign in the billing panel.

 

There are many different fields that need to be filled in the campaign form, so let's go through them step-by-step and I'll provide you my personal experiences on which ones are the most important (and which ones caused me to have to re-submit the form multiple times 😅)

 

 

  • A2P Brand: Get's filled in automatically but you'll be able to select which brand gets associated to the campaign in case you have more than 1 brand.
  • Campaign use cases: it's a dropdown which contains different purposes for the campaign, for which you can select only one. Generally the low-volume mixed option is your go-to unless you're looking for something really specific like sending OTP or 2FA messages (for which there's a specific option)
  • Messaging Service: 10DLC Phone numbers will be assigned to that messaging service
  • Campaign description: This is one of the most important inputs that could get your form submission denied. Don't be confused by the term “description” as in an internal identification to be able to find that campaign quickly; you have to tell Twilio what the campaign is about. If you hit the Learn more button that's below the input you'll be able to see some example of successful messages that can get the campaign approved.

 

Let's take a look at the second part of the form:

 

 

  • Sample messages: At least 2 of them are required. These are also one of the most sensitive inputs in term of compliance, you need to specify what the messages that go through that campaign will say. You generally use dynamic values like “Hello, {{firstName}}, we received your call on {{date}}”. If you only plan to send 1 general-purpose SMS, provide 2 samples of that same message but with a different wording. One of the most important things that you should do when providing the sample message is a way to let the user know how to unsubscribe to that message. In the next part we'll review what the OPT-OUT words are, but it's important to reference them in the sample messages. Twilio pays particular attention on how do you let the users know that they have a way of cancelling your SMS.
  • Message contents: The options are pretty straight-forward. If you include embedded links, the vetting team may ask for additional information about it - although I never had the need to send links through SMS, so I can't be a 100% certain on this one.

 

Let's take a look at the last piece of the form below:

 

 

I left the “Did you know?” part on purpose.

 

The how do end-users consent to receive messages is probably the most important input of the entire form. You have to be really descriptive in how they accept to receive your SMS, whether it's because they filled in some form through your CRM, or they call into your office, or any other scenario that you may encounter. I probably got rejected 3 times on this on my first days since this new compliance came in place, then again, in the Learn more link, you'll have some successful text examples that you could use as inspiration. Providing a public screenshot (like storing it publicly in your web server) of how you capture the phone number from your customers certainly helps to get the campaign approved, however, keep in mind that if you upload it to your own web server rather than some storage service for that screenshot, it really helps to use the server with the company website in it so Twilio can see that it matches with the rest of the information you provided.

 

Lastly, Opt-in Keywords and Message are samples that you can optionally include. I never filled those since Twilio already provides a standard auto-reply for those scenarios.

 

Once everything is done, you can hit the Submit button and then the vetting process will start. Keep in mind that it takes generally 5 to 7 business days in order to have an answer from Twilio, and it doesn't come in through your email/SMS, you'll have to come into the console and periodically verify the status of the campaign.

 

Conclusion

That's it for now, if you already have the SDK set in place in your application and you're just waiting for the form to be approved, nothing else is needed on your end. Remember to move the 10DLC phone numbers to the messaging service that the campaign indicated to use once it gets approved, otherwise SMS will not go out either.

 

In the next post, we're going to talk about integrating the SDK from scratch and provide a base Laravel example so that you can re-use it if needed.

 

Remember to follow me on my networks that are attached in the header/footer.

 

Thanks!

-Gonza

257
Twilio

About the author

Author

Gonzalo Gomez

Sr. Software Engineer

I have over 6 years of experience building highly scalable web applications using a wide variety of technologies. Currently focusing on Laravel, Livewire, Vue.js and AWS as my go-to stack.

Subscribe to my newsletter

If you enjoy the content that I make, you can subscribe and receive insightful information through email. No spam is going to be sent, just updates about interesting posts or specialized content that I talk about.

Ready to take your project to the next level?

Contact me

Related posts

Best practices for storing timestamps in Laravel

August 23, 2024
IntroductionWhen dealing with time-sensitive data in web applications, timestamps are crucial. They help track everything from user activity to system logs. However, the way we... Continue reading

Traits and Laravel: the practical guide

April 18, 2024
IntroductionTraits are a mechanism for code re-use in single inheritance languages such as PHP. They were designed to allow us developers to save logic and... Continue reading

Content rendering: Blade vs Vue and React

June 03, 2024
IntroductionThere are different approaches when it comes to showing data to the end user. Today, I'd like to talk about the 2 alternatives that I... Continue reading

Eloquent queries vs DB Facade

May 01, 2024
IntroductionIn Laravel development, making the right choices regarding database operations can significantly impact application performance and scalability. When dealing with tasks such as bulk data... Continue reading