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 — all free, forever.

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, every locale resolution is filterable. The JS is a thin shim over intl-tel-input — no monkey-patching Elementor internals.

pfcc/error_messagesOverride any validation string, per-locale.
pfcc/preferred_countriesFilter the preferred-country list at render time.
pfcc/default_countryOverride auto-detected default country.
elementor_pro/forms/validation/telServer-side digit + length guard runs here.
functions.php
// Translate a single error message
add_filter('pfcc/error_messages', function( $msgs ) {
  $msgs[2] = 'Zu kurz.';
  return $msgs;
});

// Bias the list toward EU customers
add_filter('pfcc/preferred_countries', fn() => [
  'DE', 'FR', 'ES', 'IT', 'NL'
]);

// Tighten server-side validation
add_action('elementor_pro/forms/validation/tel',
  function( $field, $record, $ajax ) {
    if ( strlen( $field['value'] ) < 10 ) {
      $ajax->add_error( $field['id'], 'Too short' );
    }
  }, 10, 3
);
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 kept in sync on every keystroke and just before submit, so Elementor 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 forever on WordPress.org. Installed in under two minutes. No premium version, no upsells.

Download FreeMore Pluginry ProductsGPLv2 · 0 TRACKERS · 0 ADS