Verify WhatsApp Overview
Verify WhatsApp helps your business verify users by delivering One-Time Passcodes (OTPs) via WhatsApp messages with your brand, adding to Verify's existing channels for OTP delivery. Adding WhatsApp for OTP delivery can boost your overall conversion rate and lower your costs, because it has over 2 billion users and it works with just a Wi-Fi connection. It doesn't charge for non-delivery, and isn't exposed to fraud that exploits the telecom network, such as toll fraud.
If you're already using Verify SMS for OTP delivery, we can configure your account to first attempt delivery via WhatsApp for specific countries. If WhatsApp delivery fails, Verify will automatically send an SMS. You don't need to change your user interface (UI) either, as long as it refers to SMS/WhatsApp as generic "messages." This Verify WhatsApp to SMS Optimal Channel Selection feature is currently in a Pilot phase with limited availability. Contact sales to request access.
- Create or use an existing Verify Service
- Start a verification with WhatsApp, by specifying
Channel=whatsapp
(instead ofChannel=sms
). See code sample. - Check a verification just like any other channel
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function createVerification() {11const verification = await client.verify.v212.services("VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")13.verifications.create({14channel: "whatsapp",15to: "+15017122661",16});1718console.log(verification.accountSid);19}2021createVerification();
Response
1{2"sid": "VEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",3"service_sid": "VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",5"to": "+15017122661",6"channel": "whatsapp",7"status": "pending",8"valid": false,9"date_created": "2015-07-30T20:00:00Z",10"date_updated": "2015-07-30T20:00:00Z",11"lookup": {},12"amount": null,13"payee": null,14"send_code_attempts": [15{16"time": "2015-07-30T20:00:00Z",17"channel": "whatsapp",18"attempt_sid": "VLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"19}20],21"sna": null,22"url": "https://verify.twilio.com/v2/Services/VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Verifications/VEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"23}
Watch the Authy app demo
This video shows how we added WhatsApp as another verification option in our Twilio Authy Android mobile app.
Billing is at the following list price that is consistent with Verify SMS:
Verify WhatsApp pricing = $0.05 per successful verification, plus the passthrough costs associated with WhatsApp Authentication Conversations.
- Start Verification is called twice within a 10-minute window. The
To
parameter is provided with the same US (+1) country-code phone number in both calls. SetChannel=whatsapp
. Two WhatsApp messages containing the same OTP code are sent. - Check Verification is then called and it returns
status=approved
. - Expected Bill: $0.05 (successful verification) + $0.0135 (1 Verify - WhatsApp Conversation Authentication - United States) = $0.0635.
- A single WhatsApp Authentication Conversation includes all messages delivered to a single user (phone number) within a 24-hour window. Pricing of business-initiated conversations per country/region is listed on Meta's USD rate card here. Verify WhatsApp is considered a single "business" in this pricing model
- The $0.005 "Twilio message rate" and "First 1000 free per month" shown in the Programmable Messaging cost calculator do not apply.
- In very rare cases, you may not be charged for a WhatsApp Authentication Conversation, because some other Verify WhatsApp customer already sent an OTP message and started a "conversation" with the same phone number within the last 24 hours.
- Contact sales to understand price discount options that may apply to you.
Verify WhatsApp works just like Verify SMS, except for the following differences due to differences in the underlying SMS and WhatsApp channels:
- Bring your own WhatsApp Sender (a WhatsApp phone number associated with a WhatsApp Business Account).
- WhatsApp is not available to use for Verify in China. For a comprehensive list, please visit WhatsApp Availability by Country.
- No blocking (e.g. block from sending a message to X country code).
- No routing (e.g. WhatsApp is the only "carrier").
- No PSD2, Pre-Approved or Custom templates support.
Over the last few years, we've witnessed the rise of a new messaging channel: WhatsApp. With over 2 billion users across 180 countries, it is fast achieving ubiquity. Every WhatsApp user is identified by a unique phone number that they provided when creating their WhatsApp account, so this means that WhatsApp can directly replace SMS for all verification use cases, including sign-up, login, and transaction.
When we added WhatsApp as another channel to send OTPs in our Authy app's sign-up/login flow, we saw strong user adoption: sending about 2000 WA messages per day globally. Adoption was particularly strong in heavy WA countries like Brazil, India, Indonesia, and Germany where we saw 20-40% of users pick the WA option. Adding WhatsApp also resulted in a higher overall conversion rate, because it works on WiFi when there is no cell connection to receive SMS. WhatsApp also doesn't charge for messages that aren't delivered. Lastly, WhatsApp is a modern, IP-based network that isn't exposed to fraud that exploits the telecom network, such as toll fraud, also known as traffic pumping. We actually saw this first hand with Authy where the SMS conversion rate experienced a big drop in a country due to toll fraud for a week, but the WhatsApp conversion rate didn't change.
In order to use Verify WhatsApp, you need to first provide us with your WhatsApp Sender. Once this configuration step is done, if you're familiar with the Verify API for sending SMS OTPs, it's literally just a one-word change to the API request to switch the desired Channel parameter from SMS to WhatsApp. The generated OTP code is the same, so that a user can use the code they receive from either WhatsApp or SMS if they requested both.
Absolutely. Effective March 1, 2024, you are required to bring your own brand and phone number (Sender) to send the WhatsApp OTP message. Customers previously using Verify WhatsApp's "generic sender" need to bring their own WhatsApp Sender to comply with Meta's WhatsApp business messaging policy.
If your use case is OTP delivery, then we strongly recommend Verify because it can intelligently orchestrate OTP delivery between WhatsApp, SMS, RCS and other channels to maximize conversion and reduce cost. In a single phone number verification session, the same OTP code that's generated by Verify is sent across all channels, simplifying code validation.
Additionally, we auto-create authentication message templates in multiple languages that you can use with your own brand and provide end users with a copy code button to enhance their experience. Contact sales to discuss how these benefits apply to you.
Based on our experience with our Authy app, we found that the following best practices improved the likelihood that a user completes the verification after choosing to receive an OTP message via WhatsApp (aka Conversion Rate):
- If the user is using your mobile app, you can check that the user also has WhatsApp installed on the same device, before displaying the "send message via WhatsApp" option. For details on how to do this, see the Detecting if the user has WhatsApp installed section of the What we learned from adding WhatsApp verification to the Authy App blog post. Checking if WhatsApp is installed avoids scenarios where the user might have set up a WhatsApp phone number at some point, but can't immediately receive messages on the device. Granted, the user may have WhatsApp installed on a different device, so you might exclude some users unnecessarily, but in our experience, this is a small percentage of users.
- Have the user confirm that they entered their phone number correctly, to avoid sending the OTP message to the wrong person.
- We've observed that "stock Android" phones are able to retrieve OTP codes directly from English-language WhatsApp messages and push it to your user while they are still in your app. Take advantage of this by making it easy to copy/paste the code into your UI.
Verify continues to be the best solution for the OTP use case because it can intelligently orchestrate OTP delivery between WhatsApp, SMS, RCS, and other channels to maximize conversion and reduce cost. Verify also saves you setup time by auto-creating templates for you in multiple languages using the new Copy Code authentication templates.
Customers using Verify WhatsApp with their own Sender are subject to Meta's Messaging limits.
As a best practice, we recommend a single sender for OTP messages as it provides a consistent end user experience and streamlines operations by maximizing your Sender messaging limits. That said, if your business uses a single sender for marketing purposes, you need to take into account that users may block a marketing message resulting in them not receiving OTP messages sent by you.