=== LeadShield ===
Contributors: leadshieldai
Tags: spam protection, contact form spam, bot protection, form validation, anti-spam
Requires at least: 5.6
Tested up to: 7.1
Requires PHP: 7.2
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Blocks fake, bot and AI-generated form submissions in real time — before they reach your inbox or CRM. No CAPTCHA. Free plan available.

== Description ==

Your contact form is filling up with junk: throwaway addresses, gibberish names, bot submissions, and — increasingly — enquiries written by AI that read exactly like a real person. Your sales time goes on chasing ghosts, and if you run Google or Meta ads, every junk conversion teaches the algorithm to find you more of the same.

LeadShield screens every submission in real time and blocks the fakes before they land.

**No CAPTCHA.** Real visitors never see a puzzle, never tick a box, never identify a fire hydrant. Detection is invisible and runs on the submission itself.

= What it checks =

* **Email** — syntax, live mail-server (MX) lookup, a disposable/throwaway domain blocklist refreshed weekly, and typo rescue (someone typing `gmial.com` is offered `gmail.com` instead of being lost)
* **Behaviour** — a hidden honeypot field, how fast the form was completed, and whether a human actually typed, moved a mouse or touched the screen (mobile taps and browser autofill are recognised as human, never penalised)
* **IP reputation** — known abusive addresses, via live threat data
* **Phone** — format and region validity when a phone field is present
* **Device fingerprinting** *(Pro and Agency — included in your first 14 days)* — catches the same device submitting over and over. Hashed in the visitor's browser; no third-party tracking scripts are loaded on your site
* **AI content analysis** *(Pro and Agency — included in your first 14 days)* — reads the whole enquiry in context to spot machine-generated spam text and fabricated identities

Every submission gets a 0–100 risk score and a plain-English reason, so you always know *why* something was blocked.

= Fail-open by design =

If LeadShield is ever slow or unreachable, your forms submit normally. An outage on our side can never cost you a real lead. This is a deliberate design choice: we would rather let one junk lead through than lose you a customer.

= Works with your existing forms =

One setting, no per-form configuration. Automatically protects:

* Contact Form 7
* WPForms
* Gravity Forms
* Elementor Forms
* Ninja Forms
* Formidable Forms
* WooCommerce registration and contact forms
* Any other form on the page, including ones added dynamically by page builders

= Pricing =

* **Free** — 100 validations/month, free forever, no credit card
* **Pro** $99/mo — 10,000/month, plus AI analysis, device fingerprinting, webhooks, CSV export and Google Ads / Meta exclusion exports
* **Agency** $249/mo — unlimited, one account for all your clients' sites, plus tunable risk thresholds and configurable data retention

Every account starts with 14 days of Pro — no card — and then stays on the Free plan unless you upgrade.

= Privacy =

The plugin sets no cookies and no browser storage on your visitors, and loads no third-party tracking. Screened lead data is deleted automatically after 90 days by default (configurable, down to zero, on the Agency plan). Exactly what is sent, and when, is listed under External services below.

== Installation ==

1. Install and activate the plugin.
2. Create a free account at [leadshield.ai/signup](https://leadshield.ai/signup) — no credit card required.
3. Copy your API key from your LeadShield dashboard (the "API key" card).
4. In WordPress, go to **Settings → LeadShield**, paste the key, and save.
5. Test it: submit one of your own forms using `test@mailinator.com`. It should be blocked, and appear in your dashboard within seconds with the reason shown.

== External services ==

This plugin connects your forms to the LeadShield.ai service, which screens each submission for fake, bot and spam leads. It does nothing until you save a LeadShield API key in Settings → LeadShield.

Once a key is saved:

* Front-end pages load the LeadShield script from https://leadshield.ai/js/shield.js. As with any externally hosted script, the visitor's browser connects to leadshield.ai to fetch it, so the service receives the visitor's IP address and browser user agent.
* When a visitor submits a protected form, the script sends the form's email, name, company, phone and message fields, the page address, how long the form took to fill in, whether keys, mouse or touch were used, a one-way device hash and any ad-click IDs in the page address (such as gclid or fbclid) to https://leadshield.ai/api/validate, which replies with a verdict. The visitor's IP address and user agent are part of that request.
* Nothing is sent from a form until it is submitted.

The service is provided by LeadShield.ai: [terms of service](https://leadshield.ai/terms), [privacy policy](https://leadshield.ai/privacy).

== Frequently Asked Questions ==

= Will it block real customers? =

Hard blocks are reserved for high-confidence junk (score 70+). Borderline submissions are marked "suspicious", and you choose whether those are blocked — there is a setting for exactly that. Every verdict carries a plain-English reason you can audit in your dashboard, so nothing is a black box.

= Do my visitors have to solve a CAPTCHA? =

No. Detection happens on the submission itself. Genuine visitors notice nothing at all.

= Does it slow down my site? =

The script is small and loads asynchronously, so it never blocks page rendering. Validation typically completes in well under a second, and there is a hard 5-second timeout after which the form simply submits.

= Does it work with my form plugin? =

Almost certainly. It attaches to every form on the page rather than integrating with one specific plugin, and it watches for forms added later by page builders and single-page themes.

= Can I protect only some forms? =

Yes — enter a CSS selector in the settings. This is useful on WooCommerce, where you may want to protect registration and contact forms but leave checkout completely untouched.

= Is there really a free plan? =

Yes. Every account starts with 14 days of Pro, then stays on the Free plan — 100 validations a month, for as long as you want it, no card. There is also a free no-signup audit at [leadshield.ai/audit](https://leadshield.ai/audit) where you can upload a CSV of leads you already have and see how many are junk before installing anything.

= Does it show a "Protected by LeadShield" badge on my site? =

Only if you switch it on in Settings → LeadShield. It is off by default.

= What happens if I hit my monthly limit? =

Submissions pass through unvalidated until the limit resets on the 1st — your forms keep working normally. You are emailed at 80% and 100% so it never happens as a surprise.

== Screenshots ==

1. The settings screen — paste your API key and you are protected.
2. The dashboard: what was blocked, and the plain-English reason for each verdict.
3. A blocked submission showing its risk score and reasons.

== Changelog ==

= 1.0.0 =
* Initial release: real-time form screening, settings screen with API key, optional credit badge (off by default), suspicious-blocking toggle and optional form selector.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
