Subscription includes
Support
Take control of every phone number in your store. Phone Validator & Formatter brings real-time phone number validation to WooCommerce and makes sure each number a customer enters is real, callable, and saved in one clean format – so deliveries arrive, SMS notifications get through, and your CRM, shipping, and marketing tools never trip over bad data.
It works everywhere a phone number enters your store – classic and block checkout, My Account, order edits, profile edits – and validation always runs on your server using Google’s libphonenumber. Nothing to bypass, no customer data sent to third-party services, no per-lookup fees.
And your checkout? You decide how it looks. Keep the plugin completely invisible – customers see the same phone field as always – or switch on the country flag & dial code selector, new in 1.5.
Checkout phone validation and formatting always work the same – you only choose what customers see at the checkout phone field.

The default, and for many stores the right choice. The phone field looks exactly the way it always has; validation and formatting happen quietly in the background. No new UI to explain, and no extra JavaScript added to your pages.
One setting, and the phone field shows a country code selector – flag plus dial code. The dropdown only ever offers countries your validation rules accept. When your store matches the phone to the billing/shipping country, the flag mirrors the address and swaps automatically when it changes. There is nothing extra to configure – the initial flag and the country list are derived from your validation settings. It speaks your customer’s language, including right-to-left scripts.

Typos are caught before the order exists. Real-time validation blocks invalid numbers during checkout, with clear, contextual error messages that help customers self-correct instantly. Because the final check always runs on your server, it works even when JavaScript is disabled or a browser extension interferes – the cases where front-end-only validators silently let bad numbers through.
Nothing slips past. If an invalid number does enter your store another way (imported orders, manual edits), it’s flagged directly in your WooCommerce orders list – before the parcel ships, not after the courier calls a dead number.


With the invisible validation your customers type their number the way they always do. Most shoppers skip the country code – and that’s perfectly fine. The plugin matches the phone to the selected country and adds the correct dial code behind the scenes; customers who prefer to type it themselves can.
You get properly formatted international numbers. They get a checkout that just works. No new habits to learn, no extra fields.

One consistent format across your whole stack. Store every number in your preferred format – E.164 (+420777123456) for SMS gateways and APIs, international with spacing for readability, or national for regional teams. Applied on order creation, order edits, My Account updates, and profile edits.
Easy further processing, zero manual cleanup. CRM, SMS marketing, shipping labels, customer support – every tool receives the same clean number, and the “+42 0777…” mysteries disappear from your exports.

Sell to one country, a region, or the whole world. Accept numbers from all 200+ countries and territories, require the phone to match the billing/shipping country, or define your own list of allowed countries.
Reduce failed deliveries and COD losses. A phone number that matches the shipping country is a number your carrier can actually call. Set the rule once and the plugin enforces it on every order.

Invisible mode adds nothing to your storefront. And the flag selector is engineered for Core Web Vitals: assets load only on checkout and My Account pages, the heavy phone engine is fetched lazily, and in the most common configurations the flag renders with roughly 3 kB of JavaScript – up to 100× less than the ~300 kB a typical phone-input widget ships.
No CDN. No third-party requests. No tracking. All assets are bundled with the plugin and served from your own site – good for GDPR, great for reliability.

Your phone data, available to the tools of 2026. The plugin registers validate and standardize abilities via the WordPress Abilities API (WordPress 6.9+), so AI agents and automation platforms can discover and call them out of the box – for example through MCP.
Prefer classic integrations? Optional REST API endpoints expose the same validation and standardization, and a full set of filters and actions lets developers tailor everything to their stack.
Every phone number under control – set it up once, benefit on every delivery.
Yes. Validation, formatting, and the flag selector all support both the classic (shortcode) checkout and the Cart & Checkout blocks, plus the My Account address forms. HPOS is fully supported.
No. Nothing loads until you enable it, assets load only on checkout and My Account pages, and in the most common configurations the flag renders with about 3 kB of JavaScript. The full dropdown library is fetched lazily and never blocks rendering.
No. All validation and formatting happens on your own server using the libphonenumber library. There are no external API calls, no CDN assets, and no per-validation costs — a straightforward setup for GDPR compliance.
No. Validation and standardization apply from the moment you enable them — past orders are left untouched. Invalid numbers already in your store are simply flagged in the orders list.
Yes. Choose Skip phone validation in the settings to format numbers on save without blocking checkout; invalid numbers are then flagged in the admin instead.
Only if you want them to. By default the plugin is completely invisible — the phone field looks the same as always and bad numbers are simply caught. Switch Display Mode to Flag + dial code and the field shows a country flag with the dial code instead.
If a customer doesn’t provide a dial code with their phone number, the plugin assumes the phone number belongs to the same country as the one selected in the billing or shipping address. This mirrors typical behavior when entering phone numbers in real life, where users often omit the country code for local numbers.
Wherever the customer enters the number, validation is enforced: an invalid phone number blocks Checkout (classic and block) and the My Account phone edit. Back-office saves — editing an order, creating one manually, or updating a user profile — are never blocked: the number is simply reformatted to your chosen style on save.
Orders whose number failed validation are flagged with a notice in the WooCommerce orders list, so nothing slips through silently.
Numbers from all countries and territories covered by Google's libphonenumber (200+). The plugin ships in nine languages — Czech, Dutch, English, French, German, Italian, Portuguese, Slovak, and Spanish, across 23 locales including regional and formal variants — is translation-ready, and the flag selector supports right-to-left languages.
E.164 (e.g. `+420777123456`) — it is the format SMS gateways, telephony APIs, and most CRMs expect, so numbers flow through your stack without any transformation. Prefer the international format when readability matters, or the national format for a single-country store with regional teams.
You can report security bugs through the Patchstack Vulnerability Disclosure Program. The Patchstack team help validate, triage and handle any security vulnerabilities. Report a security vulnerability.
Extension information
Compatibility
Countries
Languages
Requirements