Menu

Expand
Rate this page:

Troubleshooting A2P 10DLC Registrations

To register in the US 10DLC ecosystem, customers must register a Brand for their business entity and then register an A2P messaging Campaign, for that Brand, built around a specific use case. This process can fail both at the Brand- and Campaign-approval stages. Brand registrations typically fail if the business-identifying information is incomplete, improperly formatted or doesn't match existing records. Campaigns tend to fail when the description of the proposed Campaign purpose, use-case, workflow, opt-in and opt-out methods is incomplete or inadequate, or if the substance of the proposed Campaign is deemed to violate TCR policies.

Finally, after a Campaign has been successfully registered for A2P, each of the phone numbers present in (or subsequently added to) the Messaging Service associated with that Campaign must themselves be registered by the A2P ecosystem partners. This process is initiated once the Campaign has been approved, but is not instantaneous and in some instances can be delayed or can fail.

The present document will explore troubleshooting Brand and Campaign issues and, where necessary, resubmitting both Brands and Campaigns that have been rejected. Finally, we will see how customers can check the current A2P registration status of all phone numbers owned by their account.

Note: The three types of Brands (and associated Campaigns) for which a business entity can register are Standard, Low-Volume Standard and Sole Proprietor. Please see this document for a comparison of the three brand types, as well as the difference between Direct and ISV customers. In general, the registration and error reasons for Sole Proprietor Brands and Campaigns can be somewhat different from those for Standard and Low-Volume Standard Campaigns, and where applicable these differences will be noted below.

1. Troubleshooting Brand registration failures

This document walks through the process of registering a Standard or Low-Volume Standard Brand and Campaign via our APIs. In Step 3 of that document you have created the new Brand, and in Step 3.01 you call fetch on that Brand to determine its current STATUS, as indicated in the brand_status return parameter. The possible statuses of the Brand you've created are as follows:

  • "PENDING": your Brand registration has not yet been completed. Most Brand registrations complete within a few minutes, but a few registrations take more than seven days.
  • "IN_REVIEW": your Brand registration has not yet been completed; your Brand information is under manual third-party review. Such a manual review takes seven business days or more. There is no action required from your side.
  • "APPROVED": your Brand registration was completed and verified. You can now register your campaigns. Please note, however, that a Brand with APPROVED status might still have brand_feedback information which could be used to improve your Trust Score. Please see immediately below for details.
  • "FAILED": your Brand registration's information couldn't be verified. Please review the brand_feedback or failure_reason fields to understand more about this failure.
  • "SUSPENDED": your Brand is deemed to have potentially violated one or more rules for Brand registration established by the A2P ecosystem partners. This status will require Twilio Support assistance to address. Please see Section 1.1 below for details.

brand_feedback and failure_reason return parameters:

Please note that Twilio is working to make the Brand registration feedback more useful and actionable for users, which will include the consolidation of brand_feedback and failure_reason messages within an errors[] return parameter (much like the one now implemented for rejected Campaigns, as detailed below).

What you should understand for now is that the failure_reason parameter will only be populated if your Brand has a status of FAILED; whereas brand_feedback can be populated either if the Brand's status is APPROVED, but there is room to improve your Brand's trust score by rectifying or clarifying certain information you've supplied, or if your Brand has a status of FAILED (in which case both the brand_feedback and failure_reason fields may be used to communicate what information needs to be rectified for successful resubmission of the Brand. Please see possible values and other details of these two return parameters immediately below.

The brand_feedback field contains a list of Feedback IDs, where each ID corresponds to a recommendation on how you can improve your brand score. You will receive a list of feedback IDs on your brand registration, if any is determined necessary. Along with the list of feedback IDs, you will receive descriptive recommendations for ways to fix your brand registration.

Below are a list of possible feedback IDs that can be returned and corresponding recommendations for fixing the brand information (note that these particular feedback IDs pertain only to Standard and Low-Volume Standard Brands, as Sole Proprietor Brands cannot have e.g. Tax IDs or stock symbols):

Feedback ID Recommendations
TAX_ID
  • Use your company’s business registration number (which is EIN for U.S. customers or the equivalent for customers outside the U.S.).
  • Use your company’s legal name that you used in the tax filings.
  • The information above needs to be an exact match to your company’s tax fillings. If you need this information, we recommend using the EIN lookup service or contact your legal department.
