SMS
Send a one-time code to the customer’s phone. Use a local number, toll-free number or short code according to your approved sender setup.
Verify possession of a phone number or email address before moving a customer through a sensitive workflow. Give people supported alternatives and keep the check inside your application’s rules.
Choose where we should send your code.
Protect a sign-in, confirm a phone number or check a customer before sharing private details. From a familiar text message to a quick passkey check, choose the method that fits your customers.
Send a one-time code to the customer’s phone. Use a local number, toll-free number or short code according to your approved sender setup.
Read the code over a phone call. Give people a useful alternative when they cannot receive a text.
Confirm access to an email address with a one-time code. Add an extra check to sign-in with the WordPress plugin.
Verify a time-based code from an enrolled authenticator app. Once enrolled, the customer does not have to wait for a delivered message.
Let customers sign in with their device’s fingerprint, face recognition or screen lock. No password to remember and no code to type.
Verify a phone number through the mobile network without asking the customer to copy a code. Network and device eligibility apply.
Deliver a verification code in WhatsApp. Give customers another way to verify through an app they already use.
Send an approval request to an enrolled device. Customers review the request and approve it in your app.
Local (10DLC) for a familiar business number. Toll-free for a national identity. Short code for dedicated, high-volume verification. Registration, approval and sender availability apply.
Compare sender costs →Create a verification from your server. Your customer enters the code in your application; you check it through the API and continue only when verification succeeds.
Use a scoped Message API key for a custom application, or install the Message Verify WordPress plugin to add email codes to password sign-ins.
const response = await fetch(
"https://app.message.com/api/v1/verify",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.MESSAGE_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"to": "+15125550134",
"channel": "sms"
})
}
);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const result = await response.json();Server-side example. Keep credentials out of browser code. Check a code with POST /api/v1/verify/check using verifyId and code.
Message Verify adds an email code after a WordPress password sign-in. Install the plugin, connect your Verify service and test the complete flow before enabling it for users.
Upload Message Verify in WordPress and enter your scoped API key and service settings. The plugin sends requests from your server.
Use the setup test to check your connection and email delivery. Enable the sign-in check when you have confirmed the code arrives.
After entering their password, the user receives an email code and completes the verification screen to continue.
A typed email address or phone number is a claim. A completed verification gives your application evidence that the person can receive a code at that destination.
Your application requests the supported verification method for the intended destination. Use the appropriate service configuration and keep the API credential on your server.
The hosted screen offers text message, voice call and email options. Explain what the code is for and let the person use a supported alternative when one channel is unavailable.
Validate the submitted code through the verification flow. Your application should inspect the verified result before proceeding, rather than trusting a browser message or an unchecked form field.
The right security decision depends on the action. Receiving a code does not make a person the owner of every record with a similar name.
Use verification for the specific session, destination and action you intended. An old result from a different flow should not become a universal pass for future requests.
Sensitive order access may also require matching order details such as an order number and billing postal code. Combine the appropriate checks instead of using an email address alone.
A verified destination does not grant administrative access or permission to read another customer’s information. Your backend must still enforce account ownership and authorization.
Make verification understandable for customers and controllable for the people running the product.
Choose SMS, voice, email, WhatsApp, TOTP, passkeys, Silent Network Authentication or push. Match the method to the customer and the action.
Use service-level settings for the application’s verification behavior. Keep separate uses understandable so a change for one flow does not surprise another.
Use the supported expiry, retry and fraud-control settings. Handle an invalid or expired code clearly without giving away whether unrelated customer accounts exist.
Inspect the verification outcome and available events. A request to send a code and a successfully completed verification are different states.
Use the REST API and scoped credentials from your server. Check errors and status before allowing the next action, including when a delivery provider is unavailable.
Supported plugin flows can use Verify for customer checks and subscriber confirmation. Configure the specific integration rather than assuming every platform has identical verification support.
Message Verify charges $0.03 per successful check. Twilio’s published base fee is $0.05. Delivery is charged separately, so you can see exactly what the check and the message cost.
| Charge | Message.com | Twilio Verify |
|---|---|---|
| Per successful verification | $0.03 | $0.05 |
| Per outbound SMS segment (US) | $0.0061 | $0.0083 |
| 1,000 successes + 1 SMS each | $36.10 | $58.30 |
| Delivery on resends / failed checks | Delivery charges apply | Delivery charges apply |
Verification fees only. Add the delivery cost for each code sent.
US SMS example assumes one single-segment code per success. Carrier charges and taxes are excluded; resends cost extra. Published USD list rates checked September 25, 2026. Carrier fees, taxes, number rental, registration and any workspace fees are separate. Volume discounts and negotiated contracts can change the comparison.
See all Message Verify rates →Pay $0.03 when verification succeeds, plus the delivery charges for the code. No verification fee for an unsuccessful check.
| Charge | Rate | When it applies |
|---|---|---|
| Successful verification | $0.03 | Once the verification succeeds |
| Outbound SMS | $0.0061/segment | For each code message sent, including resends |
| Carrier surcharge | Varies by carrier | Added to SMS delivery |
| Code entered through the API | No inbound SMS charge | Submitting a code is an API request, not a text message |
With one single-segment SMS per check: $30 in verification fees + $6.10 in SMS delivery = $36.10 before carrier fees and taxes. Resends and unsuccessful attempts still incur delivery charges.
Email, voice and authenticator workflows have different delivery requirements. Voice delivery is billed at the applicable calling rate.See SMS carrier fees and registration.
Start now →Choose the intended use, supported channels and sender identity. Review delivery availability and the workspace’s current usage pricing.
Create the verification from your backend and present a clear code-entry or hosted flow. Keep credentials and authorization decisions off the client.
Try a correct code, an incorrect code, expiry and retry. Confirm that a failed verification cannot accidentally unlock the protected action.
Verify is a separate usage-based product. Channel availability, sender setup and delivery fees apply.