Title: Streamery Forms
Author: streamery
Published: <strong>September 28, 2026</strong>
Last modified: September 28, 2026

---

Search plugins

![](https://ps.w.org/streamery-forms/assets/banner-772x250.png?rev=3716566)

![](https://ps.w.org/streamery-forms/assets/icon-256x256.png?rev=3716566)

# Streamery Forms

 By [streamery](https://profiles.wordpress.org/streamery/)

[Download](https://downloads.wordpress.org/plugin/streamery-forms.1.0.12.zip)

 * [Details](https://srd.wordpress.org/plugins/streamery-forms/#description)
 * [Reviews](https://srd.wordpress.org/plugins/streamery-forms/#reviews)
 *  [Installation](https://srd.wordpress.org/plugins/streamery-forms/#installation)
 * [Development](https://srd.wordpress.org/plugins/streamery-forms/#developers)

 [Support](https://wordpress.org/support/plugin/streamery-forms/)

## Description

Streamery Forms is a form builder for the WordPress block editor. You compose a 
form the same way you compose any other page — by adding blocks — and every submission
is stored in an inbox inside your WordPress admin, so nothing depends on an email
actually arriving.

**Building forms**

 * 17 field blocks: text, email, number, textarea, select, radio, checkbox, date&
   time, slider, file upload, and more
 * Multi-step forms with progress display and step navigation
 * Conditional logic — show or hide fields based on what has been filled in
 * Ready-made starter templates, or start from an empty form
 * Styling through the block editor’s own controls (colours, spacing, borders, typography)

**Handling submissions**

Every submission runs through a chain of providers:

 * **Database** — always active. Stores the submission in the inbox before anything
   else runs, so a failing integration can never cost you a lead.
 * **Email** — notification email with a customisable HTML template and placeholders
   for form values.
 * **Webhook** — sends the submission to any HTTPS endpoint, with optional HMAC 
   signing, several authentication methods, custom headers, and field mapping.

**Inbox**

 * Read, search, and filter submissions
 * Folders, labels, and read/unread status
 * Multiple mailboxes, with each form routed to the one you choose
 * Trash with restore

**Spam protection**

 * Honeypot field
 * CAPTCHA (FriendlyCaptcha or Google reCAPTCHA), verified on the server
 * Per-IP rate limiting
 * Minimum time between a form being rendered and submitted

All of these are enforced on the server. A submission cannot bypass them by talking
to the REST endpoint directly.

**Privacy**

 * Storing the submitter’s IP address can be switched off per form
 * Optional retention period per form, after which submissions are deleted automatically
 * No data is sent anywhere except the providers you configure yourself

### Third-Party Services

Streamery Forms does not contact any external service on its own. The following 
are optional and only ever active once **you** configure them.

**Google reCAPTCHA** — only when you enable reCAPTCHA and enter your keys under 
Streamery Forms  Settings  CAPTCHA. When enabled, the reCAPTCHA script is loaded
from Google on pages containing a form, and the visitor’s CAPTCHA response token
plus their IP address are sent to Google for verification on submit.
 Service: https://
www.google.com/recaptcha/ Terms: https://policies.google.com/terms Privacy policy:
https://policies.google.com/privacy

**FriendlyCaptcha** — only when you enable FriendlyCaptcha and enter your keys under
Streamery Forms  Settings  CAPTCHA. The widget script is bundled with the plugin,
not loaded from a third party. On pages with a CAPTCHA block it requests a puzzle
from the FriendlyCaptcha API, and on submit the visitor’s solution is sent to the
FriendlyCaptcha API for verification.
 Service: https://friendlycaptcha.com/ Terms:
https://friendlycaptcha.com/legal/terms/ Privacy policy: https://friendlycaptcha.
com/legal/privacy/

**Webhook provider** — only when you add a webhook feed. Submissions of the forms
you assign it to are sent to the URL **you** configure. That endpoint is yours; 
where the data goes and how it is handled is determined entirely by the address 
you enter. No default endpoint exists and nothing is sent anywhere unless you set
one up.

### Source Code

Some JavaScript and CSS in this plugin is compiled. The complete, human-readable
source ships inside the plugin in the `src/` folder, together with the build configuration.
Every compiled file begins with a comment naming its source folder. The same code
is also public and maintained at:

https://github.com/streamery-de/streamery-forms

Compiled file  source:

 * `assets/blocks/{block}/index.js`, `view.js`, `*.css`  `src/blocks/{block}/` (
   e.g. `assets/blocks/select/view.js`  `src/blocks/select/view.ts`), built with@
   wordpress/scripts (`webpack.config.js`)
 * `assets/blocks/skins/default/`  `src/skins/default/`
 * `assets/blocks/{number}.js`  shared, lazy-loaded chunks of the HTML email editor:
   currently `3024.js` from `src/components/email-template-editor/HtmlCodeEditor.
   tsx` and `3468.js` with the bundled CodeMirror library (see below)
 * `assets/admin/dist/`  `src/admin/`, `src/components/`, `src/lib/`, `src/hooks/`,
   built with Vite (`vite.admin.config.js`, `tailwind.config.js`, `postcss.config.
   js`)
 * `assets/admin/deactivate.js` and `assets/admin/deactivate.css` are not compiled

To rebuild the compiled files (Node.js 20, Composer):

 1. `composer install --no-dev --optimize-autoloader`
 2. `npm ci`
 3. `npm run build` (runs `vite build -c vite.admin.config.js` and `wp-scripts build`)

Bundled third-party libraries (all MIT or ISC licensed; exact versions in `package-
lock.json` and `vendor/composer/installed.json`):

 * CodeMirror, @uiw/react-codemirror — https://github.com/codemirror/dev, https://
   github.com/uiwjs/react-codemirror
 * friendly-challenge — https://github.com/FriendlyCaptcha/friendly-challenge
 * noUiSlider — https://github.com/leongersen/noUiSlider
 * dnd kit — https://github.com/clauderic/dnd-kit
 * Lucide — https://github.com/lucide-icons/lucide
 * Radix UI — https://github.com/radix-ui/primitives
 * React Router — https://github.com/remix-run/react-router
 * Recharts — https://github.com/recharts/recharts
 * date-fns — https://github.com/date-fns/date-fns
 * Zod — https://github.com/colinhacks/zod
 * clsx — https://github.com/lukeed/clsx
 * tailwind-merge — https://github.com/dcastil/tailwind-merge
 * Nano Stores — https://github.com/nanostores/nanostores
 * vite-for-wp (adapted in `libs/assets.php`) — https://github.com/kucrut/vite-for-
   wp
 * wp-eloquent (Composer, in `vendor/`) — https://github.com/prappo/wp-eloquent

## Screenshots

[⌊A multi-step form in the block editor, with a progress bar and step navigation⌉⌊
A multi-step form in the block editor, with a progress bar and step navigation⌉[

A multi-step form in the block editor, with a progress bar and step navigation

[⌊Starter templates: begin with a ready-made form or an empty one⌉⌊Starter templates:
begin with a ready-made form or an empty one⌉[

Starter templates: begin with a ready-made form or an empty one

[⌊All field blocks in the block inserter⌉⌊All field blocks in the block inserter⌉[

All field blocks in the block inserter

[⌊Field settings in the block sidebar⌉⌊Field settings in the block sidebar⌉[

Field settings in the block sidebar

[⌊The inbox with folders, labels and submission details⌉⌊The inbox with folders,
labels and submission details⌉[

The inbox with folders, labels and submission details

[⌊Overview of all forms on the site⌉⌊Overview of all forms on the site⌉[

Overview of all forms on the site

[⌊General plugin settings⌉⌊General plugin settings⌉[

General plugin settings

[⌊Provider configuration⌉⌊Provider configuration⌉[

Provider configuration

[⌊The email template editor with live preview⌉⌊The email template editor with live
preview⌉[

The email template editor with live preview

## Blocks

This plugin provides 18 blocks.

 *   Checkbox Checkbox block for Streamery Forms.
 *   Save Progress Save form progress to continue later in Streamery Forms.
 *   Submit Submit button block for Streamery Forms.
 *   File Upload File upload block for Streamery Forms.
 *   Date / Time Date or time field for Streamery Forms.
 *   Success Success Section for Streamery Forms.
 *   Radio Radio block for Streamery Forms.
 *   Form Form Wrapper block for Streamery Forms.
 *   Field Value Shows the current value of a form field, e.g. a name in a heading
   or a summary.
 *   CAPTCHA CAPTCHA block for spam protection. Supports FriendlyCaptcha and Google
   reCAPTCHA.
 *   Textarea Textarea block for Streamery Forms.
 *   Select Select block for Streamery Forms.
 *   Step Navigation Navigation buttons for multi-step forms in Streamery Forms.
 *   Slider Slider block for Streamery Forms.
 *   Step Step container block for multi-step forms in Streamery Forms.
 *   HoneyPot Hidden field for spam detection. Bots will fill this field, humans
   won't.
 *   Input Input block for Streamery Forms.
 *   Progress Progress indicator for multi-step forms in Streamery Forms.

## Installation

 1. Upload the plugin to `/wp-content/plugins/streamery-forms/`, or install it through
    Plugins  Add New.
 2. Activate it through the Plugins screen.
 3. Edit a page or post, add the **Form** block, and add field blocks inside it.
 4. Open **Form Settings** from the block toolbar to choose a mailbox and add providers.
 5. Submissions appear under **Streamery Forms  Inbox**.

## FAQ

### Do I need to configure anything before the first form works?

No. The database provider is always active, so submissions land in the inbox as 
soon as you publish a form. Email and webhook delivery are optional additions.

### Where are file uploads stored?

In `wp-content/uploads/streamery-forms/`. The directory is protected against script
execution, uploads are restricted to a server-side list of allowed file types, and
an upload is only ever linked to a submission through a single-use token — a submission
cannot reference some other file on your site.

### Can editors manage submissions without being administrators?

Yes. Editors can read and manage inbox entries. Settings that affect the whole site—
SMTP, provider feeds, mailboxes, CAPTCHA keys — remain administrator-only.

### How can I support Streamery Forms?

Streamery Forms is free, with no pro version and no locked features. The easiest
way to help is a review here on WordPress.org or a translation on translate.wordpress.
org. If you would like to support development, you can buy a coffee at [ko-fi.com/streamery](https://ko-fi.com/streamery).

The plugin shows a small support link on its settings screen and, once, after 50
collected submissions. Administrators can dismiss it, and developers can remove 
it entirely with `add_filter( 'streamery-forms/support_links', '__return_empty_array');`.
No request is ever made to a donation platform, and nothing is shown to site visitors.

### What happens to my data if I delete the plugin?

By default, nothing: your submissions, mailboxes, and providers are kept, so deleting
and reinstalling does not lose anything. If you want everything removed, enable “
Delete all data on uninstall” in the settings before deleting the plugin. Plugin
options — including the stored SMTP password — are always removed on uninstall.

### Does the plugin work with page caching?

Yes. Form submission does not depend on a per-page nonce that could expire in a 
cache; spam protection is handled by honeypot, timing, rate limiting, and CAPTCHA
instead.

### Can I add my own provider?

Yes. Provider classes are registered through the `streamery-forms/available_providers`
filter, so an add-on plugin can register its own without modifying this one.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Streamery Forms” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ streamery ](https://profiles.wordpress.org/streamery/)

[Translate “Streamery Forms” into your language.](https://translate.wordpress.org/projects/wp-plugins/streamery-forms)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/streamery-forms/), 
check out the [SVN repository](https://plugins.svn.wordpress.org/streamery-forms/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/streamery-forms/)
by [RSS](https://plugins.trac.wordpress.org/log/streamery-forms/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.12

 * New: CAPTCHA tab under Settings to enter the site key and secret for Friendly
   Captcha or Google reCAPTCHA v3. Only one provider can be active.
 * Fix: CAPTCHA secrets were sent to the provider still encrypted, so every CAPTCHA
   check would have failed.
 * Fix: With a CAPTCHA provider active, forms without a CAPTCHA block were rejected.
   Only forms with a CAPTCHA block are verified now.
 * Fix: The reCAPTCHA token is refreshed every 90 seconds. It used to expire two
   minutes after the page loaded.
 * The CAPTCHA block always uses the active provider and shows in the editor which
   one that is.

#### 1.0.11

 * Fix: The inbox and notification emails no longer show the internal `_primary_mail_field`
   entry.
 * Fix: Checkbox fields are labelled “Checkboxes” instead of “Checkboxes[]” in the
   inbox and emails.
 * Fix: The options count in the field sidebar was always in German. It is now translatable.
 * Screenshots added for the WordPress.org plugin page.

#### 1.0.10

 * Fix: Default values now show in the frontend for input, textarea, radio, checkbox
   and date/time fields. They were written in a form browsers ignore.
 * Fix: Leftover defaults from the old placeholder copy (e.g. a lone “M”) are removed
   when a form is opened in the editor, so they don’t suddenly appear as field values.

#### 1.0.9

 * New: “Default value” for select and radio fields: choose the preselected option
   or “No default”.
 * New: Checkbox fields get a checklist to preselect one or more options (not for
   consent checkboxes).
 * New: Default value field for input and textarea fields.
 * Fix: Select fields now actually preselect their default option.
 * Fix: Typing a placeholder no longer copies its first letter into the field’s 
   value.

#### 1.0.8

 * Fix: Option images sit next to the text again in the default, toggle and badge
   styles. The skin’s option layout overrode them and stacked image and text.

#### 1.0.7

 * New: The Field Value block can show the value in bold, independent of the text
   before and after it.
 * New: “Image position” for checkbox and radio options in every style but cards:
   before or after the text.
 * An option’s description now sits under its label when the option has an image.

#### 1.0.6

 * New: “Field Value” block shows the current value of a form field live, e.g. in
   a heading, a summary column or the success screen. Supports typography, colors
   and spacing like the Site Title block.
 * New: Steps can be nested anywhere inside a form, e.g. in one column next to a
   live summary.
 * Fix: Conditional logic now reads the selected radio option and all checked boxes
   of a checkbox group.

#### 1.0.5

 * New: Conditional logic works on every block inside a form — groups, headings,
   columns, images and more — not just on fields.
 * Fix: Fields inside a hidden group stay disabled even when their own condition
   is met, and required fields inside a conditional group no longer block submission
   when the group is hidden.

#### 1.0.4

 * New: “Image position” setting for checkbox and radio cards: top left, or centered
   without the check indicator (the selected card is marked by its border).
 * Option images now have a fixed height and keep their aspect ratio instead of 
   being cropped.

#### 1.0.3

 * New: Themes and plugins can register their own form skins with the `streamery-
   forms/skins` filter, including skins that extend another skin.
 * New: Checkbox and radio options can show an image (top left on the Cards style).
 * New: Checkbox and radio groups can offer a custom option where visitors type 
   their own answer.
 * New: “Hide label” toggle in the global field settings. The label stays available
   to screen readers.
 * Fix: The checkbox block can be found in the block inserter again, and a plain
   checkbox group is its default.

#### 1.0.2

 * Fix: The required asterisk now shows on checkbox and radio groups.
 * Fix: Checkbox groups accept multiple selections.
 * Every compiled JavaScript and CSS file now starts with a comment pointing to 
   its source.

#### 1.0.1

 * Fix: Multi-step forms now scroll back to the top of the form when moving to the
   next or previous step.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.0.12**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/streamery-forms/)
 * Tags
 * [block-editor](https://srd.wordpress.org/plugins/tags/block-editor/)[contact form](https://srd.wordpress.org/plugins/tags/contact-form/)
   [form builder](https://srd.wordpress.org/plugins/tags/form-builder/)[forms](https://srd.wordpress.org/plugins/tags/forms/)
   [webhook](https://srd.wordpress.org/plugins/tags/webhook/)
 *  [Advanced View](https://srd.wordpress.org/plugins/streamery-forms/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/streamery-forms/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/streamery-forms/reviews/)

## Contributors

 *   [ streamery ](https://profiles.wordpress.org/streamery/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/streamery-forms/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://ko-fi.com/streamery)