=== Lavender Form ===
Contributors: lavenex
Tags: form, contact form, form builder, drag and drop, custom forms
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 0.1.15
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A fast, WPForms-style drag-and-drop form builder with real email notifications, entry management, and one-click page builder embedding.

== Description ==

Lavender Form is a drag-and-drop form builder for WordPress. Build a form visually, embed it anywhere with a shortcode or your favorite page builder, and see every submission land in your dashboard -- no coding required.

**Build forms visually**

A real drag-and-drop editor: drag fields onto your form, reorder them, and configure each one's label, name, and required status from a live settings panel. Nine field types are included free -- Single Line Text, Email, Phone, Number, Paragraph Text, Dropdown, Checkboxes, Multiple Choice, and Hidden -- with more advanced field types (Signature, Date/Time, Address, Number Slider, File Upload, and more) visible in the builder as a preview of what Lavender Form Pro unlocks.

**Real email notifications**

Modeled on the notification pattern millions of WordPress users already know from Contact Form 7: an admin notification and an optional auto-reply to whoever filled out the form, both using `{tag}` placeholders (`{full_name}`, `{email}`, `{all_fields}`, and any of your own field names) to pull submitted values into the subject and message. Insert a tag by dragging it straight into the field, or click it -- no memorizing tag syntax.

**Embed anywhere**

Every form gets a `[lavender_form id="123"]` shortcode. If you build pages with Elementor, Divi, Beaver Builder, or WPBakery, Lavender Form adds a native widget/module/element to each one -- pick your form from a dropdown, no shortcodes needed. Every embed method renders through the exact same code path, so a form looks and behaves identically no matter how it's placed.

**Track your submissions**

The Entries screen shows every submission in a clean inbox-style list -- unread ones stand out, click one to see every field that was submitted, mark it read or unread, or delete it. Two built-in charts show submissions over time and a breakdown of answers for your Dropdown/Checkboxes/Multiple Choice fields, so you can see response patterns at a glance without exporting anything.

**Accessible by default**

Every rendered form uses proper labels (including `<fieldset>`/`<legend>` grouping for Multiple Choice and Checkboxes fields), announces validation errors to screen readers, and moves keyboard focus to the first invalid field on a failed submission. The admin builder is fully keyboard-operable, not just mouse/drag-driven.

= Free vs. Pro =

Lavender Form's core -- everything described above -- is free, forever, on WordPress.org, including unlimited entry storage with no retention window. **Lavender Form Pro** (sold separately, not on WordPress.org) adds advanced charts with date-range filtering and period comparison, CSV/PDF export, premium field types (Signature, Date & Time picker, Address autocomplete, Number Slider, File Upload, Payment/UPI QR), conditional logic, and marketing integrations. Every Pro field type is visible in the free builder with a clearly-marked "Pro" badge -- nothing is hidden, and nothing free ever stops working if you don't upgrade.

== Installation ==

1. Upload the `lavender-form` folder to `/wp-content/plugins/`, or install directly from the WordPress.org plugin directory.
2. Activate Lavender Form through the "Plugins" screen in WordPress.
3. Go to **Lavender Form → Add New Form** in your admin sidebar to build your first form.
4. Copy the shortcode shown at the top of the builder, or use the Elementor/Divi/Beaver Builder/WPBakery widget if you use one of those page builders.
5. (Optional) Install **Lavender Form Pro** for premium fields, advanced charts, export, and more.

== Frequently Asked Questions ==

= Do I need Lavender Form Pro to use this plugin? =

No. Every feature described above works fully in the free version. Pro only adds the items listed in "Free vs. Pro."

= How many form submissions can I store? =

There's no limit -- every submission to every form is kept indefinitely in the free version.

= Which page builders does this work with? =

Elementor, Divi, Beaver Builder, and WPBakery each get a native widget/module/element. Every other page builder and every classic theme can use the `[lavender_form id="123"]` shortcode, which works anywhere shortcodes are supported.

= Is spam protection included? =

A honeypot field and per-IP rate limiting are built in and active by default. reCAPTCHA/hCaptcha support requires your own site key from Google or hCaptcha and is planned for a future release.

= Can I get email notifications when someone submits my form? =

Yes -- every form has a built-in "Notify me" notification (to your admin email by default, customizable) and an optional auto-reply to the person who submitted the form.

= I'm not receiving notification emails at all -- what's wrong? =

By far the most common cause is not the plugin itself but how your WordPress host sends mail. WordPress' built-in `wp_mail()` function falls back to PHP's raw `mail()` when no SMTP plugin is configured, and a lot of hosts either don't wire that up to a real outgoing mail server at all, or send it in a way that Gmail/Outlook flag as spam or reject outright (no SPF/DKIM alignment with your sending domain). If notifications aren't arriving, first check your Settings -> Notifications "Send to" address is correct and current, then install a free SMTP plugin (such as WP Mail SMTP) and connect it to a real mail provider (your own Gmail/Google Workspace account, or a transactional service like SendGrid, Mailgun, or Brevo) -- that's the standard, reliable fix on any WordPress site, not something specific to Lavender Form.

= Is this plugin accessible? =

