Title: SPWForm
Author: SquaremanPixelWorksLLC
Published: <strong>August 30, 2026</strong>
Last modified: August 30, 2026

---

Search plugins

![](https://ps.w.org/spw-form/assets/banner-772x250.png?rev=3672080)

![](https://ps.w.org/spw-form/assets/icon-256x256.png?rev=3672080)

# SPWForm

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

[Download](https://downloads.wordpress.org/plugin/spw-form.0.2.8.zip)

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

 [Support](https://wordpress.org/support/plugin/spw-form/)

## Description

SPWForm is a mail form plugin for WordPress. You define each form in the admin screen,
place the generated shortcode on a page, and manage the mail settings — all without
writing PHP. If you have built forms with traditional WordPress mail-form plugins,
the shortcode-based workflow will feel immediately familiar.

Each form is managed as a private custom post type. You can build the form body 
with shortcodes for common fields, configure auto-reply and administrator notification
emails, and choose whether to use a confirmation step before sending.

#### Two ways to style your forms

SPWForm suits both newcomers and experienced developers:

 * Instant design — A ready-made sample form is included on a fresh install. Duplicate
   it, turn on “Use SPWForm standard styles,” and you get a clean, styled form out
   of the box with no CSS required.
 * Full design freedom — Leave “Use SPWForm standard styles” off, and no standard
   design is applied. Style the form entirely with your own CSS or theme to match
   any design — the traditional, hands-on approach experienced form builders are
   used to.

Either way, you can start from the bundled sample and adjust the fields, emails,
and validation to fit your site.

#### Main features

 * Form management screen in the WordPress admin.
 * Form output with `[SPWForm_scode key="FORM_ID"]`.
 * Field shortcodes for text, textarea, email, hidden, radio, checkbox, select, 
   and file upload fields.
 * Confirmation and completion flow support.
 * Auto-reply email and administrator notification email settings.
 * Custom validation rules for required fields, email addresses, matching fields,
   numbers, text types, URLs, postal codes, and phone numbers.
 * File upload support with configurable allowed file extensions.
 * Bundled structural and state safeguards for every form, plus an optional standard
   design loaded only on pages that render an enabled form.
 * Per-form completion message.
 * Optional separate input, confirmation, and completion URLs.
 * Noindex output for confirmation and completion pages when Step URLs are used.
 * Localized default sample forms for Japanese and English sites.

#### Supported field shortcodes

 * `[spwf_text]`
 * `[spwf_textarea]`
 * `[spwf_mail]`
 * `[spwf_hidden]`
 * `[spwf_radio]`
 * `[spwf_checkbox]`
 * `[spwf_select]`
 * `[spwf_file]`
 * `[spwf_back]`
 * `[spwf_submit]`
 * `[spwf_confirm]`
 * `[spwf_reset]`

#### Notes

SPWForm sends mail through WordPress’ `wp_mail()` function. Actual delivery depends
on your server and mail configuration. For reliable delivery, configure your site
and sender domain correctly, including SPF, DKIM, and DMARC where appropriate.

## Screenshots

[⌊Form edit screen.⌉⌊Form edit screen.⌉[

Form edit screen.

[⌊Mail settings screen.⌉⌊Mail settings screen.⌉[

Mail settings screen.

[⌊Validation settings and shortcode reference.⌉⌊Validation settings and shortcode
reference.⌉[

Validation settings and shortcode reference.

[⌊Completion message settings.⌉⌊Completion message settings.⌉[

Completion message settings.

## Installation

 1. Upload the plugin files to the `/wp-content/plugins/spw-form/` directory, or install
    the plugin through the WordPress Plugins screen.
 2. Activate the plugin through the Plugins screen in WordPress.
 3. Open the SPWForm menu in the WordPress admin.
 4. Create or edit a form.
 5. Copy the generated shortcode, such as `[SPWForm_scode key="123"]`.
 6. Paste the shortcode into the page where you want to show the form.

When the plugin is activated on a site with no existing SPWForm forms, it creates
one localized sample form.

## FAQ

### How do I display a form?

Create a form in the SPWForm admin screen, then place the generated shortcode on
a page:

    ```
    [SPWForm_scode key="123"]
    ```

Replace `123` with the form ID shown in the form edit screen.

### Can I use a confirmation screen before sending?

Yes. Add the back, submit, and confirm button shortcodes to the form body:

    ```
    [spwf_back value="Back"]
    [spwf_submit value="Submit"]
    [spwf_confirm value="Confirm"]
    ```

Use `tag="button"` on Back, Submit, Confirm, or Reset to render a `<button>` element.
Back, Submit, and Confirm remain submit controls; Reset remains a reset control.
For presentation, use the `class` attribute with CSS defined by your theme. User-
supplied `style` attributes are not rendered.

You can also configure separate Step URLs for input, confirmation, and completion
pages.

### Which file types can be uploaded?

The file field supports an `allow` attribute. Supported extensions include:

    ```
    jpg jpeg png gif webp pdf txt csv zip doc docx xls xlsx
    ```

If `allow` is omitted, image file types are allowed by default.

### Does SPWForm include spam protection?

Yes. The core plugin includes two spam defenses that work without any configuration:

 * A honeypot field that silently drops submissions made by automated bots.
 * Rate limiting that stops the same visitor from sending many messages in a short
   time (by default, up to 5 sends per 60 seconds).

These are enabled automatically. For stronger protection against targeted spam, 
add a CAPTCHA (reCAPTCHA is available in the Pro add-on).

Please note: because these defenses are enabled by default, visitors who submit 
many times in quick succession (for example, several people sharing one office/network
connection) may occasionally see a “please wait and try again” message. Developers
can adjust the limits with the `spwf/rate_limit/*` filters.

### Submissions are rejected with a security error. What should I check?

If the form page is served from a full-page cache (for example WP Super Cache, LiteSpeed
Cache, or a CDN), the security token embedded in the cached page can expire after
several hours, causing later submissions to be rejected. Exclude the form page from
full-page caching so each visitor receives a fresh page.

### How are uploaded files protected on nginx or other non-Apache servers?

Uploaded files are stored under `wp-content/uploads/spwform/`. These files are never
linked by a public URL: the core plugin uses them only as email attachments, and
the Pro add-on serves stored attachments through an authenticated admin request.
On Apache, a bundled `.htaccess` file blocks directory listing and direct access
to this folder.

Servers that do not read `.htaccess` (for example nginx) ignore this protection.
On such servers, add an equivalent rule to your server configuration to deny direct
web access to the folder. For nginx:

    ```
    location ^~ /wp-content/uploads/spwform/ { deny all; }
    ```

Adjust the path if your uploads directory is in a non-default location. Because 
these files are never linked publicly, denying direct access does not affect any
feature. File names are random and the folder cannot be listed, so this is a defense-
in-depth measure.

### Can I place multiple SPWForm forms on one page?

No. Placing more than one SPWForm form on the same page is not supported. Please
use one form per page.

### Where can I find documentation?

Documentation is available in the plugin admin screen. A Japanese guide is also 
available at:

https://studio.squareman.net/guide/spwform/

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

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

“SPWForm” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/spw-form/contributors)
for their contributions.

[Translate “SPWForm” into your language.](https://translate.wordpress.org/projects/wp-plugins/spw-form)

### Interested in development?

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

## Changelog

#### 0.2.8

 * Bundled the translation files and loaded the plugin text domain so the interface
   follows the site language. Official translate.wordpress.org language packs take
   precedence automatically once they are available.

#### 0.2.7.4

 * Resolved the legacy default-sample detection so an unmarked sample is looked 
   up once and cached in a dedicated option instead of rescanning every form on 
   each check. The one-time resolution reads forms in finite date-ordered batches
   and still selects the oldest form that exactly matches the default structure;
   the cache is rebuilt when forms are saved, deleted, or imported, or when the 
   default payload changes. Routine checks no longer scale with the number of forms.

## Meta

 *  Version **0.2.8**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/spw-form/) and [Japanese](https://ja.wordpress.org/plugins/spw-form/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/spw-form)
 * Tags
 * [contact form](https://wordpress.org/plugins/tags/contact-form/)[file upload](https://wordpress.org/plugins/tags/file-upload/)
   [form builder](https://wordpress.org/plugins/tags/form-builder/)[mail form](https://wordpress.org/plugins/tags/mail-form/)
   [shortcode](https://wordpress.org/plugins/tags/shortcode/)
 *  [Advanced View](https://wordpress.org/plugins/spw-form/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/spw-form/)