Flinkform – Forms for the Block Editor
Flinkform is a form builder that lives entirely inside the WordPress Block Editor. Forms are composed from native blocks (block.json v3), styled through theme.json design tokens, and powered by the Interactivity API — no separate admin UI, no shortcodes, no jQuery. How it works Block Editor native — forms are built with block.json and the Interactivity API, directly inside the editor theme.json styling — forms inherit your theme’s typography, colours and spacing automatically Modern stack — WordPress 6.5+, PHP 8.1+, no jQuery, frontend JS under 15 KB gzipped Multi-step forms — split long forms into steps with a Page Break block, included in the free core Conditional logic — show/hide fields based on user input, included in the free core WCAG 2.1 AA — full keyboard navigation, screen-reader compatible, aria-live announcements Privacy by design — no external services, no tracking cookies, no IP tracking — everything stays on your server Features (free core) Form building * 14 field types: Text, Email, Textarea, Number, Date, URL, Phone, Select, Radio, Checkbox, Toggle, Hidden, Consent, Address * Composite Address field: street, postal code and city in a compact grid, with optional address line 2 and country * Dedicated Consent field for privacy-policy agreement * Notice block: a highlighted note between fields (info, success, warning, important) — pair it with conditional logic to surface guidance only when it applies * Section Heading and Page Break blocks for structuring longer forms * Multi-step forms with Page Break block, per-step validation and progress indicator (bar, dots or numbers) * Conditional logic — show/hide fields, skip steps, gate the submit button, with nestable groups for “(A or B) and C” * Two-column layout with per-field full-width override Styling * Automatic theme.json inheritance (colours, typography, spacing, border radius) * Style panel: primary colour, field style (bordered/soft/underline/minimal), label position (above/beside/floating/placeholder), submit button style (fill/outline/ghost), plus colour pickers for labels and help/consent text — and the Section Heading block carries WordPress’s native text-colour option Accessibility * Built accessible: real label/for pairs, fieldset/legend for choice groups, errors announced via role=”alert” and linked with aria-describedby, focus moves to the first invalid field * Multi-step navigation announces the new step via aria-live and manages focus; the progress indicator is a real progressbar with current values * Visible focus rings even when the theme removes them, prefers-reduced-motion respected, and the spam protection needs no CAPTCHA — nothing to squint at, nothing to solve * Works fully without JavaScript, and the form markup passes axe-core (WCAG 2.1 A/AA) with zero violations — including the error state Notifications * Admin notification email on every submission (configurable recipient, merge tags) * Optional confirmation email to the submitter * Sender name and address per form, with a Reply-To for each email — send from your own address without an SMTP plugin * Sends through your site’s standard WordPress mail (wp_mail) Spam protection * Always-on honeypot + signed time-based check (zero configuration) * Built-in proof-of-work challenge with accessible math fallback for visitors without JavaScript * No external service, no API keys, no tracking cookies, 100% GDPR-friendly After submission * Success message or redirect to a custom thank-you URL (with open-redirect protection) * Optional submission ID and form ID query parameters for conversion tracking (GA4, Meta Pixel, Plausible, etc.) Admin * Submissions list with search, filter by form, sort, bulk actions * Single-submission detail view with all field labels and values * Mark as read/unread * Per-form data retention with automatic daily purge Privacy Flinkform is built with privacy by default. Here is what the free core does and does not do: What the free core stores: * Form submissions (the field values visitors enter) in a dedicated database table ({prefix}flinkform_submissions) What the free core does NOT do: * It stores no IP addresses and no browser user-agent strings * It sets no tracking, analytics or marketing cookies. Flinkform sets exactly one strictly-necessary cookie — flinkform_flash (lifetime ~60 seconds, httpOnly) — and only when a form submission fails validation, to carry the error message and the visitor’s input across the page reload. Successful submissions set no cookie at all * It contacts no external service Data retention: * By default, submissions are retained until you delete them. To comply with the storage-limitation principle (GDPR Art. 5), set a per-form retention period (Form block → Data Retention) and Flinkform deletes older submissions automatically each day * Individual submissions can be deleted from the admin submissions screen at any time Data deletion: * All free-core data (the submissions table) is permanently removed when the plugin is uninstalled through the WordPress admin * Flinkform integrates with WordPress’s privacy tools (Tools > Export Personal Data / Erase Personal Data) to support data-subject access and erasure requests Source Code The complete, uncompiled source code (including the src/ directory with the unminified JavaScript/CSS that compiles into build/) is publicly available at: https://github.com/dennisbuchwald/Flinkform Build instructions (Node.js 18+ and npm required): 1. Clone the repository: git clone https://github.com/dennisbuchwald/Flinkform.git 2. Install dependencies: npm install 3. Build the compiled assets into build/: npm run build The build is powered by @wordpress/scripts (webpack). The src/ sources are excluded from the distributed plugin zip to keep it small; this repository is the canonical, reviewable source.
Top keywords
- block9×1.06%
- flinkform9×1.06%
- form9×1.06%
- submissions9×1.06%
- data7×0.82%
- field7×0.82%
- forms7×0.82%
- wordpress7×0.82%
- build6×0.70%
- core6×0.70%
- address5×0.59%
- admin5×0.59%
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.