wp-content/plugins/formcaddy/formcaddy.php
FormCaddy
Build forms in the block editor with blocks you already know. Entries stay in your database.
== Description ==
FormCaddy adds four blocks — Form, Field, Choice, and Submit — and nothing else. You build a form the same way you build a paragraph: insert a block, type a label, drag it where it goes. There is no separate form builder screen, and no drag-and-drop canvas that behaves unlike the rest of the editor.
Submissions save to one table, wp_formcaddy_entries, with one row per entry and readable column names. Read it with any client you like, export it as CSV, or query it directly. If you deactivate the plugin, the table stays put.
Email delivery uses wp_mail(), so whatever handles mail on your site already handles this. Spam filtering is a timing check and a honeypot field — no third-party service, and no visitor data leaving the site.
== Screenshots ==
Numbered the way they ship in /assets/. Click any one to see it full width.
== Installation ==
- Upload the plugin folder to
wp-content/plugins/, or install the ZIP from Plugins → Add New. - Activate it. The table is created on activation; nothing else changes.
- Edit any post or page, insert the Form block, and add fields inside it.
- Set the notification address in the Form block’s sidebar. Leave it empty to store entries without sending mail.
No settings page. Everything a form needs lives on the block.
== Frequently asked questions ==
Does it work with the classic editor?
No. FormCaddy is blocks only. For classic sites, use a shortcode plugin instead — I don’t have one to recommend and I won’t sell you a worse fit.
Where do file uploads go?
Into the media library, marked private, attached to the entry. Direct URLs return a 403 unless the requester can edit_posts.
Can I move entries to another site?
Export the CSV, or copy the table. Both are documented in readme.txt, and the schema hasn’t changed since 2.0.
What happens when I stop paying?
Nothing. The plugin is GPL and keeps working. You lose access to updates and to me.
== Changelog ==
= 3.1.0 =
- Conditional fields: show a field only when another answer matches.
- CSV export now streams, so large tables no longer hit the memory limit.
- Tested against WordPress 6.8 and PHP 8.4.
= 3.0.2 =
- Fixed: the Submit block lost its label when a form was duplicated.
- Fixed: honeypot field was announced by screen readers.
= 3.0.0 =
- Rewritten as four blocks. The old shortcode still renders and will keep rendering.
- Entries screen moved under Tools, out of the top-level admin menu.
- Dropped PHP 7.4. Minimum is now 8.1.
= 2.6.1 =
- Security: entry deletion now checks the nonce before the capability, not after.