GriffinForms – Contact Form and Form Builder
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 – Submission Accounts Accordion – Password strategies 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 – Managing messages – Mail merge placeholders 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 – Multi-page forms – Conditional logic 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 and Privacy – Stripe (payments): Terms and Privacy – PayPal (payments): Terms and Privacy – Cloudflare Turnstile (spam protection): Terms and Privacy – hCaptcha (spam protection): Terms and Privacy – SendGrid (email delivery): Terms and Privacy – Mailgun (email delivery): Terms and Privacy – MailChimp (audience sync): Terms and Privacy – OpenAI (AI form building, when configured): Terms and Privacy – Anthropic (AI form building, when configured): Terms and Privacy – Google Gemini (AI form building, when configured): Terms and Privacy – xAI Grok (AI form building, when configured): Terms and Privacy – Mistral (AI form building, when configured): Terms and Privacy – GriffinForms deactivation feedback (optional, only when you submit feedback while deactivating the plugin): if you select a reason and choose to send feedback, GriffinForms transmits that reason, any optional comment you write, your site name and URL, and your plugin, WordPress, and PHP versions to a GriffinForms-owned endpoint so we can improve the plugin. Your administrator email address is included only if you tick the “allow contact” option. Nothing is sent if you choose “Skip & Deactivate.” Feedback is delivered through GriffinForms infrastructure and the Brevo transactional email service. If you tick the “allow contact” option, your feedback is also raised as a support request in GriffinForms’ Zoho Desk helpdesk so we can follow up with you. GriffinForms: Privacy. Brevo: Terms and Privacy. Zoho: Privacy. Learn more Documentation: GriffinForms Docs User docs: GriffinForms User Docs Templates: Form Templates Releases: Release Notes Privacy: Privacy Policy Use-case guides WordPress contact form WordPress user registration form WordPress multi-step form WordPress payment form WordPress file upload form WordPress conditional logic form License GriffinForms is open source and licensed under GPLv2 or later.
Top keywords
- form50×2.15%
- griffinforms32×1.38%
- wordpress30×1.29%
- forms26×1.12%
- privacy18×0.78%
- registration18×0.78%
- submission15×0.65%
- workflows15×0.65%
- ai14×0.60%
- terms14×0.60%
- terms and privacy14×0.60%
- email13×0.56%
HTML Forms & Contact Form for WordPress
Narrative Forms is the HTML form plugin for WordPress. Instead of dragging boxes around a builder, you write plain semantic HTML, or paste it straight from an AI like ChatGPT, Claude, or Gemini, and Narrative Forms turns it into a real form with fast AJAX form submissions and stored, exportable data. Any input with a name attribute is saved. That is the whole idea: forms are just HTML, so there is no field type registry, nothing proprietary to lock you in, and no ceiling on what your form can be. If you want a clean, fast, developer friendly HTML form plugin, a simple contact form, or a custom form that a heavy form builder cannot easily produce, this is it. It stays lightweight, loads its assets only on pages that contain a form, and is built to scale to millions of submissions. Everything it does is free, with no premium tier: the AI form builder, conditional logic, webhooks with delivery logs and retries, a REST API, require login, schedule windows, and hosted share links are all included at no cost. Why an HTML form plugin beats a drag and drop builder Most WordPress form plugins lock you into a drag and drop form builder and a fixed list of field types. If the builder does not offer a field, you cannot have it. Narrative Forms is an HTML form plugin with no field registry: a field is simply an HTML element with a name. Need a multi step layout, an unusual input, a custom widget, or markup your designer already wrote? Paste it in and it works. You keep full control of the markup, the classes, and the look, so your contact form or custom form renders exactly the way you built it. Drag and drop made sense years ago. Today you describe what you want or paste what you already have. No builder, no bloat, and no fighting a clunky UI to recreate a form you can already picture. That is why people who outgrow a drag and drop form builder move to a real HTML form plugin. Build forms with AI, built in or pasted from ChatGPT, Claude, or Gemini Because forms are just HTML, any large language model can build one for you, and Narrative Forms gives you two ways to use that. The built in AI form builder writes the form HTML for you right inside WordPress: open a form, click Generate with AI, describe what you want, and keep refining it by chatting. You bring your own API key for an OpenAI compatible provider such as DeepSeek, OpenAI, or OpenRouter, so you stay in control of the model and the cost. You can also paste from anywhere: ask ChatGPT, Claude, or Gemini for a form and drop the HTML in, because there is no proprietary field format to satisfy. Either way, the plugin stays model agnostic, ships with no AI key, and contacts no AI service until you add one; see the Privacy and External services sections for what is sent and when. Everything in the free HTML forms plugin The free HTML forms plugin is a complete forms solution, not a teaser. Here is what every install includes: Fast AJAX form submissions. Forms submit without a page reload, and there is a graceful fallback when JavaScript is turned off, so the form never breaks for a visitor. AJAX form submissions also keep your pages cache friendly, because the page can stay static while the form posts in the background. A built in HTML editor. One click field buttons generate the markup for common fields, and a live preview shows the form as you type. Write the HTML by hand, scaffold it quickly with the buttons, or paste a form an AI wrote for you. The editor never hides your markup behind a visual builder, so what you see is what ships. A built in AI form builder. Describe the form you want and let AI write the HTML for you inside WordPress, then keep refining it by chatting. You bring your own API key for an OpenAI compatible provider (DeepSeek, OpenAI, OpenRouter, or a custom endpoint), so you control the model and the cost. Your key is stored for administrators only and is never exposed to visitors. Conditional logic. Show or hide any field based on what the visitor enters, using simple match rules. A hidden required field is dropped from validation automatically, so a conditional logic rule never blocks a submission. Email notifications. Send a clean, readable email for every form submission, to yourself or any address, in plain text or HTML. Each field is formatted tidily, and you can route different forms to different inboxes with separate email actions. Webhook actions with delivery logs, retries, and templates. Send form data to any URL when the form is submitted, with no code, and add more than one webhook per form so one submission can fan out to several services. Every webhook call is recorded in a delivery log, failed calls retry automatically with backoff, and reusable webhook templates ship with one click Discord, Slack, and Microsoft Teams presets plus custom JSON payloads and request headers. REST API. Read and manage your form submissions programmatically through a REST API (namespace nrfm/v1), authenticated by a capability check or an API key you generate. Connect your forms to another app, a dashboard, or your own tooling. File upload form fields. Accept a file upload field with a maximum file size and a maximum number of files per field. Uploaded files are stored safely in the WordPress media folder and recorded with the submission, so building a file upload form is one paste of HTML away. Stored form submissions and CSV export. Optionally keep every submission in a fast, indexed database table that you browse in the admin. Run a CSV export of your form submissions at any time; the export streams in batches, so it works even with very large numbers of submissions and never times out. Save and resume. Let visitors save a long form as a draft and continue later from a private resume link. Drafts expire automatically and are cleared once the form is submitted. Submission notifications. An unread badge on the Forms menu and the submissions list flags new entries, so a fresh form submission never slips by. Require login. Restrict any form to logged in users only, with your own message and login link for signed out visitors. Schedule windows. Open and close a form automatically on the dates and times you set, with separate messages for before it opens and after it closes. Direct share links. Give any form its own hosted URL, so you can share a working form without adding it to a page or copying a shortcode. Layered spam protection. Stop bots with a honeypot, a time trap that rejects instant submissions, a same origin referrer check, a limit on the number of links in a message, and an optional rate limit per IP. You can also switch on Cloudflare Turnstile for a privacy respecting CAPTCHA. This spam protection adds no third party tracking to your site. Custom messages and redirects. Set your own success and error messages, redirect to any URL after a successful submit, and use template tags so the form behaves exactly how you want. Clean, optional styling. A calm, minimal stylesheet ships with the plugin and is on by default, and you can switch it off in one click if your theme or custom CSS should own the look. Semantic wrapper classes keep your theme in charge of how your HTML form appears. Every output is escaped and every input is sanitised, following WordPress coding and security standards, so the plugin stays review safe and secure. Send form data anywhere with webhooks and a REST API Narrative Forms is built to move your form submissions wherever they need to go. Add a webhook action with your endpoint URL and every submission is delivered to that webhook, so you can connect a form to Zapier, Make, a CRM, Discord, Slack, Microsoft Teams, or your own service without writing code. A webhook delivery log shows every call and its response, failed webhooks retry automatically with backoff, and webhook templates let you shape a custom JSON payload with one click presets for Discord, Slack, and Teams. When you would rather pull data than push it, the REST API exposes your form submissions under the nrfm/v1 namespace, protected by a capability check or an API key. Add conditional logic to show or hide fields, require login to restrict a form, and schedule windows to open and close it automatically, and your form data never gets stuck in the admin. Contact forms, custom forms, and every form in between Narrative Forms is a general purpose form plugin, so the same HTML first workflow covers almost any form: a simple contact form, a lead capture or support request form, a job application, an RSVP, a survey, a registration form, a file upload form, or a custom form with a layout a drag and drop builder cannot easily produce. Because a field is just an HTML element with a name attribute, you paste the HTML, give the fields names, and the form is live with AJAX form submissions, stored data, conditional logic, and CSV export. There is no template to fight and no field type you cannot add, which is the difference between an HTML form plugin and a drag and drop form builder, and the same lightweight form plugin scales from a handful of submissions a month to millions over time. Developer friendly HTML form plugin Narrative Forms is built for people who like control. Prefill fields with template variables such as {{ user.email }}, {{ get.utm_source | default:’direct’ }}, or {{ site.name }}, using providers like user, URL parameters, post, site, and date, each with filters such as default, upper, lower, date, and truncate. On the front end, public JavaScript events (nrfm-submit, nrfm-submitted, nrfm-success, nrfm-error) let you push conversions to Google Tag Manager or your dataLayer, show a toast, or run any custom logic with a tiny nrfm.on() helper. Filters and actions sit at every decision point, including the form HTML, validation, and webhook request arguments, and a REST API is available for reading and managing form submissions, so you can extend this HTML form plugin without forking it. Built to scale to millions of form submissions Narrative Forms is engineered for sites that collect a lot of data. Form submissions live in a dedicated, indexed database table rather than bloated post meta, so lookups stay fast as the table grows. Repeated reads are cached, queries are paginated and bounded, CSV export streams in batches, and heavy work can run in the background so the front end stays quick. Whether you collect ten form submissions a month or millions over time, this lightweight form plugin is designed to stay responsive. Scaling to millions describes the architecture, indexed storage, caching, and bounded queries, rather than a benchmarked guarantee. Who this HTML forms plugin is for Developers and agencies who want a contact form or custom HTML form they fully control, without a heavy builder. Anyone who uses an AI assistant: generate the HTML with the built in AI form builder or paste it from ChatGPT, and you are done. Site owners who need reliable form submissions, email notifications, webhooks, file upload forms, and CSV export without the bloat. Teams that want conditional logic, require login, scheduled forms, and a REST API without paying for a premium tier. Teams that have outgrown a drag and drop form builder and want a faster, lighter way to build forms. Common uses include contact forms, lead capture, support requests, job applications, RSVPs, surveys, file uploads, registrations, and multi field custom forms with conditional logic that a drag and drop builder cannot easily produce. Publish form submissions with Frontend Submissions (Views) Most form plugins keep submissions locked in the admin. The Narrative Forms Frontend Submissions add on turns your form submissions into front end content with reusable Views: display any form’s submissions as a public directory, a testimonial wall, a photo gallery, a job board, an event timeline, or product reviews, with instant search, pagination, single pages, per field privacy, and approval moderation. Frontend submission display is the one paid add on and it requires the free Narrative Forms plugin. Collect with the form, publish with a View. Learn more at https://narrative-forms.com/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=free Privacy Narrative Forms uses the Appsero SDK to collect some telemetry data, but only after you confirm it. This helps us troubleshoot problems faster and make product improvements. The Appsero SDK does not gather any data by default. It only starts collecting basic telemetry when you allow it through the admin notice. We collect the data to ensure a great experience for all of our users. Integrating the Appsero SDK DOES NOT IMMEDIATELY start gathering data, and never without your confirmation. Learn more about how Appsero collects and uses this data. External services This plugin connects to external services only in these optional cases. Each is off until you enable or allow it. Cloudflare Turnstile (optional CAPTCHA). Only if you enable Turnstile. The browser loads https://challenges.cloudflare.com/turnstile/v0/api.js to render the widget, and on submit the server posts the token, your secret key, and the visitor IP to https://challenges.cloudflare.com/turnstile/v0/siteverify. Terms: https://www.cloudflare.com/website-terms/ Privacy: https://www.cloudflare.com/privacypolicy/ Webhooks (optional, configured by you). Only if you add a Webhook action. After a successful submission, the form fields plus limited metadata (timestamp, IP address, user agent, referrer) are sent to the exact URL you configure. The destination is your choice, so consult that service’s terms and privacy policy. Appsero (optional usage analytics). Off until you allow it in the admin notice. It then sends basic environment details (site URL, WordPress and PHP versions, active theme and plugins, locale, admin email) to https://api.appsero.com. No form submissions or visitor data are sent. Privacy: https://appsero.com/privacy-policy/ AI form builder (optional, configured by you). Off until you add an API key. It contacts your chosen provider only when you click Generate, sending your instruction text and the current form markup to that provider’s chat completions endpoint. No form submissions or visitor data are ever sent, and your key is stored for admins only. Supported endpoints: DeepSeek https://api.deepseek.com (Privacy: https://cdn.deepseek.com/policies/en-US/deepseek-privacy-policy.html), OpenAI https://api.openai.com (Privacy: https://openai.com/policies/privacy-policy/), OpenRouter https://openrouter.ai (Privacy: https://openrouter.ai/privacy), or any OpenAI compatible endpoint you configure.