=== GriffinForms – Contact Form and Form Builder ===
Contributors: griffinforms
Tags: form builder, contact form, registration form, file upload, conditional logic
Requires at least: 6.6
Tested up to: 7.0
Requires PHP: 8.2
Stable tag: 3.2.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Drag and drop WordPress form builder plugin. Create contact forms, multi-step forms, user registration forms, file upload forms, and payment forms.

== Description ==

GriffinForms is a free drag-and-drop WordPress form builder plugin for contact forms, multi-step forms, user registration forms, file upload forms, and payment forms. All core features are free — no paywalls, no upgrade required.

It handles a simple contact form as easily as a multi-step application. Build with a visual editor, store all submissions in your WordPress database, and layer in conditional logic, spam protection, MailChimp integration, and AI form building with Griffin Assist — all included in the free core.

= GriffinForms Pro =
GriffinForms Pro is an optional paid add-on. It adds Square payments, Google Sheets sync, Klaviyo marketing integration, premium field types (Signature, Rating, Rich Text, Image Selection, Likert Scale), submission export (CSV, JSON, Excel), and frontend submission editing. The core plugin remains free and fully functional without it.

= Why GriffinForms? =
- **Free core, no feature walls on the essentials**: multi-step forms, user registration, file uploads, Stripe and PayPal payments, conditional logic, spam protection, and email notifications are all included in the free plugin — no licence required.
- **Multi-step forms**: break longer forms into pages with per-step validation so users can complete structured flows without feeling overwhelmed. You can also add an optional progress bar — stepper or tabs style — so users always know where they are in the process.
- **WordPress user registration**: create WordPress users from form submissions with immediate, pending-activation, or manual-review workflows, multiple registration workflows per form, role assignment, duplicate-account handling, and account-action visibility in the admin area.
- **File uploads**: support multi-file uploads per field with controls for file types, size limits, file counts, image constraints, and storage behavior.
- **Stripe and PayPal payments**: build WordPress payment forms with product-style workflows, product images, a cart-style review step, hosted checkout options, and resume links for pending payments.
- **MailChimp integration**: subscribe form submitters to MailChimp audiences as part of the submission flow — map form fields to MailChimp merge tags, assign tags, and control consent behavior per form.
- **WordPress conditional logic**: go beyond simple show and hide with rules that can change labels, values, headings, success messages, redirects, and submit behavior — across fields, rows, and pages.
- **Email and notifications**: send notifications and autoresponders through WordPress mail, Custom SMTP, SendGrid, or Mailgun, with reusable messages and merge variables.
- **Spam protection**: choose from reCAPTCHA, hCaptcha, Cloudflare Turnstile, or honeypot, and combine them with native rate limiting on submissions and file uploads for layered protection.
- **Builder checks system**: a live status bar in the form builder surfaces errors, warnings, and info counts as you edit — covering spam config, email setup, compliance, registration risks, and layout issues before you publish.
- **Compliance profiles**: per-form GDPR and HIPAA-ready profiles with submission hashing, layout snapshots, configurable retention, and WordPress personal data export and erase integration.
- **Templates and theming**: turn forms into reusable templates, then style them with built-in themes or your own custom theme variations.
- **Submission clarity in WordPress**: review entries in a richer admin view with event timelines, per-submission audit logs, metadata, and settings history when troubleshooting production forms.
- **Switching from another plugin**: if you are already running Contact Form 7, WPForms Lite, Ninja Forms, or Formidable Forms, GriffinForms includes a guided migration tool that imports your existing forms and submissions so you can move without starting over.

= Drag-and-drop form builder =
GriffinForms treats layout as a core part of form building. The drag-and-drop builder uses pages, rows, columns, sidebar controls, and reusable fields to make complex forms easier to shape and maintain. Then you can layer in conditions, uploads, notifications, and payments where needed. This makes longer forms easier to manage and easier for users to complete.

Reusable fields also help solve a common admin problem: teams should not need to recreate the same Name, Email, Phone, or Address field across every new form. Common fields can be managed from one place, which helps keep repeated workflows faster to build and more consistent over time.

