DOCUMENTATION
Revolutionary Forms Documentation
Build powerful, conversion-ready forms with a true drag-and-drop builder, conditional logic, multi-step flows, spam protection, an entries dashboard, and a complete developer API, all without leaving WordPress.
Getting started
Install the plugin and ship your first form in five minutes.
Field types
Every field from single-line text to file uploads and smart tags.
Conditional logic
Show, hide or fire elements based on what a user enters.
Entries dashboard
Search, filter, export and manage every submission.
Notifications
Route emails with smart tags and conditional logic.
Webhooks & hooks
Push submissions to external services and extend the lifecycle.
Introduction
Revolutionary Forms is a complete form-building solution for WordPress. It pairs a visual, drag-and-drop builder with a serious back-end: every submission is stored as an entry in your database, routed through configurable email notifications, screened for spam, and optionally pushed to external services via webhooks.
Whether you need a simple contact form or a multi-step application wizard with file uploads and conditional branching, you build it the same way, by dragging fields onto a canvas and configuring them in the sidebar. Forms are then placed anywhere on your site through the [revolutionary_form] shortcode or the dedicated Gutenberg block.
Tip: Every form you build is reusable. Place the same form on multiple pages, entries are tracked together, and you can filter the source page later in the Entries dashboard.
Installation
Revolutionary Forms installs like any standard WordPress plugin. You can install it from the bundled .zip archive or directly from the Revolutionary Plugins hub.
- Upload the plugin. In your WordPress admin, go to Plugins -- Add New -- Upload Plugin and choose
revolutionary-forms.zip. Click Install Now. - Activate. Once installed, click Activate. A new Revolutionary Forms menu appears in the admin sidebar.
- Run the setup wizard. On first activation the wizard creates the entries database table and lets you set a default notification email and sender name. You can change these later under Forms -- Settings.
- Verify your license. Paste your license key under Forms -- Settings -- License to unlock automatic updates, premium fields, and priority support.
Heads up: File uploads require a writable wp-content/uploads directory. If your host locks down upload permissions, the file-upload field will be disabled until the path is writable.
Your first form
Let's build a working contact form and put it on a page. The whole process takes about two minutes.
- Create a new form. Go to Forms -- Add New. Start from the blank canvas or pick the Contact template to get Name, Email, and Message fields pre-placed.
- Add fields. Drag fields from the left palette onto the canvas. Click any field to edit its label, placeholder, default value, and validation in the right-hand settings panel.
- Configure notifications. Open the Notifications tab and confirm the admin email. Add a second notification to auto-reply to the person who submitted, using the
{field:email}smart tag as the recipient. - Set the confirmation. Under Confirmations, choose a success message, a redirect URL, or display another page's content after submit.
- Publish & embed. Click Save, copy the generated shortcode, and paste it into any page or post. Preview the page, your form is live.
That's the full loop: design, notify, confirm, embed. Everything else in this guide builds on these same four tabs.
Field types
Revolutionary Forms ships with a comprehensive set of field types. Standard fields are available on every license; fields marked Pro require an active license. Each field exposes its own settings in the builder sidebar.
| Field | Description | Key settings |
|---|---|---|
| Single Line | A standard one-line text input for names, subjects, and short answers. | Placeholder, max length, required, input mask |
| Paragraph | A multi-line textarea for messages and longer responses. | Rows, max length, required |
| Validated email input; pairs with auto-reply notifications. | Required, confirm-email pairing | |
| Number | Numeric input with range and step constraints. | Min, max, step, required |
| Dropdown | Single-select list, optionally searchable for long option sets. | Options, default, searchable, required |
| Checkboxes / Radio | Multi-select or single-choice option groups. | Options, layout, required |
| Date / Time | Calendar and time pickers with format and range limits. | Format, min/max date, disable weekends |
| File Upload (Pro) | Drag-and-drop uploads stored as entry attachments. | Allowed types, max size, multiple files |
| Hidden / Smart Tag | Captures context (page URL, user ID, UTM params) invisibly. | Smart-tag source, default value |
| Section & HTML | Layout helpers, headings, dividers, and custom HTML blocks. | Content, column width |
Every field also supports a CSS class setting and an admin label, so you can keep the front-end label customer-friendly while showing a clearer name in the Entries dashboard and notifications.
Conditional logic
Conditional logic lets fields, sections, notifications, and confirmations show, hide, or fire based on what a user enters. Rules are evaluated live in the browser as the form is filled out, no page reload required.
Each rule is a simple when / matches / value triplet, combined with any (OR) or all (AND) logic. For example: show the "Company name" field only when "Inquiry type" is "Business".
Logic is non-destructive: hidden fields are removed from submission entirely, so they never trigger validation and never appear in the saved entry. You can also chain logic across multi-step forms, for example, skip an entire step when a user selects "No" on a qualifying question.
Multi-step & file uploads
Long forms convert better when broken into digestible steps. Add a Page Break field anywhere on the canvas to split the form into pages, complete with a progress bar, Previous/Next buttons, and per-step validation.
- Progress indicator: choose a bar, numbered steps, or step titles.
- Per-step validation: users cannot advance until the current step's required fields pass.
- Save & resume (Pro): logged-in users can save a draft and finish later.
The File Upload field accepts drag-and-drop or click-to-browse. Restrict by extension and size, allow multiple files, and choose whether uploads are stored privately or in the standard media library. Uploaded files appear as download links on the entry and can be attached to notification emails.
Security note: Private uploads are stored outside the publicly guessable media path and served through a signed, expiring URL. Never raise the allowed-types list to include executable formats such as .php or .exe.
Entries dashboard
Every submission is saved as an entry under Forms -- Entries, even if email delivery fails, so you never lose a lead to a misconfigured SMTP server. The dashboard gives you a searchable, filterable table of all submissions per form.
- Search & filter by any field value, date range, spam status, or source page.
- Star, mark read/unread, and add private notes to organize your pipeline.
- Bulk actions -- delete, mark as spam, or resend notifications for selected entries.
- Export to CSV for any filtered view, ready for spreadsheets or your CRM.
- Entry detail view shows every submitted value, uploaded files, the user's IP and user agent, and a full notification log.
Entries respect WordPress capabilities. By default only administrators can view them; grant the revforms_view_entries capability to give editors or a custom role access.
Email notifications
Notifications are the emails sent when a form is submitted. A single form can fire any number of notifications, each with its own recipients, subject, and body, perfect for routing different inquiry types to different teams while sending the visitor an instant auto-reply.
Compose messages with smart tags that resolve to submitted values, such as {field:name}, {field:email}, {all_fields}, {entry:date}, or {page:url}. Conditional logic can suppress or trigger a notification based on field values, for example, only email the sales team when "Budget" exceeds a threshold.
Deliverability tip: For reliable inbox placement, send through an authenticated SMTP provider rather than the default PHP mailer, and set the notification From address to a domain you control. Use the visitor's email in Reply-To, not From.
Spam protection
Revolutionary Forms layers several anti-spam defenses, all of which are invisible to legitimate users:
- Honeypot field -- a hidden trap field that bots fill in and humans never see. Enabled by default.
- Time trap -- submissions completed implausibly fast (under a configurable threshold) are flagged.
- Keyword & IP blocklist -- reject submissions containing banned words or originating from blocked addresses.
- CAPTCHA integrations -- Google reCAPTCHA v2/v3, hCaptcha, and Cloudflare Turnstile, configured globally under Forms -- Settings -- Spam.
- Akismet -- when the Akismet plugin is active, entries are scored and suspicious ones are quarantined to the Spam view rather than deleted.
Flagged submissions are never silently dropped, they land in the Spam tab of the Entries dashboard so you can review false positives and restore them with one click.
Shortcode & block
Embed a form anywhere using the shortcode. The only required attribute is the form id, which appears in the form list and the builder URL.
// Basic embed, render form #123
[revolutionary_form id="123"]
// Override the title and pre-fill a field via the URL
[revolutionary_form id="123" title="false" field_values="email=hello@acme.com"]
In the block editor, search for "Revolutionary Form", insert the block, and pick a form from the dropdown, you'll see a live preview right in the canvas. The block exposes the same options as the shortcode through the inspector sidebar.
You can also render a form from PHP in a template using the helper function:
if ( function_exists( 'revforms_render' ) ) {
echo revforms_render( 123, [ 'show_title' => false ] );
}
Webhooks
Webhooks push each submission to an external URL in real time, letting you connect Revolutionary Forms to Zapier, Make, n8n, a CRM, or your own endpoint. Configure them per form under the Webhooks tab: set the destination URL, HTTP method, format (JSON or form-encoded), and optional secret header for verification.
When an entry is created, the plugin sends a POST request with the full submission payload. A typical JSON body looks like this:
{
"form_id": 123,
"entry_id": 4821,
"created_at": "2026-06-24T14:32:09Z",
"fields": {
"name": "Dana Reyes",
"email": "dana@acme.com",
"message": "Interested in the Pro plan."
}
}
The request includes an X-RevForms-Signature header, an HMAC-SHA256 of the body using your webhook secret, so your endpoint can verify authenticity. Failed deliveries are retried with exponential backoff up to five times and logged on the entry.
Hooks & filters
Developers can extend nearly every part of the submission lifecycle with WordPress actions and filters. Use the revforms_field_value filter to transform a value before it is saved or sent, here we uppercase a reference code:
add_filter( 'revforms_field_value', function( $value, $field, $form_id ) {
if ( 'ref_code' === $field['name'] ) {
$value = strtoupper( trim( $value ) );
}
return $value;
}, 10, 3 );
Use the revforms_before_send_notification action to run custom logic, logging, CRM sync, or conditionally cancelling an email, just before a notification is dispatched:
add_action( 'revforms_before_send_notification', function( $notification, $entry, $form ) {
if ( ! empty( $entry['is_spam'] ) ) {
$notification->cancel();
return;
}
my_crm_create_lead( $entry['fields'] );
}, 10, 3 );
Other commonly used hooks include revforms_after_entry_saved, revforms_validate_field, revforms_form_fields (register custom field types), and revforms_confirmation_message.
Troubleshooting
Most issues come down to email delivery or caching. Work through these first:
- Emails not arriving: the entry is saved even when mail fails, check Forms -- Entries. If entries exist but no email, install an SMTP plugin and authenticate your sending domain.
- Form not displaying: confirm the shortcode
idmatches an existing, published form, and that no page cache is serving a stale version. Clear your cache after editing a form. - AJAX submit hangs: usually a JavaScript conflict from another plugin or theme. Check the browser console and temporarily disable other plugins to isolate it.
- Uploads fail: verify the file type is in the allowed list, the size is under both the field limit and your server's
upload_max_filesize, and thatuploadsis writable. - Spam getting through: enable a CAPTCHA and the time trap, and add offending keywords or IPs to the blocklist.
Tip: Enable Forms -- Settings -- Logging to record submission and delivery events. The log captures the exact reason a notification or webhook failed, which makes most issues a two-minute fix.
FAQ
Frequently asked questions
No. You can create unlimited forms and store unlimited entries. Entries are kept in your own WordPress database, so the only practical limit is your hosting storage.
Yes. Forms submit over AJAX and use a fresh security nonce per render, so they remain compatible with full-page caching. If you cache aggressively, exclude the nonce endpoint or enable the built-in cache-safe mode under Settings.
The importer reads exported form definitions from several popular form plugins and recreates the fields, notifications, and basic logic. Complex custom code and third-party add-ons are not migrated automatically.
Yes. You can disable IP/user-agent storage, set automatic entry retention/auto-delete windows, add consent checkboxes, and the plugin integrates with WordPress's native data export and erase tools.
No, the core builder, standard fields, conditional logic, entries, notifications, and spam protection are fully functional. Pro unlocks file uploads, save & resume, premium fields, and priority support.
Was this helpful?
Browse the rest of the documentation or see what is included in each plan.
Back to all docs