=== Verified.net Email & Phone Validation ===
Contributors: verifiednet
Tags: email validation, phone validation, disposable email, contact form 7, spam
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Stop fake, disposable and mistyped email addresses and invalid phone numbers on Contact Form 7, WPForms, Gravity Forms and WordPress registration.

== Description ==

Verified.net checks email addresses and phone numbers the moment a form is submitted, and stops the ones that can't be real before they reach your inbox, CRM or user list.

**What it catches**

* Disposable and throwaway email addresses (mailinator-style inboxes)
* Domains with no mail server, and mailboxes that don't exist
* Mistyped addresses, with a "Did you mean …?" suggestion (gmial.com → gmail.com)
* Invalid, unassigned and high-risk phone numbers, VoIP numbers and numbers reported for spam calls

**Works with**

* Contact Form 7 (email and tel fields)
* WPForms (email and phone fields)
* Gravity Forms (email and phone fields)
* The WordPress registration form (wp-login.php?action=register)

**You decide what happens**

Every check returns one of three recommendations: *accept*, *review* or *reject*. By default, *reject* blocks the submission with a friendly message and *review* (for example a role address such as info@, or a catch-all domain) is let through. Both are configurable, and so are the error messages.

**Safe by design**

* If the Verified.net service can't be reached, is out of credits or times out (5 seconds), the submission goes through unchecked. Your forms never break because of us.
* Each value is checked once and the answer is cached for 24 hours, so a visitor correcting a mistake doesn't cost you extra credits.
* Submitted values are never logged or stored by the plugin. Cache entries are keyed by a hash and only hold the recommendation.

**Pricing**

You need a Verified.net account and an API key. New accounts include free credits; each email or phone check uses 1 credit. See [pricing](https://verified.net/pricing).

== External services ==

This plugin connects to the Verified.net API (https://api.verified.net), operated by Verified.net, to check email addresses and phone numbers. Nothing is sent until you enter an API key.

* **What is sent and when:** when a visitor submits a supported form, the email address and/or phone number entered in that form (and your default phone country) is sent to `https://api.verified.net/v1/email` or `https://api.verified.net/v1/phone`, together with your API key. No other form fields, and no visitor IP address, are sent. When you click "Test connection" on the settings page, your API key is sent to `https://api.verified.net/v1/account` to read your credit balance.
* **Why:** to tell whether the address or number is valid and safe to accept.
* Terms of service: https://verified.net/terms
* Privacy policy: https://verified.net/privacy

== Installation ==

1. Install the plugin from the Plugins screen (search for "Verified.net") or upload the zip, then activate it.
2. Sign up at https://app.verified.net/signup and create an API key on the API keys page.
3. Go to **Settings → Verified.net**, paste the key and save. Click **Test connection** to see your credit balance.
4. Choose which checks to run, which forms to protect and what to do on *reject* and *review*.

That's it: no changes to your forms are needed.

== Frequently Asked Questions ==

= What happens if the API is down or I run out of credits? =

Submissions go through unchecked (fail open), and a notice on your dashboard tells you what happened. Calls are paused for a minute after a network error, and for five minutes after a key or credit problem, so visitors never wait on repeated timeouts.

= Does it slow down my forms? =

A check usually takes well under a second. Values already checked in the last 24 hours are answered from the cache instantly.

= Which fields are checked? =

Email and phone/tel fields in the supported form plugins, and the email address on the WordPress registration form. Empty optional fields are skipped. Fields that already failed the form plugin's own validation are not sent.

= Can I change the behaviour in code? =

Yes. The `verified_net_result` filter receives the API answer (or null) and the field type before it is acted on, and `verified_net_error_message` lets you change the message. `verified_net_timeout` sets the request timeout in seconds.

= Is personal data stored? =

The plugin stores no submitted values. Verified.net keeps lookup records for 12 months as described in its privacy policy; mention the check in your own privacy policy.

== Screenshots ==

1. Settings → Verified.net after a successful connection test: choose the checks, the forms and what happens on "reject" and "review".
2. A Contact Form 7 form refusing a disposable email address.
3. A mistyped address gets a "Did you mean …?" suggestion.

== Changelog ==

= 1.0.0 =
* First release: Contact Form 7, WPForms, Gravity Forms and WordPress registration.

== Upgrade Notice ==

= 1.0.0 =
First release.
