SUPPORT.TWILIO.COM END OF LIFE NOTICE: This site, support.twilio.com, is scheduled to go End of Life on February 27, 2024. All Twilio Support content has been migrated to help.twilio.com, where you can continue to find helpful Support articles, API docs, and Twilio blog content, and escalate your issues to our Support team. We encourage you to update your bookmarks and begin using the new site today for all your Twilio Support needs.

Authentication+ for Public Brand A2P 10DLC Registrations

Starting on October 17, 2024, the A2P 10DLC ecosystem will introduce a new brand identity verification process called Authentication+. This mandatory verification step applies to both new and existing brand registrations for Public Profit entities and is designed to protect brands from impersonation and consumer fraud, including disinformation, smishing, and spoofing.

Affected brands will now require brand personnel attestation via Two Factor Authentication (2FA) to be carried out as part of the initial brand registration flow.

A brand contact email must be provided where a 2FA email will be sent for the brand contact to verify. The brand contact email must not be associated with free or personal domains or distribution lists.

The email recipient will have 7 days to complete the 2FA by clicking on a link in the email. Once the 2FA is complete, the brand will transition to a VERIFIED state and will be allowed to register campaigns for the brand.

For existing brands that are in VERIFIED or VETTED_VERIFIED state will need to be Authentication+ compliant to register new campaigns. Active campaigns associated with a Public Profit entity type brands are not immediately impacted however new campaigns can not be added until the brand’s contact email is added and 2FA is completed.

New Brand Registrations

  1. In Console, during A2P Registration please add Brand Contact Email under the customer profile. 
  2. If using Twilio’s APIs, add brand_contact_email as part of the us_a2p_messaging_profile_information.

Existing Brand Registration

  1. In Console, during A2P Registration add Brand Contact Email to the applicable registration. Complete 2FA and proceed to create new campaigns. 
  2. If using Twilio’s APIs, add brand_contact_email as part of the us_a2p_messaging_profile_information (see code below for updating existing brands).

Twilio Console Flow

New Brand Registrations

Existing Brand Registrations

Retrigger Email

If the brand contact fails to complete the 2FA process within the 7-day window, you will need to re-trigger the email verification:

  •  In the Twilio Console, you can resend the verification email.
  • 2FA email resend through Twilio’s API will be available in future releases. 

Example Email sent for Verification

When a brand contact receives the verification email, it will come from noreply@auth.campaignregistry.com. The email will contain the following elements:

  • Complete Verification Button: Clicking this will prefill the verification PIN and direct the contact to a web page to finalize the 2FA.
  • Manual Link: If the contact prefers, they can copy and paste the provided URL into their browser. In this case, they will need to manually enter the verification PIN to complete the process.

Updating Existing Brands

For existing brands, you’ll need to add or update the Brand Contact Email through either the Twilio Console or the API. Below is a sample API request to update the brand contact email for an existing registration. 

Once the email is updated, the 2FA verification process will follow, as outlined above.

TRUST_HUB_URL="https://trusthub.twilio.com"

TWILIO_API_URL="https://api.twilio.com"

MESSAGING_API_URL="https://messaging.twilio.com"




#############################

### Populate these values ###

#############################

TWILIO_ACCOUNT_SID="<account_sid>"

TWILIO_AUTH_TOKEN="<auth_token>"

US_A2P_BRAND_REGISTRATION_SID="<us_a2p_brand_registration_sid>" # Starts with "BN"

BRAND_CONTACT_EMAIL_ATTRIBUTE=$(cat << EOF

{

    "brand_contact_email": "<brand_contact_email>"

}

EOF

)

#############################




# Fetch the US A2P Bundle associated with the Brand Registration

A2P_BUNDLE_SID_RESPONSE=$(curl --silent --location --request GET $MESSAGING_API_URL/v1/a2p/BrandRegistrations/$US_A2P_BRAND_REGISTRATION_SID \

                                                            -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN | jq -r .a2p_profile_bundle_sid)




# Get  entity assignments related to the US A2P Bundle

ENTITY_ASSIGNMENTS_RESPONSE=$(curl --silent --location --request GET "$TRUST_HUB_URL/v1/TrustProducts/$A2P_BUNDLE_SID_RESPONSE/EntityAssignments" \

                                                            -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN | jq -r '[.results[].object_sid|select(startswith("IT"))]')




ENTITY_ASSIGNMENTS=$(echo "$ENTITY_ASSIGNMENTS_RESPONSE" | jq -r '.[]')

US_A2P_PROFILE_INFORMATION_ENTITY_ASSIGNMENT=""




# Filter the entity assignments to find the related SID (starting with "IT") associated with US A2P profile information

for assignment in $ENTITY_ASSIGNMENTS; do

    is_type_us_a2p=$(curl --silent --location --request GET "$TRUST_HUB_URL/v1/EndUsers/$assignment" \

                                                            -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN | jq -r '.type == "us_a2p_messaging_profile_information"')

    if [ "$is_type_us_a2p" = "true" ]; then

        US_A2P_PROFILE_INFORMATION_ENTITY_ASSIGNMENT=$assignment

        break

    fi

  sleep 1

done




# Update the brand contact email on the US A2P profile information.

UPDATE_US_A2P_PROFILE_INFORMATION_RESPONSE=$(curl --silent --location --request POST $TRUST_HUB_URL/v1/EndUsers/$US_A2P_PROFILE_INFORMATION_ENTITY_ASSIGNMENT \

                                --data-urlencode "Attributes=$BRAND_CONTACT_EMAIL_ATTRIBUTE" \

                                -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN )




echo $UPDATE_US_A2P_PROFILE_INFORMATION_RESPONSE





Have more questions? Submit a request
Powered by Zendesk