STOCK_SYMBOL
  • Use your company's stock symbol.
  • Use the stock exchange where your company stock is traded (i.e. NYSE, Nasdaq).
GOVERNMENT_ENTITY
  • If you are not a US-based government entity, you should register as a private entity.
  • Provide a dated letter on official letterhead from a US-based government entity stating that the organization is considered an instrument of a municipal, state, or federal government entity.
NONPROFIT
  • If you are not a US-based government entity, you should register as a private entity.
  • Provide an IRS nonprofit determination letter or Tax Form 990 from the latest tax year.

More than one feedback ID may be returned at a time. Once you have received feedback on your brand registration, you can contact Twilio support with the appropriate corrected information to update your brand.

You can read more in A2P 10DLC Brand Approval Best Practices.

As noted above, unlike brand_feedback, the failure_reason return parameter will only be populated in the case of a FAILED brand registration (while brand_feedback may appear for both FAILED Brands and low-scoring APPROVED brands). There are many potential values for failure_reason, but in each case you will see a description of the failure reason and a suggestion for resolution. Here follow some examples from failed Sole Proprietor Campaigns:

—"Unable to fetch A2P Bundle Details, please check if the correct bundle sid was provided for registration and the bundle is compliant." -> Check Bundle Details and retry

—"Unable to fetch Customer Profile Bundle details, please check if the correct bundle sid was provided for registration and the bundle is compliant." -> Check Bundle Details and retry