= File uploads with practical control =
File uploads are not limited to a basic attachment field. GriffinForms supports multi-file uploads per field and is designed for workflows where uploads matter, such as applications, support requests, and document collection. For example, an application form can collect resumes, ID documents, certificates, and supporting images in one submission instead of forcing users to send files separately later. You can control allowed file types, per-file and total upload size limits, max file counts, image-specific constraints, and storage behavior, then manage uploaded files from WordPress.

= Payment workflows with Stripe and PayPal =
If you enable Stripe or PayPal, GriffinForms can handle payment collection inside the form flow. This is useful for donations, simple product or service requests, paid applications, and other workflows where payment is part of submission instead of a separate checkout. GriffinForms supports a fuller review-and-pay pattern with product-style selections, product images, and cart-style summaries. Stripe can stay on-page for card collection, while PayPal uses its hosted popup approval flow. For pending payments, resume links can bring users back so they can continue from where they left off.

Payment workflows can also gate user registration — combining payment collection with WordPress account creation in a single form makes it straightforward to build paid membership signups, paid course registrations, and other workflows where account access should follow a successful payment.

= Strong conditional logic layer =
Conditional logic in GriffinForms goes beyond a simple show-or-hide toggle. You can use field, row, and form-level rules to change labels and values, control headings and visibility, swap success messages, trigger redirects, and adjust submit-button behavior.

Conditions also go beyond basic text matching. GriffinForms supports checks across field values, counts, password strength, browser time, address parts, and payment-specific conditions such as product, gateway, totals, and counts. That makes it useful for smarter routing, cleaner payment flows, and forms that react as the submission takes shape.

For example, you can change the success message or redirect users to a different destination based on what they selected in the form.

= Themable forms with deeper styling control =
Forms should not look disconnected from the rest of your site. GriffinForms includes built-in themes, but the theme system goes further than picking a preset. You can create new themes from scratch or modify existing ones with control over typography, layout, inputs, buttons, and states such as hover, focus, and active. Dark themes also look especially strong in GriffinForms, which helps when you want forms to feel more polished and deliberate instead of settling for one generic form look.

= Submissions, logs, and admin visibility =
Submissions are stored in your WordPress database, but the admin experience goes further than a simple entry list. GriffinForms includes a richer submission view with metadata, payment context where applicable, submission-specific logs, and event timelines so you can follow what happened to a submission and where it changed.

Native logging adds another layer of visibility for production sites. Timeline-style logs, searchable categories, job visibility, retention settings, and settings history make it easier to troubleshoot failed steps, trace changes, and understand what happened over time.

GriffinForms also supports partial submissions, which means incomplete multi-step submissions can still remain visible in the admin area when that workflow matters.

= WordPress account registration workflows =
GriffinForms includes a flexible user registration workflow for registration forms that need to create or manage WordPress users after submission. You can build a simple WordPress registration form for one account, or use an iterable email field for multi-user registration from a single form submission. GriffinForms lets you choose whether a registration form should use a mapped password or send the native WordPress password setup link, assign the WordPress user role for the account being created, and map optional profile data such as username, first name, last name, and profile image when the form collects it.

This user registration system is built for real workflows, not just one fixed registration form pattern. You can decide whether user registration happens immediately, waits for admin activation, or stays in manual review, and you can control how duplicate-account cases are handled. GriffinForms also gives registration forms stronger admin visibility through native logging, submission-side account activity, account-action follow-up, and builder checks that help catch missing mappings, risky password choices, and iterable registration-form edge cases before the form goes live.

