GriffinForms is a WordPress form builder for multi-step forms, uploads, payments, and richer form workflows. It is built for forms that need more than a single message field, with stronger control over how the form looks, behaves, and continues after submission.
It is a better fit for applications, requests, uploads, registrations, and payment collection than for a simple one-page contact form. If you need forms that do real work, GriffinForms is built for that next step.
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 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. 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.
If you enable Stripe, 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 also supports a fuller review-and-pay pattern with product-style selections, product images, and cart-style summaries. For pending payments, resume links can bring users back so they can continue from where they left off.
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 show a payment step only when a paid option is selected, then change the success message or redirect users to a different next step after submission.
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 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.
GriffinForms includes a flexible user registration workflow for any registration form that needs to create or manage WordPress users after submission. You can build a simple 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, auto-generate a 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 user registration 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.
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.
GriffinForms can send admin notifications and autoresponders through WordPress mail or configured delivery providers such as Custom SMTP, SendGrid, and Mailgun. That gives you more flexibility when you need more dependable delivery for production forms.
GriffinForms includes a reusable message system for admin alerts and autoresponders. You can build messages once, reuse them across forms, and insert merge variables so subjects and message bodies can pull values from the submission at send time. That makes it easier to maintain more personalized and more consistent email workflows without rewriting the same message for every form.
GriffinForms also supports mapping autoresponders to different email fields inside the same form. For example, a staff member can submit a form on behalf of a client, student, or employee, while the correct confirmation message is still sent to the email field for that actual person.
Admin alerts can also be mapped per recipient, so different staff members or teams can receive different messages for the same submission. For example, one alert can go to admissions, another to finance, and another to operations when each team needs different context.
GriffinForms includes a guided onboarding flow to help new users create and publish a useful first form more quickly. That makes it easier to start with a working form instead of a blank builder and then expand into more advanced flows later. Starter forms and reusable templates also help teams move faster when they need to repeat similar workflows across forms or sites.
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 help show GriffinForms is built for more than a simple one-page contact form.
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 early compliance groundwork such as retention settings, WordPress privacy-tool integration, and per-form data-capture controls when those workflows matter.
GriffinForms can connect to these third-party services when enabled:
– Google reCAPTCHA (spam protection): Terms and Privacy
– Stripe (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
GriffinForms is open source and licensed under GPLv2 or later.