Rendered forms use semantic labels and fieldsets, announce errors to screen readers, and support full keyboard navigation. The admin form builder is also fully keyboard-operable. See the plugin's changelog for ongoing accessibility work.

== Screenshots ==

1. The drag-and-drop form builder, with categorized Standard and Fancy Fields.
2. Field Options panel -- configure any field's label, name, and required status.
3. Email notifications with drag-and-drop Smart Tags.
4. The Entries screen: submissions list, detail view, and built-in charts.
5. A Lavender Form embedded on the front end of a site.

== Changelog ==

= 0.1.15 =
* Removed the free version's 10-entry/7-day cap on stored form submissions -- every submission is now kept indefinitely, with no restriction tied to Lavender Form Pro. Also removed the now-unneeded load_plugin_textdomain() call, since WordPress.org loads this plugin's translations automatically.

= 0.1.14 =
* A Signature, Drawing/Sketch Canvas, or Photo Capture field now shows as an actual image in notification emails, instead of the "[Large value omitted...]" placeholder text -- the image is attached as a real inline (Content-ID) attachment, since most inboxes (Gmail included) strip a data: URI placed directly in an `<img>` tag. Larger files (over ~2MB decoded) still fall back to the placeholder rather than bloating the email.

= 0.1.13 =
* Notification emails now render the submitted fields as a real table (label / value rows) instead of a plain text dump, for a genuinely clearer, more attractive layout in the inbox.
* If you're not receiving notification emails at all, that's almost always a hosting/mail-transport issue (WordPress' default `mail()` sending), not something the plugin's own code controls -- see the FAQ entry "I'm not receiving notification emails at all" for the fix (an SMTP plugin).

= 0.1.12 =
* Notification emails (the admin "Notify me" alert and the optional auto-reply) are now sent as clean, branded HTML instead of a raw plain-text dump -- a readable title bar, padded body, and light footer instead of a wall of "Label: value" lines.
* A Signature, Drawing/Sketch Canvas, or File Upload field's value (a long `data:` URI) is no longer dumped into the email verbatim -- it's replaced with a short note pointing to the Entries screen, where the full value is still there untouched.
* Fixed: an unused {tag} in a notification's subject or message (for example {full_name} on a form with no field literally named full_name) no longer shows up as literal text in the email a customer receives -- it's silently removed instead.

= 0.1.11 =
* Builder fix: the "Add Fields" panel and the live form preview now scroll independently of each other and of the page. Previously, scrolling down through the (now 77-type) field catalog carried the form preview off screen with it, making it hard to browse fields and edit the form at the same time.

= 0.1.10 =
* The final 22 Pro catalog entries are now real -- Age/DOB Verification, Two-Factor OTP (email-based), Email Verification, Geolocation Auto-Detect, Map Location Picker, Photo Capture, Video/Audio Recording, QR/Barcode Scanner, Voice-to-Text, Drawing/Sketch Canvas, Image Annotation, Appointment Booking, Delivery/Pickup Time Slot, Fundraising Progress Bar, Seat/Room Selection Map, Product/Item Selector, Save & Resume Later, and Multi-Signer Approval Chain, plus CAPTCHA, ID Document Scan + OCR, Autocomplete Lookup, and Resume/CV Parser. The Pro field catalog no longer has any "Soon" entries.
* The 4 field types that need a third-party account (CAPTCHA, ID Document Scan + OCR, Autocomplete Lookup, Resume/CV Parser) now have their own "Connect API" setting right inside that field's own options in the Builder, so a site owner can paste their own key without a separate settings screen. Until a key is entered, only the site owner sees a "Required to Connect API" notice in that field's place -- visitors see the rest of the form normally.
* Added a new database helper (`Lavender_Form_DB::get_all_field_values()`) so Appointment Booking, Delivery/Pickup Time Slot, and Seat/Room Selection Map can check for already-taken slots/seats across a form's full submission history, not just the free tier's usual 10-entry/7-day window.

= 0.1.9 =
* 18 more Pro field types are now real instead of "Soon" placeholders: Image Choice, Icon Choice, Ranking (drag to rank), Range Slider (min-max), Tags/Chips, Age Calculator, Auto Reference Number, Coupon/Voucher Generator, International Phone, Time Zone Picker, Country/State/City, Testimonial Block, Reference/Contact Card, Recurring Donation Frequency, Quiz/Auto-Grading, Calculation/Formula, Availability Grid, and Order Summary/Running Total. Every one works with no third-party API key or account -- each follows the same 30-day free trial then license model as every other Pro field.
* Remaining catalog entries (CAPTCHA, Two-Factor OTP, ID Document Scan + OCR, Email Verification, Map Location Picker, and a few others) still need either a real third-party API key/account or a larger multi-step workflow -- tracked as the next round rather than faked.

= 0.1.8 =
* 13 more Pro field types are now real instead of "Soon" placeholders: Password, Rich Text, Rating, Layout (multi-column), Repeater ("+ Add another"), Page Break (multi-step forms), Entry Preview (a review step before final submit), Terms & Conditions (Scroll to Accept), Likert/Survey Matrix, Net Promoter Score, Opinion Scale, Emoji Reaction, and Unique-Value Validator (rejects a duplicate value already used on that form). Each follows the same 30-day free trial then license model as every other Pro field.
* A further ~30 catalog entries (CAPTCHA, Two-Factor OTP, ID Document Scan + OCR, Email Verification, and the rest) deliberately stay "Soon" -- they need a real third-party API key or a live email round-trip to work honestly, which isn't wired up yet.

= 0.1.7 =
* The File Upload field is now real: visitors can attach a file (default allowed types: JPG, PNG, GIF, PDF, DOC, DOCX, XLS, XLSX, CSV, TXT; configurable per field, with a few executable types always blocked), and it follows the same 30-day free trial then license model as every other Pro field type. Previously it was a "Soon" placeholder in the Builder with no working renderer.

= 0.1.6 =
* Fixed: the five newest Pro field types (Percentage, Currency Amount, Language Preference, Marketing Opt-in, GDPR/Consent Agreement) now follow the same 30-day free trial then license model as every other Pro field type (Signature, Date/Time, Address, Number Slider, Payment/UPI QR) -- previously they worked unconditionally with no trial or license check at all.

= 0.1.5 =
* Pro field catalog expanded to ~50 new field types across 8 categories (Verification & Trust, Choice & Input UX, Calculated & Derived, Location & Contact, Media & Capture, Composite Blocks, Scheduling & Commerce, Compliance & Workflow, Education) -- visible in the Builder's Fields panel.
* Five of the new Pro fields are fully working today: Percentage, Currency Amount, Language Preference, Marketing Opt-in, and GDPR/Consent Agreement. The rest show a "Soon" badge until their renderer ships.
* Builder redesign: a search box for the (now much larger) field catalog, categorized collapsible Pro sections with counts, and a visual refresh (hover lift, category badges) to keep the palette easy to scan.

= 0.1.4 =
* New free fields: Website / URL (validated as a proper URL on submit), HTML, Content, and Section Divider.
* HTML and Content field bodies are sanitized with wp_kses_post() on save (same filter a normal post's content goes through).

= 0.1.3 =
* Fixed the Pro trial countdown banner (Builder and front end) showing from day 1 of the 30-day trial -- it now only appears in the trial's final week, once 7 or fewer days remain.
* Fixed the Plugin URI header and readme "Tested up to" / "Stable tag" values ahead of the WordPress.org plugin review submission.
* Cleaned up several WordPress Coding Standards warnings (SQL preparation, variable naming) flagged by the Plugin Check tool.

= 0.1.2 =
* Fixed a front-end "Security check failed" error on some hosts: the submit nonce is now verified via the standard `X-WP-Nonce` header instead of a custom POST field.
* Verified live on a real WordPress install: Elementor widget embedding, all 6 free field types with real-and required-field validation, and Lavender Form Pro's trial banner and Signature field submission.

= 0.1.0 =
* Initial release: drag-and-drop builder, 9 free field types, email notifications, Elementor/Divi/Beaver Builder/WPBakery integrations, Entries screen with charts, accessibility pass, translation-ready.

== Upgrade Notice ==

= 0.1.15 =
The free version no longer caps stored submissions at 10 entries/7 days -- every submission is now kept indefinitely. Recommended for everyone.

= 0.1.14 =
Signature/Drawing/Photo Capture fields now show as real images in notification emails (attached inline) instead of a text placeholder -- fixes signatures not displaying properly in the received email.

= 0.1.13 =
Notification emails now show submitted fields in a real table instead of plain text lines. If emails aren't arriving at all, see the new FAQ entry -- it's almost always a hosting/SMTP issue, fixed with a free SMTP plugin.

= 0.1.12 =
Notification emails now go out as clean HTML instead of raw plain text, no longer dump a Signature/File Upload field's raw data into the message, and no longer show a literal unresolved {tag} to the recipient. Recommended for everyone.

= 0.1.11 =
Builder UX fix: the field catalog and form preview now scroll independently instead of the whole page scrolling together.

= 0.1.10 =
Every remaining "Soon" Pro field is now real -- the catalog has zero placeholders left. 4 of them (CAPTCHA, ID Document Scan + OCR, Autocomplete Lookup, Resume/CV Parser) need your own third-party API key, entered per-field in the Builder.

= 0.1.9 =
18 more Pro field types are now real instead of "Soon" placeholders -- Image Choice, Ranking, Range Slider, Tags, Age Calculator, Coupon Generator, International Phone, Time Zone Picker, Country/State/City, Quiz, Calculation, and more.

= 0.1.8 =
13 more Pro field types are now real (Password, Rich Text, Rating, Layout, Repeater, Page Break, Entry Preview, Terms & Conditions Scroll-to-Accept, Likert/Survey Matrix, Net Promoter Score, Opinion Scale, Emoji Reaction, Unique-Value Validator) instead of "Soon" placeholders.

= 0.1.3 =
Trial banner timing fix and pre-submission cleanup. Recommended for everyone.

= 0.1.2 =
Fixes a nonce-verification bug that could show "Security check failed" on submit for some hosts. Recommended for everyone.

= 0.1.0 =
Initial release.