Helpful docs:
- [Registration workflow modes](https://griffinforms.com/docs/user-docs/user-registrations/overview-and-workflow-modes.php)
- [Submission Accounts Accordion](https://griffinforms.com/docs/user-docs/user-registrations/submission-accounts-accordion.php)
- [Password strategies](https://griffinforms.com/docs/user-docs/user-registrations/password-strategies-and-password-setup.php)

= Spam protection and rate limiting =
GriffinForms supports multiple CAPTCHA providers, including reCAPTCHA, Cloudflare Turnstile, and hCaptcha. It also includes native rate limiting and backend anti-spam checks, so spam protection does not depend on a single layer. That protection applies across the submission flow, including workflows that use file uploads.

= Email delivery and notifications =
GriffinForms can send admin notifications and autoresponders through WordPress mail or configured delivery providers — Custom SMTP, SendGrid, or Mailgun — without requiring a separate SMTP plugin. Notifications are queued and processed in the background so form submissions are never blocked by email delivery latency.

Helpful docs:
- [Email settings](https://griffinforms.com/docs/user-docs/email-and-notifications/email-settings.php)
- [Managing messages](https://griffinforms.com/docs/user-docs/email-and-notifications/managing-messages.php)
- [Mail merge placeholders](https://griffinforms.com/docs/user-docs/email-and-notifications/mail-merge-placeholders.php)

= Griffin Assist — AI form building inside the builder =
Griffin Assist is GriffinForms' built-in AI form builder for WordPress. Describe the form you need using plain-English prompts, and Griffin Assist drafts the structure for you. From there you keep full control — drag, rearrange, and fine-tune using the same builder you already know.

This is not a separate AI tool that hands off a static export. Griffin Assist works inside your live draft, so changes appear immediately in the builder as you prompt them.

**Drafting a new form**: type a prompt in the Create Form modal and Griffin Assist generates a starting structure with pages, rows, and fields. The draft opens in the builder ready for you to refine. When you are happy with it, publish it to make it live. If you want to start over, discard it — your other forms are never affected.

**Editing an existing form**: open any form in AI draft mode using the AI Edit action. Griffin Assist targets only the elements you ask about, so editing a field label or adding a new page does not rebuild the whole form or disturb fields and logic you already configured.

**Chat Mode**: toggle Chat Mode on to ask questions, explore ideas, and get suggestions before committing to a change. Griffin Assist returns clickable action buttons so you can review a suggestion and apply it with one click. Structural suggestions such as adding a new section, page, or row appear alongside copy advice.

**Suggestion pills**: each element type in the builder has a set of context-aware suggestion pills — one-tap actions tailored to what is currently selected. Improving a field label, polishing a description, adding a file upload hint, or refining dropdown options all have their own targeted pills. Translation is also available as a one-tap action that rewrites all labels, descriptions, options, and button text into your target language.

Griffin Assist requires an active AI provider connection. You can connect OpenAI, Anthropic, Google Gemini, xAI Grok, or Mistral from the AI settings tab using your own API key. Griffin Assist also works with WordPress 7 AI Connector keys — if a provider is already configured site-wide through WordPress Connectors, Griffin Assist uses it automatically with no separate setup. A data-sharing consent step is required before Griffin Assist sends any form data to an external provider.

= Gutenberg and advanced workflows =
GriffinForms works with Gutenberg and also includes a stronger technical foundation for advanced evaluators, including a documented REST API surface, capability-aware access control, device management for protected companion routes, and webhook-ready architecture. Multi-step submissions use AJAX handling with server-side validation and anti-spam checks, which helps longer forms feel more responsive while still enforcing validation on the backend. Post-submission actions such as emails and other follow-up work can also be processed in the background, which helps more complex workflows stay smoother after a form is submitted.

These are not the first thing most users need, but they are there when the deployment calls for them — whether the form is a simple contact form or a complex multi-step workflow.

Helpful docs:
- [Embedding forms](https://griffinforms.com/docs/user-docs/building-forms/embedding-forms.php)
- [Multi-page forms](https://griffinforms.com/docs/user-docs/building-forms/multi-page-forms.php)
- [Conditional logic](https://griffinforms.com/docs/user-docs/conditional-logic/overview.php)

= Privacy-conscious by default =
Form submissions stay in WordPress by default. External services are only involved when you enable them, such as payments, CAPTCHA, or email delivery providers. See the External Services section below for details.

GriffinForms also includes per-form compliance profiles (Standard, GDPR, and HIPAA-ready) with submission hashing, layout snapshots, configurable retention policies, and WordPress personal data export and erase integration when those workflows matter.

= External Services =
GriffinForms can connect to these third-party services when enabled:
- **Google reCAPTCHA** (spam protection): [Terms](https://www.google.com/intl/en/policies/terms/) and [Privacy](https://www.google.com/intl/en/policies/privacy/)
- **Stripe** (payments): [Terms](https://stripe.com/legal) and [Privacy](https://stripe.com/privacy)
- **PayPal** (payments): [Terms](https://www.paypal.com/webapps/mpp/ua/useragreement-full) and [Privacy](https://www.paypal.com/webapps/mpp/ua/privacy-full)
- **Cloudflare Turnstile** (spam protection): [Terms](https://www.cloudflare.com/terms/) and [Privacy](https://www.cloudflare.com/privacypolicy/)
- **hCaptcha** (spam protection): [Terms](https://www.hcaptcha.com/terms) and [Privacy](https://www.hcaptcha.com/privacy)
- **SendGrid** (email delivery): [Terms](https://www.twilio.com/legal/tos) and [Privacy](https://www.twilio.com/legal/privacy)
- **Mailgun** (email delivery): [Terms](https://www.mailgun.com/legal/terms/) and [Privacy](https://www.mailgun.com/legal/privacy-policy/)
- **MailChimp** (audience sync): [Terms](https://mailchimp.com/legal/terms/) and [Privacy](https://mailchimp.com/legal/privacy/)
- **OpenAI** (AI form building, when configured): [Terms](https://openai.com/policies/terms-of-use) and [Privacy](https://openai.com/policies/privacy-policy)
- **Anthropic** (AI form building, when configured): [Terms](https://www.anthropic.com/legal) and [Privacy](https://www.anthropic.com/legal/privacy)
- **Google Gemini** (AI form building, when configured): [Terms](https://policies.google.com/terms) and [Privacy](https://policies.google.com/privacy)
- **xAI Grok** (AI form building, when configured): [Terms](https://x.ai/legal/terms-of-service) and [Privacy](https://x.ai/legal/privacy-policy)
- **Mistral** (AI form building, when configured): [Terms](https://mistral.ai/terms/) and [Privacy](https://mistral.ai/privacy/)

= Learn more =
- Documentation: [GriffinForms Docs](https://griffinforms.com/docs/)
- User docs: [GriffinForms User Docs](https://griffinforms.com/docs/user-docs/)
- Templates: [Form Templates](https://griffinforms.com/templates/)
- Releases: [Release Notes](https://griffinforms.com/releases/)
- Privacy: [Privacy Policy](https://griffinforms.com/privacy.php)

= Use-case guides =
- [WordPress user registration form](https://griffinforms.com/solutions/wordpress-user-registration-form.php)
- [WordPress multi-step form](https://griffinforms.com/solutions/wordpress-multi-step-form.php)
- [WordPress payment form](https://griffinforms.com/solutions/wordpress-payment-form.php)
- [WordPress file upload form](https://griffinforms.com/solutions/wordpress-file-upload-form.php)
- [WordPress conditional logic form](https://griffinforms.com/solutions/wordpress-conditional-logic-form.php)

== Installation ==

1. Upload the plugin to the `/wp-content/plugins/griffinforms-form-builder` directory or install it via the WordPress plugin screen.
2. Activate it through the **Plugins** screen.
3. Go to the **GriffinForms** menu in the admin sidebar to start building forms.

== Frequently Asked Questions ==

= Can I build multi-step forms in WordPress? =
Yes. Use pages in the builder to create multi-step forms with clear navigation between steps.

= Can GriffinForms create WordPress users from form submissions? =
Yes. GriffinForms includes a dedicated Accounts workflow for WordPress user registration. You can map form fields to account creation, choose duplicate-account behavior, and use immediate, pending, or manual-review account flows depending on the form.

= Can one form submission create more than one WordPress account? =
Yes. If the mapped email field is iterable, one submission can fan out into multiple account actions. GriffinForms treats those as separate target account actions in the runtime and admin UI.

= Can I create application forms with file uploads? =
Yes. GriffinForms supports upload fields with multi-file selection, file-type checks, size limits, file-count limits, and related upload controls, which makes it a good fit for application-style forms, support requests, and document collection workflows.

= Can I collect payments with Stripe or PayPal? =
Yes. GriffinForms supports both Stripe and PayPal for payment forms and payment-related workflows inside the form flow, including review-and-pay steps and resume links for pending payments.

= Can GriffinForms send email through SMTP, SendGrid, or Mailgun? =
Yes. GriffinForms supports WordPress mail, Custom SMTP, SendGrid, and Mailgun for notifications and autoresponders.

= Does GriffinForms support reusable email messages and merge variables? =
Yes. GriffinForms includes reusable messages for notifications and autoresponders, along with merge-variable support so message content can be personalized from submission data. It also supports mapping autoresponders to different email fields inside the same form when the submitter and recipient are not the same person, and mapping admin alerts to different recipients when teams need different messages.

= Does GriffinForms include spam protection? =
Yes. GriffinForms supports reCAPTCHA, hCaptcha, Cloudflare Turnstile, and a silent honeypot, along with native rate limiting on both submissions and file uploads. Multiple layers can be combined independently of each other.

= Why aren't my WordPress form notification emails being delivered? =
WordPress relies on the PHP mail() function by default, which many hosts block or rate-limit — that is the most common reason form emails never arrive. GriffinForms includes built-in support for Custom SMTP, SendGrid, and Mailgun so you can route notifications through a reliable delivery provider directly from the form settings, without installing a separate SMTP plugin. Notifications are queued and processed in the background, so form submissions are never blocked by email API latency. Go to GriffinForms → Settings → Email to configure a delivery provider.

= Does GriffinForms support conditional logic? =
Yes. GriffinForms supports more than simple show and hide rules. You can use conditional logic across fields, rows, and the form itself to control visibility, labels, headings, success messages, redirects, and submit behavior based on user input.

= Does GriffinForms include native logs? =
Yes. Native logging includes timeline-style logs, searchable categories, submission history, and stronger troubleshooting visibility when logging is enabled.

= Does GriffinForms keep settings history for troubleshooting? =
Yes. GriffinForms keeps a short history trail for global settings changes, which helps when you need to see what changed, when it changed, and who changed it on a production site.

= Can I style forms to match my site? =
Yes. GriffinForms includes a theme system with built-in themes and deeper styling controls, so you can modify existing themes or create new ones with control over form inputs, buttons, and states.

= Where are submissions stored? =
Submissions are stored in your WordPress database. File uploads are stored in the WordPress uploads directory.

= Can I see incomplete multi-step submissions in the admin area? =
Yes. GriffinForms supports partial submissions, so incomplete multi-step entries can still remain visible in the admin area.

= Does it work with Gutenberg? =
Yes. You can use GriffinForms with Gutenberg and other shortcode-friendly editor or page-builder workflows.

= Can I reuse forms or templates across sites? =
Yes. GriffinForms supports reusable templates as well as JSON export and import, which makes it easier to repeat proven workflows and speed up setup across forms or sites.

= Is GriffinForms only for contact forms? =
No — GriffinForms works great as a WordPress contact form plugin, and it handles much more. The free core includes multi-step forms, user registration, file uploads, Stripe and PayPal payments, conditional logic, and MailChimp integration, so the same plugin that builds a simple contact form can also handle structured workflows without an upgrade.

= Does GriffinForms include GDPR or HIPAA compliance features? =
Yes. GriffinForms includes per-form compliance profiles (Standard, GDPR, and HIPAA-ready) with submission hashing, layout snapshots, configurable retention, and WordPress personal data export and erase integration.

= Does the builder warn me about form configuration problems? =
Yes. The builder includes a live checks system that shows error, warning, and info counts as you edit. It covers spam configuration, email setup, compliance risks, registration mapping issues, and layout problems — so you can catch issues before the form goes live.

= Where can I find documentation? =
See the docs at [GriffinForms Docs](https://griffinforms.com/docs/).

= Is GriffinForms free? =
The core plugin is free and includes multi-step forms, user registration, file uploads, Stripe and PayPal payments, MailChimp integration, conditional logic, compliance profiles, and AI-assisted building — with no paid tier required for any of those features. GriffinForms Pro is an optional paid add-on that adds Square payments, Google Sheets sync, Klaviyo marketing integration, premium field types (Signature, Rating, Rich Text, Image Selection, Likert Scale), submission export, and frontend submission editing.

= What does GriffinForms Pro include? =
GriffinForms Pro adds Square payments, Google Sheets sync, and Klaviyo marketing integration, along with premium field types — Signature, Rating, Rich Text, Image Selection, and Likert Scale — submission export (CSV, JSON, Excel, Printable HTML), and frontend submission editing with secure edit URLs, access policies, time-window controls, and edit history with rollback. All Pro features work with conditional logic, multi-step forms, and compliance profiles. The core plugin remains free and fully functional without Pro.

= Can submitters edit their own submissions after they submit? =
Yes, with GriffinForms Pro. Pro generates secure, time-limited edit URLs that you can send to submitters. You control the access policy (who can edit), the edit window (how long after submission), and age limits per form. All edits are tracked in the submission history timeline with rollback support so admins can see exactly what changed.

= Does GriffinForms integrate with MailChimp? =
Yes. GriffinForms includes a built-in MailChimp integration that subscribes form submitters to a MailChimp audience as part of the submission flow. You can map form fields to MailChimp merge tags, assign tags, and control consent behavior per form. MailChimp credentials are configured globally in Integrations, and sync runs in the background so the form submission is not blocked by API latency.

= Can I migrate my existing forms from another plugin? =
Yes. GriffinForms includes a guided migration tool that imports forms and submissions from Contact Form 7, WPForms Lite, Ninja Forms, and Formidable Forms free. Go to GriffinForms → Import to get started — GriffinForms detects installed plugins automatically and shows you what it can bring across. Migrated forms behave like any GriffinForms form, so you can edit, extend, and layer in conditional logic without rebuilding from scratch.

= How does GriffinForms compare to Contact Form 7? =
Contact Form 7 is a lightweight plugin built around a shortcode textarea editor with no visual builder, no submission storage by default, and spam protection limited to its own CAPTCHA module. GriffinForms includes a visual drag-and-drop builder, stores all submissions in WordPress, supports multi-step forms, user registration, file uploads, Stripe and PayPal payments, and four independent spam protection layers. See the full comparison: https://griffinforms.com/solutions/contact-form-7-alternative.php

= How does GriffinForms compare to WPForms? =
WPForms Lite includes a visual builder and basic Stripe support, but multi-step forms, conditional logic, file uploads, and user registration all require a Pro licence. In GriffinForms, all of those features are included in the free core plugin with no upgrade required. See the full comparison: https://griffinforms.com/solutions/wpforms-alternative.php

= How does GriffinForms compare to Gravity Forms? =
Gravity Forms requires an annual licence starting at $59/year. GriffinForms is free, includes built-in compliance profiles, AI-assisted form building with Griffin Assist, and a builder checks system that surfaces errors and warnings before you publish. See the full comparison: https://griffinforms.com/solutions/gravity-forms-alternative.php

== Screenshots ==

1. Visual drag-and-drop form builder with field palette, live canvas, and summary panel
2. Griffin Assist generating a multi-step job application form from a single prompt
3. User Registration workflow modal — configure role, creation mode, and access in guided steps
4. Submission detail view with event log showing mail, system, and processing events
5. Conditional Logic rule editor with condition, action, and live summary header
6. Compliance settings — GDPR and HIPAA-ready profiles with per-field retention controls
7. Builder checks warnings overlay — actionable alerts for missing autoresponder and admin email
8. Multi-step form on the frontend showing the step progress indicator and Next button
9. Submissions admin list with 800+ entries, compliance badges, and status filter tabs
10. Form theme selection modal with visual previews across multiple theme categories

== Changelog ==

= 3.2.3.0 – 2026-06-10 =

**Minor**

* Introduced a Column Manager for all list views. A columns icon in the list toolbar opens a modal where you can show or hide columns, drag them into any order, choose a display variant for columns that support multiple formats (such as showing a username with or without the full name), set a custom percentage width per column, and control how many items appear per page. Preferences are saved site-wide and persist across page loads.
* Added optional Last Edited and Last Editor columns to all list surfaces that track edit history. Last Editor supports a username-only display variant.
* Added Klaviyo as a recognised marketing integration in Core. A Klaviyo icon appears on submissions that have been synced, and the single submission page shows a Klaviyo marketing activity card alongside other integration cards. Full sync functionality activates with GriffinForms Pro.
* Fixed the single log entry page so the related-item ID cell renders its "Open" link as a clickable link instead of printing raw HTML.
* Corrected Column Manager label mismatches where the modal showed a different name than the table heading for four columns: Attachments (submissions), Signals (forms and submissions), Log Type (logs), and Date / Time (logs).
* Renamed the internal `isread` column key to `readstatus` for clarity; existing preferences migrate automatically on next save.

= 3.2.2.0 – 2026-06-08 =

**Patch**

* Square is now a recognised payment option in GriffinForms. Full payment processing is activated by the Pro plugin.
* Fixed the payment field builder preview so a single product card no longer stretches to fill the full field width when only one product is configured.
* Fixed the payment field in the Gutenberg block preview so configured products now render as actual cards instead of a static placeholder.
* Fixed the address field country dropdown in the Gutenberg block preview inheriting an unwanted minimum height from the global select control rule.

= 3.2.1.0 – 2026-06-06 =

**Patch**

* The command palette resting pill now updates immediately when the form name is saved via the inline canvas input or the Form Options modal — no page reload required.
* The native `<select>` preview for dropdown fields in the builder now stays in sync with option changes made in the inline option editor. Adds, deletes, renames, and reorders are all reflected after each save.
* Previous, Next, and Submit button labels are now editable directly on the builder canvas — click the button text, type, and the label saves on a short debounce. The Page Navigation Editor accordion in the right sidebar has been removed.
* Form Options and Notifications modals now fetch fresh content from the server each time they open, so changes made via inline editing or AI database patching are immediately visible without a page reload.

= 3.2.0.0 – 2026-06-06 =

**Minor**

* Fixed a builder bug where the last radio or checkbox option could refuse to move when you tried to drag it upward.
* Improved no-theme frontend styling so form buttons follow the active site theme more naturally instead of feeling visually out of place.
* Cleaned up no-theme frontend details, including validation message styling, Likert table borders, stepper presentation, and excess empty space inside payment cards.
* Fixed the builder so switching back to the default style correctly clears the previously applied themed background.
* Improved publish-location tracking so forms embedded with shortcodes or the Gutenberg block are recorded more reliably when posts and pages are saved.
* Reduced builder clutter by hiding empty form, page, and row headings/descriptions until they are actually needed.
* Fixed Gemini provider errors being shown as misleading Griffin Assist validation failures.
* Added clearer Gemini quota error messaging when the connected Google AI project has no usable request quota.

= 3.1.9.0 – 2026-06-02 =

**Patch**

* Griffin Assist thinking stream is now rendered live in the chat window as it arrives, giving real-time visibility into the AI reasoning phase. The stream clears automatically when the final response lands.
* Batch operations now show an incremental per-item status list in the chat — each item progresses through waiting, working, and done states as the operation runs.
* The intent classifier now returns structured output (operation, target scope, target attribute, batch flag, and confidence) fed from the operation catalog, replacing the coarse three-value classification. When confidence is low, the assistant surfaces candidate paths as clickable options rather than guessing.
* Payment field product cards on the builder canvas now support inline editing — click any product name, price, or description to edit it in place without opening a panel. Image placeholders have an Add Image button that opens the WordPress Media Manager. Add Product remains a separate canvas panel for new products only.
* The builder canvas now shows an aurora-style animated overlay while a Griffin Assist request is in flight, blocking accidental edits and signalling AI activity.
* Clicking a form name in the All Forms list now navigates directly to the form builder. The deprecated Edit Form page is no longer the default destination for that link.
* The "Show page headings" toggle in the progress bar settings has been renamed to "Use page headings as step labels" to accurately reflect its behaviour. The Step Name field description now cross-references the toggle. No logic or storage changes.
* Submissions list has a dedicated Read/Unread column immediately after the submission name, moving the unread orb out of the Signals column.
* Date range filters on list pages now convert site-local day boundaries to UTC before comparing against the stored created timestamp, fixing incorrect results on sites with a UTC offset.
* The right-sidebar accordion on single submission pages now opens the first panel by default instead of the User Registration panel.
* Required field indicator is now a global setting under Settings → General. Choose an asterisk (default), custom text, or nothing. The setting propagates to the frontend, builder preview, Gutenberg block preview, and template previews.
* Conditional logic value inputs for text-type conditions now render as a contenteditable rich field with inline variable tag pills instead of a plain textarea. Tags are removable and the Insert Variable button has been redesigned.
* Deleting a dropdown option while another option's label is being edited no longer triggers a race condition that restores the deleted option.
* Column headers on the Forms, Submissions, and Logs list tables no longer wrap to a second line at narrow viewport widths.
* No-theme mode now applies explicit font weights to field labels (600), checkbox and radio labels (500), and floating labels (400) to prevent site-theme inheritance from affecting form typography.
* Recent entries widget in the builder right sidebar now renders nonce-failure responses as a styled error message instead of displaying raw JSON.
* Checkbox and radio option groups on the frontend are now flush with the left edge. Bootstrap's default left indent is removed via a scoped CSS override.
* Fixed a PHP 8.4 deprecation notice on the New Form and Edit Form pages caused by `InputRadio` passing a null `css_class` to `wp_kses_post`. Fixed a second deprecation on the New Message page caused by `RichText` passing a null value to `wp_editor`.

For earlier release notes (3.1.8.0 and below), see https://griffinforms.com/releases/

== Upgrade Notice ==

= 3.2.3.0 =

Minor release. Adds a Column Manager to all list views — show, hide, reorder, set variants and widths, and control items per page. Adds optional Last Edited and Last Editor columns across all lists. Introduces Klaviyo scaffolding in Core with a submissions list signal and a single submission marketing card. Fixes a raw-HTML rendering bug on the log detail page and corrects four column label mismatches in the Column Manager modal. Recommended for all users.

= 3.2.2.0 =

Patch release. Registers the Square payment provider scaffold in Core, fixes a single-product card layout regression in the payment field builder preview, renders real product cards in the Gutenberg block preview, and corrects an address field select height in the block editor. Recommended for all users.

= 3.2.1.0 =

Patch release. Builder consistency improvements: the command palette form name, dropdown select preview, and nav button labels now stay in sync with saved data without a page reload. Form Options and Notifications modals always show current data on open. The Page Navigation Editor sidebar widget is replaced by direct inline editing on the canvas buttons. Recommended for all users.

= 3.2.0.0 =

Minor release. Fixes the remaining choice-field drag-sort regression, improves no-theme frontend presentation, hardens frontend publish-location tracking, reduces empty builder metadata noise, fixes default-style theme background reset, and corrects Gemini provider failure handling. Recommended for all users.

= 3.1.9.0 =

Patch release. Activates the Griffin Assist thinking stream and batch status UI, upgrades the intent classifier to structured output, adds payment field inline editing and the builder in-flight lock overlay, and closes a range of QA items across the submissions list, date filters, conditional logic, and frontend CSS. Recommended for all users.

== License ==

GriffinForms is open source and licensed under GPLv2 or later.