—"Unable to register Brand with The Campaign Registry" -> review the registration requirements defined at the beginning of this document and ensure that your registration information is complete and meets the requirements (for additional information please see https://support.twilio.com/hc/en-us/articles/14488596590491-Why-did-my-Sole-Proprietor-Brand-Registration-Fail-.) Please verify that the supplied information is accurate and well-formed before contacting Twilio Support

1.1 Brands with SUSPENDED status, and related Campaign suspensions

If you have a suspended brand, it means the brand may have violated one or more of the following rules, causing Carriers / other ecosystem partners to suspend it:

  • Campaign-to-traffic mismatch: In-market traffic does not match with the campaign registered
  • Spam: including but not limited to any kind of unwanted or unsolicited messaging
  • Controlled substance: including but not limited to messaging pertaining to controlled substances
  • Phishing Messages: including but not limited to messaging designed to gain access to information through deceptive means
  • (Excessive) Complaints: including but not limited to unacceptable volumes of consumer complaints
  • Illicit Content: including but not limited to messages relating to illegal activity
  • Fraudulent Messages: including but not limited to counterfeit/fraudulent goods or activities
  • Affiliate Marketing: including but not limited to sharing of opt-ins to affiliate companies
  • Promotional Gambling or the act of betting: including but not limited to the act of gambling or promoting gambling
  • Lack of Age gate: No age gate mechanism for messaging campaigns that require it
  • Illegal Sweepstakes: including but not limited to sweepstakes that do not follow required laws
  • Other violations not listed above

The Twilio team should be reaching out to you to provide guidance on how to fix the suspended Brand. Please check your email or the Twilio Support Center. If you don’t see anything, please raise a ticket.

While your brand is suspended, you will experience the following restrictions:

  1. It is VERY important that you do not attempt to send similar messages via another existing or new Brand or Campaign. This could result in a serious violation and may result in termination / suspension of your account with Twilio.
  2. Suspended Brands face the following restrictions
    1. Suspended Brands cannot be updated or used to register any new Campaigns. You will receive an error code 21731 if you try to do this.
    2. Suspended brands with active Campaigns may not be deleted via self-service. Suspended brands with no campaigns may be deleted via self-service.
    3. Your ability to create new Brands using the same tax ID may be restricted.
  3. All campaigns associated with suspended brands will be suspended. Suspended Campaigns face the following restrictions
    1. Suspended campaigns cannot cannot be used to send messages. You will receive an error code 30033 if you try to do this
    2. Suspended campaigns cannot be deleted via self-service and you may not add / remove the numbers. You will receive an error code 21729 if you try to do this.
  4. Before you resolve the suspensions, you’re responsible for the monthly registration fees associated with suspended campaigns as well as the monthly fees associated with the numbers that are in the campaigns.
  5. It is also possible that you won’t be able to resolve the suspensions if the ecosystem has determined your use case is not fit for A2P 10DLC. If this is the case, after 60 days of being suspended, you may request the Twilio Support team to delete your suspended brands and campaigns. But you may be required to release all the associated phone numbers at the same time. In the future, we plan on deleting unresolved suspended brands and campaigns automatically after a certain period of time

2. Resubmitting Standard/LVS Brands

Twilio supports resubmission of Brands in the unverified (or FAILED) state up to three times for free using either the Twilio Console or the Twilio Trust Hub API. Once you have reached this limit, reach out to Twilio Support for additional assistance.

While Twilio will continue to allow brand updates going forward, these may incur a fee at some point in the future, as each brand resubmission entails a charge by our A2P ecosystem partners.

The three free self-service Brand resubmissions offered here, and in the walkthrough docs, must be distinguished from an appeal-based, manual re-vetting process for a failed Brand. For example, most Standard or LVS Brands fail because of a mismatch between the business information (exact legal business name, exact address, etc) submitted in the registration process with the Business Profile, and that information as registered with the government tax authority. Thus, these failures can be remedied by the customer simply reviewing their tax documentation and addressing any discrepancies between this and the business information provided in the Business Profile, before updating that Business Profile and resubmitting the Brand per the procedures detailed below for Console and for API. If this resubmission results in a successfully-approved Brand, no involvement of Twilio Support is necessary and the customer may proceed with Campaign registration.

However, in certain rare cases, the customer may continue to see Brand registration failures even if the submitted Business Profile information exactly matches that in their Tax ID registration. One common reason for this is that the Tax ID (e.g. EIN in the U.S.) registration is so new that it hasn't yet propagated to the databases that Twilio and our ecosystem partners use for vetting purposes. The same could be the case for a 501c3 or other non-profit organization. In such a case, the remedy is for the customer to appeal the Brand rejection with Twilio Support, at which point Twilio Ops will ask for certain documentation which will prove the customer's tax registration. This process of necessarily involves manual vetting by our ecosystem partners.

As of August 23rd, 2023, this second kind of appeal-based, manual revetting of a submitted Brand will entail a $10 fee, over and above the fees normally charged for Brand submission.

Using the Console

When a Brand registration fails within the Console, here’s what you can expect to see in your process to resubmit the Brand with correct information. Of course failure reasons can be various; this one happens to be a mismatch between the name associated with the provided business registration number (Tax ID/EIN) in publicly-available tax information, and the legal name you've provided for the Brand itself:

Brand Failure UI in Twilio Console

When submitted using the Twilio Console, Brands will show descriptive error messages. From here, you can click "Edit customer profile" to begin the process of editing and correcting your Brand information. Note that you are not editing the Brand submission as such; that can only be deleted and resubmitted when you are using the Console. But the information that needs to be rectified is actually in the Customer Profile you submitted before the Brand creation step, and the Customer Profile can be edited via the blue button, as indicated.

After you have edited the Customer Profile to your satisfaction, and resubmitted this for approval, you'll go to Messaging > Regulatory Compliance > Brands in the left navigation and find the Brand that failed. Any Brand that you see in this list can be deleted, so be sure that you're deleting the correct one (this is one reason why its always a good idea to create Brands and other such entities with meaningful 'friendly names'). You will find the red Delete link in the dropdown when you click the three dots to the far right of the row with the Brand in question:

delete a brand

Once you've deleted this Brand, you can go back to the Onboarding page under Regulatory Compliance, and if you're not already in the correct profile use the Switch Customer Profile link on the right to select the Profile you just edited. This should immediately take you to the Submit Brand page, allowing you to submit a new Brand with the rectified profile information.

Updating an A2P Brand Using the API

You may perform a brand update a maximum of three times at no additional charge. Once you have reached this limit, reach out to Twilio Support for additional assistance.

If you attempt a brand update more than three times, you will receive a 400 API response and a 21724 error code.

While Twilio will continue to allow brand updates, these may incur a fee at some point in the future, as each brand resubmission entails a charge by our A2P ecosystem partners.

What does this do? This step allows you to edit the A2P brand you've created if you have received a FAILED brand status and the tcr_id is not null. You will use the brand's SID (starting with BN) to make this update call.

NOTE: In contrast to the Console, where it's necessary to delete and recreate a failed Brand, through the API it is possible to call an update on an existing (failed) Brand submission, as shown in the code snippet below. However, as with the Console, it is the information you submitted in the Customer Profile or Trust Bundle associated with that Brand that actually needs to be rectified; otherwise the Brand submission will simply fail again for the same reason.

First, review the error message from the brand_feedback and/or feedback_reason parameters that you've retrieved in the Brand fetch step noted above. Where it's necessary to update information, you will need to perform the necessary updates using the relevant Trust Hub API endpoints as detailed in Steps 1 (Customer Profile submission) and 2 (Trust Bundle submission) of the API walkthrough documents. For example, you may need to update the associated customer profile or update the information attached to the listed end-user.

If you are updating a Profile for a Sole Proprietor Brand, please be aware that as of late November, 2023, the Twilio API will be performing data validation checks on the email field included with the Business Profile, and the street address field of the address associated with that business profile (these are handled in Steps 1.2 and 1.4 respectively of the Sole Proprietor ISV API onboarding guide). If you are updating the profile for a Sole Prop brand via API for any reason, even if it has nothing to do with email or address information, these new validations could cause the update to fail even if the email and address information was accepted previously. Therefore it is important to be aware of the validations.

For the email field, the validations and rejection reasons are as follows:

Description

Rejection reason

Email domain should have correct syntax

Email domain has an invalid address syntax.

Email domain is unknown

Unknown email domain.

Temporary email which can be disposable

Email is a suspected disposable address.

If email check have passed all above validations and still is invalid from sendgrid API

Email is invalid.

And for the street address field, the validations and rejection reasons are as follows:

If given address is not present

Address not found with sid ADXXXXXXXXXXXXXXXXXXXXXXXX

If given address is not a valid US/CA address

The provided address is not a valid US or Canada address

If given address has invalid postal code

[address_sids] - Invalid Postal Code. Address suggestion -> Street: 1 Jersey St. Secondary Street: Boston, MA 02215-4147. Locality: Boston. Region: MA. Postal Code: 02215-4147. Country: US;

If given address has invalid street name("street": "1 Jersey Str")

[address_sids] - Invalid Street. Address suggestion -> Street: 1 Jersey St. Secondary Street: Boston, MA 02215-4147. Locality: Boston. Region: MA. Postal Code: 02215-4147. Country: US

If given address has invalid locality("locality": "Bostun")

[address_sids] - Invalid Locality. Address suggestion -> Street: 1 Jersey St. Secondary Street: Boston, MA 02215-4147. Locality: Boston. Region: MA. Postal Code: 02215-4147. Country: US;

If given address has invalid region("region": "MAA")

[address_sids] - Invalid Region. Address suggestion -> Street: 1 Jersey St. Secondary Street: Boston, MA 02215-4147. Locality: Boston. Region: MA. Postal Code: 02215-4147. Country: US;

If given address has Invalid house number("street": "10000 Jersey St")

[address_sids] - Invalid House Number

Once you have finished any necessary updates to your Profile and/or Trust Bundle , use the update method of the brand_registrations endpoint to update the brand’s registration. As the following snippet indicates, the only necessary input parameter for this update call itself is the Brand SID (path or sid). The return json will contain the same parameters you've seen in the create and fetch calls for the Brand. Remember that your newly-updated information will in many cases require manual re-verification, so allow some time for this before checking Brand Registration status again.

Loading Code Sample...
        
        

        Update an A2P Brand

        3. Troubleshooting and rectifying A2P Campaigns

        3.1 Troubleshooting Campaigns via Console

        Campaign vetting can take several weeks or longer. And because Campaigns can be rejected by TCR for a wide variety of reasons, if you are an ISV registering multiple secondary customer Campaigns, you may find these approved at different times, or you may find that some are approved and others are rejected (FAILED). For this reason, both ISVs and direct customers sometimes find it easier to track the status of Campaigns via the Console, whether they were originally submitted via Console or via API. Going to Messaging > Regulatory Compliance > Campaigns will show a list of all your Campaign submissions, with a status indicated for each. If you click on the name or Campaign SID of a FAILED Campaign, you will see a Campaign Details page with something like the following:

        Campaign failure reasons in console

        In this case, if you look at the Campaign Information panel (you may need to zoom in on this screenshot), you'll see that two separate failure reasons are indicated. One is that the Campaign description was found too be invalid, probably because it was simply not detailed enough. The second failure reason concerns the content of the first Sample message. This would be a reasonable opt-out message, but it is not an appropriate sample message for a Campaign whose basic use case is Marketing.

        Whatever the specifics of the failure reason or reasons, notice that this Campaign submission can only be deleted at this time; the blue edit campaign link is currently disabled.

        3.3 Deleting and Recreating a failed Campaign via Console

        To delete a Campaign you would use the red Delete Campaign link next to it in the main Campaign details screen. This will launch a confirmation modal; this Delete Campaign link is active for APPROVED Campaigns as well, and you definitely do not want to delete an approved Campaign unless you have very good reason to do so. Also NOTE: since you will want to use either most or all of the original Campaign details in the new submission, it might be a good idea to duplicate the tab with the original Campaign details screen, so that you can refer back to these Campaign details when you recreate the Campaign.

        Once the FAILED Campaign has been deleted, you can then go back to the Brand for which you submitted this Campaign (you can find this via Messaging > Regulatory Compliance > Brands in the left navigation, which will allow you to click on the appropriate Brand and launch the Brand details page). If you just need to resubmit the Campaign with a new use case indicated, here simply use the blue Register New Campaign button in the Brand details screen, which will launch a new Campaign creation workflow and allow you to enter whatever original and new Campaign information is appropriate.

        On the other hand, if the Campaign's failure reason lies with the Brand information itself (which ultimately always means some aspect of the Brand's underlying business profile or trust bundle), you will need to refer to Section 2 above for how to remediate Brand issues. But the Campaign deletion still needs to happen first; a Brand cannot be edited if it has a Campaign associated with it. Once the Brand has been resubmitted, then on the Brand details screen you can use the Register New Campaign button to launch the new Campaign creation workflow. In this case it's likely that all of the original Campaign detail information can be used as-is.

        Valid and invalid shortened links in Campaign submissions

        If you present a business website url in any part of your Campaign submission (such as sample messages) that uses a shortened url, be aware that only certain forms of shortened url are acceptable to The Campaign Registry. Specifically, you must use a dedicated, branded short domain that belongs to your business. You cannot use the sort of randomly-shortened URL typically furnished by a free service like bit.ly or TinyUrl; this will lead to rejection of the Campaign by TCR. For more information see this support article on using shortened urls in Campaign submissions.

        3.4 Troubleshooting Campaigns via API

        In Step 5 of the guide to registering Standard/Low-Volume Standard Brands via API as well as the guide to registering Sole Proprietor Brands, you created a new messaging Campaign to go with your new A2P Brand. In the Sole Proprietor guide, Step 5.1 directs you to do a fetch call on the newly-created Campaign to check its status. In the Standard/LVS guide, Step 5.3 directs you to make this same call. It's important to remember that, like new A2P Brand registration, new Campaign verification is never an instantaneous process. Sole-Proprietor Campaigns tend to be approved (or rejected) most quickly, while Standard Campaigns must go through several distinct layers of vetting and this process can take up to several weeks. If your fetch call to the new Campaign returns a campaign_status of IN_PROGRESS, this vetting process is not yet complete. Once the process IS complete, your fetch call will return a campaign_status of either VERIFIED or FAILED (or in some rare cases SUSPENDED; on Suspended Campaigns see section 3.2.1 below)

        A code sample for this fetch call follows. This call requires two parameters: the messaging_service_sid (i.e., the SID of the Messaging Service you're using in this Campaign), and a hardcoded compliance type of QE2c6890da8086d771620e9b13fadeba0b (see code sample for how these are used in your code library of choice).

        Loading Code Sample...
              
              

              GET A2P Messaging Campaign Status

              If you do receive a campaign_status of FAILED, the errors[] object in the call's json return will not be empty (as it will for Campaigns in a non-failed state, and as shown in the code sample return) but will instead be populated with information. (However, please note that this is only the case for Campaigns submitted since May 31, when this feature was implemented; for previously-submitted Campaigns the errors[] attribute will be empty on failed Campaigns as well as those in other states). The format of the populated errors[] object is illustrated below:

              "errors": [
              {
              "error_code": 30897,
              "fields": [ "MESSAGE_FLOW" ],
              "url": "https://www.twilio.com/docs/api/errors/30897",
              "description": "The campaign submission has been reviewed and it was rejected due to Disallowed Content."
              }
              ]

              For a FAILED Campaign, there will always be at least one such error listed, but there could be multiple errors, each detailed in the same format. Each error will have a distinct error_code, which you will find enumerated in this support article. The description field in this error format corresponds roughly to the Rejection Category associated with that error code in the support article, and the url of the error will lead to a more detailed explanation of that failure reason and the steps to remedy it, if any. Below is an example of an error[] return showing multiple errors:

              "errors": [
                  {
                    "url": "https://www.twilio.com/docs/api/errors/30886",
                    "fields": [
                      "USE_CASE_DESCRIPTION"
                    ],
                    "error_code": 30886,
                    "description": "The campaign submission has been reviewed and it was rejected because of invalid campaign description."
                  },
                  {
                    "url": "https://www.twilio.com/docs/api/errors/30892",
                    "fields": [
                      "SAMPLE_MESSAGE_1"
                    ],
                    "error_code": 30892,
                    "description": "The campaign submission has been reviewed and it was rejected because of URL shortener in the sample message."
                  },
                  {
                    "url": "https://www.twilio.com/docs/api/errors/30893",
                    "fields": [
                      "SAMPLE_MESSAGE_2"
                    ],
                    "error_code": 30893,
                    "description": "The campaign submission has been reviewed and it was rejected because of invalid sample message content."
                  },
                   .......

              It's important to note that there are two categories of errors laid out in the linked support article, and only the first type of error can be remedied. For example, error code 30893 maps to a Rejection Category of “Invalid Sample Message Use Case” with the following Rejection Reason: “Sample messages are either not provided, unclear, or content does not match the campaign use case.” This is one of 12 rejection reasons that can be remedied, i.e. the information supplied in the original Campaign submission can be corrected, as follows:

              Verify that sample messages are accurate and detailed. Sample messages should reflect actual messages to be sent under campaign and indicate templated fields with brackets. At least one of the sample messages needs to include your business name. Use case and campaign description need to match campaign description.

              In the case of an error like 30893, then, such a Campaign could be be either deleted and recreated or edited in place. As with failed Campaigns remediated via the Console, in using the API the delete/recreate route is more cumbersome than an edit-in-place, and should be used only in the two scenarios where an in-place edit is not possible: ie, either the Campaign's designated use case (not use case description) is incorrect, or the failure reason actually pertains to the associated Brand rather than any detail of the Campaign itself, in which case the Campaign must be deleted, then the Brand must be rectified as detailed in Section 2 above, and then the Campaign recreated. Examples of a Campaign delete API call can be found in Part 5.2 of the Guide for Sole Proprietor API registrations and in Part 5.4 of the Guide for Standard/LVS registrations; recreating a deleted Campaign uses the same create API call as the original Campaign create. Campaign EDIT via API is a new feature, and we will an example of such a call in a following section.

              First, however, we need to consider some examples of the second category of Campaign failure error, which cannot be remedied (through either an edit or a delete/recreate) simply by improving the submission detail:

              Error Code

              Rejection Category

              Rejection reason

              30883

              Content Violation - SHAFT - Sex

              Submission included content such as nudity, pornography, sex toys, or other adult content

              30883

              Content Violation - SHAFT - Hate

              Submission included speech that is hateful, profanity, violent, incites violence, or similar speech

              30883

              Content Violation - SHAFT - Alcohol

              Submission includes content referring to alcohol

              The 30883 error code represents a Content Violation, which means that your proposed Campaign has been deemed to deal with content that is prohibited under the terms of A2P Campaign registration, such as sexual references, hate speech, or references to alcohol, firearms, tobacco products or marijuana. As shown here, the Rejection Category and Reason will specify the content reference that is deemed to be in violation. In addition to Content Violations, your Campaign use case could be disallowed because it is deemed to represent a high risk for a spam/phishing attack (30884), other potentially fraudulent activity (30885), violation of Twilio’s general Terms & Conditions (30882), or several other reasons enumerated in the Support article, including the use of the same EIN for too many Brand registrations (By default, a single EIN/Tax ID can only be used in a maximum of 50 different Brands; any brands beyond this limit using the same EIN are invalid, and therefore their associated Campaign(s) will be rejected even if the Campaign submission itself is entirely valid otherwise).

              As the support article notes, customers who disagree with a Campaign rejection for such a non-resubmittable reason may submit an appeal to the Twilio support desk; but outside of this route, there is no remedy for this kind of Campaign rejection except to materially change the nature or content of the proposed Campaign, or in some cases the associated Brand.

              3.4.1 Individual Campaign Suspensions

              It is possible for a Campaign to be suspended on its own, but it’s also possible for a Campaign to be suspended because the Brand it’s associated with is suspended. You can check the Brand status to understand which case it is. If it’s a Brand suspension situation, go to Section 1.1 above to check out what it means for you. If your Brand is still in an Approved state but your Campaign is suspended, keep reading.

              If you have a suspended campaign, it means the campaign may have violated one or more of the following rules, causing Carriers / ecosystem partners to suspend it:

              • Campaign-to-traffic mismatch: In-market traffic does not match with the campaign registered
              • Spam: including but not limited to any kind of unwanted or unsolicited messaging
              • Controlled substance: including but not limited to messaging pertaining to controlled substances
              • Phishing Messages: including but not limited to messaging designed to gain access to information through deceptive means
              • (Excessive) Complaints: including but not limited to unacceptable volumes of consumer complaints
              • Illicit Content: including but not limited to messages relating to illegal activity
              • Fraudulent Messages: including but not limited to counterfeit/fraudulent goods or activities
              • Affiliate Marketing: including but not limited to sharing of opt-ins to affiliate companies
              • Promotional Gambling or the act of betting: including but not limited to the act of gambling or promoting gambling
              • Lack of Age gate: No age gate mechanism for messaging campaigns that require it
              • Illegal Sweepstakes: including but not limited to sweepstakes that do not follow required laws
              • Other violations not listed above

              The Twilio team should be reaching out to you to provide guidance on how to fix the suspended campaign. Please check your email or the Twilio Support Center. If you don’t see anything, please raise a ticket.

              While your campaign is suspended, you will experience the following restrictions:

              1. It is VERY important that you do not attempt to send similar messages via another existing or new Campaign. This could result in a serious violation and may result in termination / suspension of your account with Twilio.
              2. Suspended Campaigns face the following restrictions
                1. Suspended campaigns cannot cannot be used to send messages. You will receive an error code 30033 if you try to do this
                2. Suspended campaigns cannot be deleted via self-service and you may not add / remove the numbers. You will receive an error code 21729 if you try to do this.
              3. Before you resolve the suspensions, you’re responsible for the monthly registration fees associated with suspended campaigns as well as the monthly fees associated with the numbers that are in the campaigns.
              4. It is also possible that you won’t be able to resolve the suspensions if the ecosystem has determined your use case is not fit for A2P 10DLC. If this is the case, after 60 days of being suspended, you may request the Twilio Support team to delete your suspended campaigns. But you may be required to release all the associated phone numbers at the same time. In the future, we plan on deleting unresolved suspended campaigns automatically after a certain period of time

              3.5 Updating a failed Campaign in place via the API

              A Campaign edit feature will be added to the API in the very near future. Until then, you may either use the Console Campaign edit feature (when it's appropriate to edit as opposed to delete and recreate, see Section 3 and 3.2 above), or use the API to delete the failed Campaign and then recreate it.

              4. Troubleshooting Phone Number Registrations

              It’s important to understand that even after a given A2P Campaign has been approved by TCR, individual phone numbers in the Messaging Service associated with that Campaign must then be approved by the respective US carriers. This is itself an asynchronous process. Accordingly, Twilio offers a Console tool that allows you to check the current A2P registration status of all phone numbers owned by a given account (or subaccount). Phone numbers will be listed in a downloadable .csv report, indicating the A2P registration status of each number, and its associated Campaign SID and Messaging Service SID.

              This .csv report will be formatted as in the following example:

              sample report CSV

              In this example report, the phone numbers shown are all associated with A2P Campaigns; numbers in your account with no such association would have a blank CampaignSID field, and their status would be UNREGISTERED. In this example, all of these numbers have a status of either PENDING_REGISTRATION or FAILURE. The full list of possible statuses follows, together with a description and potential remediation:

              • UNREGISTERED: This number has not been associated with a verified campaign. Register the 10DLC number by adding it to a Messaging Service associated with a verified A2P campaign. Note that for numbers added to a Messaging Service, the MessagingServiceSid value will not display in the report until the MS has been associated with a Campaign and that Campaign has been successfully A2P-registered. Additionally, please note that Sole Proprietor Campaigns can only have one registered 10DLC. Additional 10DLC numbers in that Messaging Service will be in the “Unregistered” status.
              • PENDING_REGISTRATION: Twilio has received your request to register this number, but has not completed the necessary configurations with ecosystem partners. There’s no further action required from you. Please note that it is normal for number registration to take several days depending on the amount of number registration requests we receive. You may check back at this report later to see if your number has the status of REGISTERED.
              • REGISTERED: Your number is registered and ready to be used to send messages to the US
              • PENDING_DEREGISTRATION: Twilio has received your request to de-register this number, but has not completed the necessary configurations with ecosystem partners. If you’ve recently tried to move a number from one Campaign to another, you may see your number status changing in the sequence of Registered - Pending De-registration - Unregistered - Registered. There is no further action required from you. Please note that it is normal for number deregistration to take several days depending on the amount of number registration requests we receive. You may check back at this report later to see if your number has been successfully registered.
              • FAILURE: An unexpected error has occurred on your number. Reach out to Twilio support after logging into console at https://www.twilio.com/console/support/tickets/create

              To download this CSV report, go to Phone Numbers in the Twilio Console, then Manage > Active Numbers. In the second banner on the Active Numbers page, you’ll find a link to “Request CSV Report” as indicated below:

              Active Numbers Request CSV link

              This link will take you to a page with the following header, allowing you to request the generation of your CSV status report:

              Check PN Status Page

              This report can take up to 24 hours to generate, depending on your volume of numbers and accounts, but if you have only a small set of numbers it could be ready much sooner. When the report has finished generating you will receive a notification email to this effect, at the email address indicated in the box on this page (it will be the email associated with the account you are using). When you receive this email notice, return to the number registration status page (refresh if necessary) and it will display a completion banner and present a blue Download CSV report button, as shown:

              Report Complete, Download button

              Further Troubleshooting

              If your status report shows numbers in an UNREGISTERED or PENDING state that you feel should be fully registered at this point, try the following:

              1. If the campaign is a Standard / Special use case, and has been registered, but the phone number experiencing issues was added to that registered Messaging Service less than two weeks ago, please wait a few more days for the status to update as number registration may take some time.
              2. If the campaign is a Sole Proprietor use case, these can only have one number registered for A2P, so if there were multiple numbers in the Sender pool of a preexisting MS you've selected for the New Campaign, then Twilio one number in the Messaging Service at random to register for A2P. If customers wish to specify a different number for A2P use, remove ALL numbers in the Messaging Service, and only add back the number they wish to use.

              Get help with A2P 10DLC

              Need help building or registering your A2P 10DLC application? Learn more about Twilio Professional Services for A2P 10DLC.

              Rate this page:

              Need some help?

              We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.

              Loading Code Sample...
                    
                    
                    

                    Thank you for your feedback!

                    Please select the reason(s) for your feedback. The additional information you provide helps us improve our documentation:

                    Sending your feedback...
                    🎉 Thank you for your feedback!
                    Something went wrong. Please try again.

                    Thanks for your feedback!

                    thanks-feedback-gif