Create Professional, Mobile-Friendly, Accessible Forms for WordPress – For Free!
WS Form LITE is a powerful, feature-rich form builder that lets you create fully styled, responsive, and accessible forms. Unlike other plugins, WS Form LITE includes premium-quality features at no cost, such as unlimited forms, customizable styling, submission exporting, and robust anti-spam protection. Perfect for websites of all sizes, WS Form LITE empowers you to build smarter forms with ease.
Choose from single-click templates or build your own form for WordPress using the unique drag and drop form editor.
Create Beautiful Forms with Ease
WS Form LITE includes an incredibly powerful and intuitive form styler, enabling you to design stunning forms directly within WordPress. Whether you’re matching your site’s branding or building custom layouts from scratch, WS Form’s Styler gives you full control over the appearance of your forms, no coding required.
WS Form includes a powerful, multi-layer spam protection system to block unwanted submissions automatically. You get both built-in defenses and integrations with leading anti-spam services.
WS Form was built with enterprise level performance in mind. WS Form does not interfere with the loading of other page or post content on your website and isolates submission records to ensure as your website grows your page load speed is not affected.
All form code is HTML 5 compliant and if your website theme uses a framework such as Bootstrap or Foundation WS Form automatically outputs code to suit that framework. This means your form loads as fast as possible without any unnecessary overhead typically found in other form plugins for WordPress.
Click here to learn more about the WSForm performance features.
Extensive Field Types
WS Form comes complete with all the field types you need to build a contact form. Upgrade to WS Form PRO to take advantage of all the form field types available, including:
WS Form PRO comes with a unique debug console that provides you with rapid, form population capabilities (perfect for form testing!), as well as comprehensive event and error logging.
3rd Party Use
WS Form includes the following third party components:
WS Form uses the following API endpoints to provide services within the plugin:
Google reCaptcha
https://www.google.com/recaptcha/api/siteverify
This endpoint is called when a form is submitted to validate a reCaptcha field. Terms of Use / Privacy Policy
hCaptcha
https://hcaptcha.com/siteverify
This endpoint is called when a form is submitted to validate an hCaptcha field. Terms of Use / Privacy Policy
Turnstile
https://challenges.cloudflare.com/turnstile/v0/siteverify
This endpoint is called when a form is submitted to validate a Turnstile field. Terms of Use / Privacy Policy
WS Form – Knowledge base popular articles
https://wsform.com/plugin-support/knowledgebase_content.php
This endpoint is called when the support sidebar is opened to show popular knowledge base articles. Terms of Use / Privacy Policy
WS Form – Knowledge base search
https://wsform.com/plugin-support/knowledgebase_search.php
This endpoint is called when a knowledge base search is performed in the support sidebar to return knowledge article results. Terms of Use / Privacy Policy
WS Form – Support ticket requests
https://wsform.com/plugin-support/contact.php
This endpoint is called when a support ticket request is submitted in the support sidebar to create the support ticket and return the ticket ID. Terms of Use / Privacy Policy
WS Form – Deactivation feedback requests
https://wsform.com/plugin-support/deactivate_feedback.php
This endpoint is called when deactivation feedback is submitted to provide your feedback to WS Form. Terms of Use / Privacy Policy
WS Form – Select, checkbox and radio presets
https://cdn.wsform.com/plugin-support/preset.json
This endpoint is called when the preset option is selected for a select, checkbox or radio field to return the available presets and preset data (e.g. List of countries). Terms of Use / Privacy Policy
Bug Fix: aria-disabled attribute on repeatable section navigation
1.8.164
Added: Block pattern library
Bug Fix: Tab rendering if first tab hidden
1.8.163
Added: Sidebar changes now auto save if you switch to a different sidebar, tab, section or field
Added: Updated version numbers on external enqueues
Added: Submission form selector now shows ‘0 records’ instead of disabling the option
1.8.162
Bug Fix: Conversational field change events limited to current section to avoid form jumping if dynamic field changes in non-focussed sections occur
1.8.161
Added: Improved accessibility for repeatable section icons
Added: WordPress 5.9 uses jQuery UI 1.13.0 which has a positioning bug when dragging fields to the form (https://github.com/jquery/jquery-ui/issues/2001). Version 1.12.1 of jQuery UI sortable is now bundled with WS Form to overcome this issue.
1.8.160
Added: DropzoneJS thumbnail image size filter hook: wsf_dropzonejs_image_size($size). $size must exist in get_intermediate_image_sizes()
Added: Improved language on welcome screen framework selection step
Bug Fix: Conditional logic data grid column mapping
1.8.157
Added: New ‘Run WordPress Hook’ filter returns can now trigger form errors. See: https://wsform.com/knowledgebase/run-wordpress-hook/
Added: Additional no cache headers and Litespeed no cache directives for save, submit requests
1.8.156
Bug Fix: Date >=, <= comparisons in conditional logic with EU date formats
1.8.155
Added: Google Address map assignment initial zoom setting
Added: Improvement to tab ARIA attributes
1.8.154
Added: NONCEs on public forms where a user is not logged are now optional to allow for increased cache timeouts
1.8.153
Added: Various accessibility improvements (ARIA tags and text contrast)
Added: Improved min/max file size error messages
Bug Fix: Repeater deduplication between fields
1.8.152
Added: Improved reset and clear functionality for file fields
1.8.151
Bug Fix: SVG URL encoding issue for select down arrows
1.8.150
Added: Support for legacy WordPress date functions (WP < 5.3)
Bug Fix: Conditional logic numeric checks fixed for EU number formats
1.8.149
Bug Fix: Field change events now initialized before initial calculations fire
1.8.148
Added: wp_mail errors now include PHPMailerException error message
Added: Media (attachment) post type to Post data source. Added ‘inherit’ post status so that attachments can be listed.
Added: Running the ‘Save Submission’ action via conditional logic now returns a submission hash
Added: Improved translation strings. Moved translations out of constants.
Added: Obscured license key in system report
1.8.147
Added: Support for repeat label hiding on H1 – H6 as well as legend
Added: Improved accessibility markup for repeatable section icons
Bug Fix: Section delete variable clean up
Bug Fix: Word and character count validation if help text empty
1.8.146
Bug Fix: Database action auto archiving feature (cron action)
1.8.145
Bug Fix: Welcome screen fixes for PC version of Chrome
1.8.144
Bug Fix: Submission status filter links
1.8.143
Bug Fix: Term lookup cache in post data source bug if term removed
Bug Fix: WooCommerce price meta data now converted to floating point
.= 1.8.142 =
* Bug Fix: Calculations from select fields were processed as currency
* Bug Fix: Rounding error in source field for calculations if commas used as decimal separator
1.8.141
Bug Fix: Conversational URL link
1.8.140
Added: Support for WooCommerce product meta data (Post management add-on)
Bug Fix: Debug populate number fields with step of ‘any’
1.8.139
Added: New functionality ready for Amazon S3 integration for file fields
Added: Form search
Added: Third parameter to #field_date_offset variable to allow formatting of output
Added: wsf_form_create_meta_data($meta_data) filter that allows meta data to be edited prior to form being created
Added: Cost by area template
1.8.138
Added: intl-tel-input support for phone field. https://intl-tel-input.com/. Check ‘Enable’ under ‘International Telephone Input’ in the basic tab to use it.
1.8.137
Changed: Server and blog date formats with upgraded WordPress date/time methods
1.8.136
Changed: Improved third party custom field plugin detection and add-on initialization
1.8.135
Added: #field_date_offset(field_id, offset_in_seconds) variable. Returns a date field with an offset added or subtracted in seconds.
Changed: Duration tracking is now switched off by default
Bug Fix: PHP 8 fix in Divi module
1.8.134
Bug Fix: Duration cookie no longer set if duration tracking disable
1.8.133
Bug Fix: Table prefix on Post data source when retrieving terms
1.8.132
Added: ‘Use URLs for file fields’ setting in ‘Push to Custom Endpoint’ action
Bug Fix: Double quote detection in variable attributes
1.8.130
Added: New hCaptcha field
Changed: Performance improvement on change triggering for cart detail fields
1.8.129
Added: Migration from Gravity Forms 2.5 now supports column widths
Added: Ability to use #field to fields outside a repeatable section in #section_rows_start … end
Bug Fix: Migrate tool submissions import meta data
Bug Fix: Meta Box checkbox issue in repeaters
1.8.128
Added: Form level Google Analytics events
Added: gtm.formSubmit Google Tag Manager Form Submission trigger support
Added: Change event fired when Google Address fields populated
1.8.127
Added: Latitude and longitude mapping for the Google Address field
Bug Fix: Parameter ordering issue for GA tracking objects
1.8.126
Change: Improved detection of custom field plugins in multi-site environments
Bug Fix: Google Analytics event tracking for ga contained in tag manager
Bug Fix: Meta box repeater (group) fields not recognized in field mapping
1.8.125
Added: New Google Address field allows you to auto populate address fields from a Google Places Autocomplete API search
1.8.124
Added: Performance improvements with #calc and other price related calculations
1.8.123
Added: New filter wsf_action_email_email_validate($valid, $email) added for filtering unwanted email addresses
1.8.122
Added: Updated option checking in Meta Box and ACF classes
Bug Fix: Dedupe value scope processing issue
1.8.121
Added: Increased length of form, tab, section and field labels to 1024 characters
1.8.120
Bug Fix: Tab validation misreported valid email address if field was not required
1.8.119
Added: Toolset version check to ensure latest public functions are available
1.8.118
Added: User ID set to current user ID when elements cloned in admin
1.8.117
Added: Improved Elementor class declaration
Added: Improved SVG background image encoding in skin CSS
Bug Fix: HTML encoded labels for third party form selectors
1.8.116
Bug Fix: WooCommerce class PHP 8 compatibility
1.8.115
Added: Toolset integration support for Post Management (1.4.0) add-on
Added: Toolset integration support for User Management (1.4.0) add-on
Added: Toolset field option data source
Bug Fix: Mouseover event on radio fields
Bug Fix: File count conditional logic when using file fields in repeaters
1.8.114
Added: Improved data sources so that column names retained but rows cleared on save
1.8.113
Added: Ability to filter data source terms by those checked on a post
1.8.112
Added: Support for conditional logic mouse events on select2 elements
1.8.111
Added: Email field allow / deny values with wildcard (e.g. Allow *@wsform.com). Found in ‘Advanced’ tab.
1.8.110
Added: Variable parsing on email header keys and values
Bug Fix: Submission count recalculated when record status set to trash
1.8.109
Added: Ability to use fields that return multiple values (e.g. checkboxes) as #field in email action ‘To’ setting
Added: Ability to use variables with attributes embedded in #if statements
Added: Improved z-indexing in admin
Added: Improved time function handling per WordPress recommendations
1.8.108
Added: Support for multiple textarea fields configured as type HTML
Added: Reset data grids if a field is saved with a data source selected to minimize form data size
Bug Fix: Cascade / AJAX select fields with no group data caused warning
1.8.107
Added: URL element added to files in custom API endpoint action
1.8.106
Bug Fix: Bulk Action Mark as Spam fixed
1.8.105
Bug Fix: Encryption class includes for initial key generation
1.8.104
Added: Conversion tracking now support variables
Bug Fix: Improvement to encryption class includes
Bug Fix: Elementor script and style enqueues
1.8.103
Added: Ability to enable optgroup using the WordPress hook data source
Added: CSS for tooltips in labels, e.g. Icon
Added: Applied wpautop to message action content
Added: Improved data picker styles
Added: Booking template in section library
Bug Fix: Password visibility toggle
Bug Fix: Updated email regex pattern throughout to support new TLD’s
Bug Fix: Inline date picker
1.8.102
Added: Post statuses data source
Bug Fix: Lower track on range slider was not rendering if #value was missing from help setting
1.8.101
Added: wsf_submit_clear_meta_filter_keys filter (Used for new feature in post management add-on version 1.3.2)
Bug Fix: Taxonomy list in post data source
1.8.100
Added: Support for hidden sections in conversational forms
Bug Fix: Improved Meta Box field lookups to handle meta boxes assigned to more than one post type
1.8.99
Added: Ability to self reference field when using #field in labels, placeholder and help
Bug Fix: Bug fix on conditional logic setting value using #field in repeatable section
1.8.98
Added: Performance improvement on clearing select fields with conditional logic
Bug Fix: Save Submission field filtering
Bug Fix: Select conditional logic on load with AJAX cascading
Bug Fix: Repeatable sections in conversational forms now highlight all rows
1.8.97
Added: Meter field type
Added: New section templates
Bug Fix: Various CSS fixes
Bug Fix: Data grid enter key press fix
1.8.96
Bug Fix: Elementor pop-ups
1.8.95
Added: Support for forms in preview mode in Elementor
Added: Row select value support for price select fields
Bug Fix: Pods Yes/No field data grid rows
1.8.94
Added: Improvements to functions.php for later PHP versions
Changed: Behavior of rating field adjusted so that conditional logic does not fire on input
1.8.93
Added: Cascading filter column comma separated value setting
1.8.92
Added: LiteSpeed cache support
Added: Notion field ID support in sidebar select fields
1.8.91
Added: #seconds_epoch_midnight client-side variable returns seconds elapsed since Unix Epoch up until the closest previous midnight
Bug Fix: Sidebar repeater select options were not disabling if value contained forward slashes in value
Bug Fix: Select fields configured to use Select2, multiple and tagging enabled were no appearing in #field variables server side
1.8.90
Added: Support for comma separated values in cascading fields
Added: Hide Child Terms options in Terms data source (Only returns terms with a parent ID of 0)
Added: Automatic column mapping on ‘Get Data’ for data sources
Bug Fix: Data source save on sidebar conditional processing
1.8.89
Added: Added checks to ensure Dropzone and Select2 JavaScript libraries are installed before initializing them
1.8.88
Added: Improved check for Pods 2.8 Beta get_groups method
1.8.87
Added: Additional support for Pods 2.8 Beta
Bug Fix: Dynamic data source update when form submitted
1.8.86
Added: WordPress Filter Hook data source
1.8.85
Bug Fix: Improved client side HTML encoding
1.8.84
Added: Pods integration support for Post Management (1.3.0) add-on
Added: Pods integration support for User Management (1.3.0) add-on
Added: Pods field option data source
1.8.83
Added: wsf-steps-checks class for adding checks to styled tabs
Added: Updated to GPLv3 license
Bug Fix: Fixed invalid feedback reset on field focus
1.8.82
Added: Improved performance on DropzoneJS uploads
Bug Fix: Modal CSS duplication removed
1.8.81
Added: ‘Exclude From Cart Total’ setting on Price, Price Select, Price Checkbox, Price Radio and Price Range fields types. This excludes those fields from the e-commerce calculations so that they can be used for other functionality such as #calc.
Added: wsf-steps, wsf-vertical form wrapper classes for WS Form framework for tab styling
Added: wsf-sticky form wrapper, section wrapper and field wrapper classes for WS Form framework
Added: Tab accessibility improvements
1.8.80
Bug Fix: select_option_text, checkbox_label and radio_label compatibility with repeatable sections
1.8.79
Added: Placeholder option for Select2 with multiple selected
Added: License key now obscured after it is entered
Bug Fix: Select2 rendering
1.8.78
Changed: Revised #post* variables for performance
1.8.77
Added: Data export request containing registered user data
1.8.76
Bug Fix: Field value form scope for #field
Bug Fix: $submit_object on wsf_submit_field_validate
Bug Fix: Data export request
1.8.75
Added: Ability to hide reCAPTCHA in tabs, sections at field level
Bug Fix: Tab Google Analytics event firing
1.8.74
Bug Fix: Function compatibility issue with WooCommerce extension
1.8.73
Added: Multiple choice on Select, Checkbox and Radio IF conditions (OR logic)
Added: Round robin recipient logged in email action log on each submission
1.8.72
Added: Option in email action to include links to file uploads and signatures
Added: CSV export now includes full paths to file upoads and signatures
Changed: E-Commerce status column in CSV export changed from ‘Status’ to ‘Order Status’ to avoid duplicate column name
Changed: On submission view, signatures now displayed with preview and download icons to match file upload fields
1.8.71
Added: New functions: wsf_form_get_form_object & wsf_form_get_form_label
1.8.70
Bug Fix: ACF data source finding choices in grouped or repeater fields
1.8.69
Added: WordPress 5.8 compatibility testing
Added: PHP 8 compatibility testing
Added: wp_upload_dir known WordPress bug fix
1.8.68
Added: Submissions CSV export system now builds in chunks if records exceed 500 to avoid timeouts
Added: Submissions CSV export system now zips CSV file if it exceeds 1/2 MB in size for convenience
1.8.67
Added: Implemented fix for range slider browser bug
1.8.66
Added: #calc / #text prioritizes attribute changes before default value changes
Changed: #calc / #text numeric values changed to 12 decimal point precision
1.8.65
Added: ACF fix on LITE
1.8.64
Added: Meta Box integration support for Post Management (1.2.0) add-on
Added; Meta Box integration support for User Management (1.2.0) add-on
Added: Meta Box field option data source
Added: Improved wpautop support throughout
Added: New conditional logic for form submit and save success
Bug Fix: Repeater column toggle in sidebar on row add
Bug Fix: Wildcard file accept
Bug Fix: Bootstrap 5 tabs
Bug Fix: Checkbox fix in customize
Bug Fix: Conversation form made PRO
1.8.63
Added: Hierarchy support for terms data source (Display as Hierarchy setting)
1.8.62
Added: #calc / #text support for min / max field attributes
Added: Min / max support for price fields in conditional logic
1.8.61
Bug Fix: Progress bar assigned to tabs
1.8.60
Added: ACF field validation (filter: acf/validate_value) for post and user management actions
Added: ACF oEmbed field type support
Changed: Code optimization in public.js
Bug Fix: Tab click events in conditional logic
1.8.59
Bug Fix: Form preview rendering in Gutenberg
Bug Fix: Field encoding post management populate values
1.8.58
Changed: Currency symbols to match WooCommerce
1.8.57
Bug Fix: Form submission limit
1.8.56
Bug Fix: Message action delay
1.8.55
Added: Change to placeholder CSS on inside field label positioning
Changed: Bricks element updated due to function names changing in Bricks theme core
1.8.54
Added: Hovering over tabs, sections and fields in the layout editor with the conditional logic sidebar open now highlights any conditional rows that contain those form elements
1.8.53
Bug Fix: Required span on calculated labels
Bug Fix: Calc firing on repeatable section row count changes
1.8.52
Added: Error logging on invalid feedback client side action
1.8.51
Added: Bootstrap 5 launch compatibility checks
1.8.50
Bug Fix: Conversational style dequeuing
1.8.49
Bug Fix: #email_tracking variable in email templates
1.8.48
Added: Conversational forms (Beta)
Changed: PRO licensing
Bug Fix: Numeric value return on data sources pulling ACF meta data
1.8.47
Bug Fix: Initial CSS build error
1.8.46
Added: Server-side form validation hook (https://wsform.com/knowledgebase/custom-server-side-form-validation/)
Added: Performance improvements with CSS engine
Bug Fix: Form deletion
1.8.45
Added: Date field: Disabled days
Added: Date field: Disabled dates
Added: Date field: Enabled dates
1.8.44
Bug Fix: Visual editor CSS file path issue
1.8.43
Bug Fix: x_wp_nonce JS error
1.8.42
Added: RTL support for new compiled skin system
1.8.41
Bug Fix: Redirect URL parsing now uses text/plain method
1.8.40
Bug Fix: Select all fixed on data grids using dynamic data sources
1.8.39
Added: Suggested knowledge base articles on support contact form
Bug Fix: ACF numeric field value population in select, checkbox and radio fields
Bug Fix: Min / max date validation
1.8.38
Added: Improved default invalid feedback text by field type
Added: Improved appearance of legal field for Foundation framework
Bug Fix: Server date fix for certain JavaScript engines
1.8.37
Added: Name to section library (first name, last name)
Bug Fix: Applied pre_render filter to submit API call
1.8.36
Added: Round robin support for the Send Email action
Added: Box shadow customization
Added: Updated version of date time picker JS
1.8.35
Added: Support for #text and #calc containing #select_option_text
Bug Fix: #text on date fields
1.8.34
Changed: Improved and consolidated admin UI icons
Bug Fix: 0 values to ACF fields
1.8.33
Bug Fix: Minor bug fix for legacy PHP versions and autocomplete data
Bug Fix: Validation of dates with period separators fixed for certain JavaScript engines