Free Plugin · WordPress

The phone field
your forms
have been missing.

A searchable country-code dropdown with flags, E.164 formatting, and fixes for every submission, cache and translation bug. Drop it into any Elementor Pro Tel field.

FreeForever0API callsWPMLReady
What's inside

Nine things that should already exist.

Features most plugins paywall or ship broken.

Drop-in Tel field

No new widget. Just toggle Country Code → Show on any Tel field and the dropdown, flag and formatting appear.

CORE

Auto-localised errors

Validation strings are translatable via WPML, Polylang, Loco Translate, or a .po/.mo file you drop in /languages/.

I18N

Cache-plugin safe flags

Inline per-country SVGs. WP-Rocket Remove-Unused-CSS and LiteSpeed minifier can't strip them, so every flag stays itself.

PERFORMANCE

No duplicate submissions

We never call handleSubmit or setTimeout. The input stays in E.164 and Elementor's native submit handler runs untouched.

RELIABILITY

Safe pre-fill

If the field is pre-populated with an E.164 value from cookie, autofill or URL param, we never duplicate the dial code.

COMPAT

Auto-detect visitor country

Uses the browser's navigator.language — no external IP lookup, no GDPR surface, no latency on render.

UX

intl-tel-input v27.1.2

Latest upstream library, bundled and licence-clean. No CDN fetch, no build step, no surprises in production.

BUNDLED

Multi-step compatible

Works seamlessly inside Elementor's multi-step forms. Step navigation and validation flow through unchanged.

MULTI-STEP

Server-side validation

Hooks elementor_pro/forms/validation/tel to enforce digit count and length bounds before the submission is stored.

SERVER-SIDE
Setup

Four steps, no configuration file.

01

Install & activate

Upload via Plugins → Add New, or drop the zip into wp-content/plugins/. Activate.

02

Open any Form widget

Edit a page in Elementor, drop the Form widget or open an existing one.

03

Add a Tel field

Add a Tel field to the form. No special widget — just the built-in type.

04

Toggle Country Code

In the field settings, flip Country Code → Show. That's it. Publish.

For developers

Filters, hooks, and no JavaScript magic.

Every string, every validation rule, and every country list is filterable. The JS is a thin shim over intl-tel-input — no monkey-patching of Elementor internals.

pfcc/error_messagesOverride any validation string, per-locale.
pfcc/default_countryOverride the default country per field, at render time.
pfcc/preferred_countriesReorder the top of the dropdown. Accepts array or CSV.
pfcc/only_countries · pfcc/exclude_countriesWhitelist or blacklist country lists dynamically.
pfcc/localeOverride the resolved country-list locale.
pfcc/validation_min_digits · pfcc/validation_max_digits · pfcc/validation_regexTighten or relax the server-side digit + shape check.
elementor_pro/forms/validation/telElementor's native hook, where our server-side guard runs. Add your own.
functions.php
// Translate a single validation error message
add_filter( 'pfcc/error_messages', function( $msgs ) {
  $msgs[2] = 'Zu kurz.';
  return $msgs;
} );

// Bias the country list toward EU customers
add_filter( 'pfcc/preferred_countries', function( $list, $item ) {
  return [ 'de', 'fr', 'es', 'it', 'nl' ];
}, 10, 2 );

// Override the auto-detected default country per field
add_filter( 'pfcc/default_country', function( $iso, $item ) {
  return is_user_logged_in() ? 'gb' : $iso;
}, 10, 2 );

// Tighten the server-side digit-count bounds
add_filter( 'pfcc/validation_min_digits', fn() => 7 );
add_filter( 'pfcc/validation_max_digits', fn() => 14 );
FAQ

Questions, answered.

Does this work without Elementor Pro?
No. The Form widget is an Elementor Pro feature. Free Elementor has no form, so there is nothing for this plugin to enhance.
Does it work with WPML and Polylang?
Yes. The country-list locale is resolved from WPML's ICL_LANGUAGE_CODE or Polylang's pll_current_language() when available. Validation error strings are registered with both WPML String Translation and Polylang's string registry so they appear in their respective translation UIs.
What value gets submitted?
The full E.164 number — e.g. +919876543210. The input is synced whenever you leave the field, change country, or press submit (including in capture phase on pointerdown/touchstart against the submit button), so Elementor always receives the value in international format.
Does it make external HTTP calls?
No. The country list, flags, and validation library are all bundled. Auto-detect uses the browser's navigator.language — no IP lookup, no third-party API.
Can I use multiple Tel fields on one page?
Yes. Each field is initialised independently, with its own country selection, pre-fill and validation state.
Does it work with Elementor Popups?
Yes. The dropdown z-index is tuned to sit above popup backdrops and stays clickable inside modal overlays.
Can I localise the country names themselves?
Error messages: yes, automatically. Country names: English by default in 1.0. You can provide an i18n object at window.intlTelInputI18n_PFCC via a custom snippet. Bundled i18n packs are planned for 1.1.
Ready to ship

Drop it on your form.
Forget it's there.

Free on WordPress.org. Installed in under two minutes. No premium version, no upsells.

Download FreeSupport ForumGPLv2 · 0 TRACKERS · 0 ADS