Cornerstone Forms Overview
This incredible plugin will allow you to build forms and interactive experiences that has to be seen to be believed.
Product
Cornerstone Forms will help you build everything from contact forms to powerful web apps. There are dozens and dozens of actions, form templates, and capabilities brought to you in this feature filled plugin.
Access
Once purchased, go to the Max section of the validation page and follow the prompts to install and activate. Note, you must be on Pro 6.8+, X 10.8+, and Cornerstone 7.8+.
@TODO
Support
Have product questions? A member of the team is happy to help in our support forum.
Creating your First Form
Start by inserting a Form element onto your page. When added, it will automatically include a sample Input and an Email Action action to give you a working starting point.
From there, build out your fields inside the Form. For a basic contact form you might add:
- A
Textinput for the user's name - An
Emailinput for their email address - A
Textareafor their message
Each input has a Name control — this is the key used to reference the submitted value in actions and Dynamic Content (e.g. a name of email lets you use {{dc:form:data key="email"}} in an Email Notification action).
Once your inputs are in place, add a submit button. The Input element set to type Submit works well, as does a standard Button element with the type set to Submit.
Finally, configure your Actions. Actions are what run when a form is successfully submitted. The Email Action action is the most common starting point — it lets you send the form data to any email address. Actions are added as child elements in the Actions tab of the Form element. See our Actions guide for the full list of what's available.
Save the page and test your form. If something doesn't submit as expected, check that each input has a unique Name and that your action is configured correctly.
Inputs
Managed Parameters
You can utilize a number of managed parameter types.
Input Types
form-input-type will give you a list of input types to be used by the Input element.
{
"type": {
"type": "form-input-type"
}
}Autocomplete Types
form-autocomplete can get you a list of Autocomplete types to be utilized by a number of different input types.
{
"autocomplete": {
"type": "form-autocomplete",
"initial": "email"
}
}Security
Your form security is going to be based on what your form is doing. For basic contact forms you might want anybody included non logged in users to submit a request. For more admin based forms you will probably
Captchas
The quickest way to deal with spam is to setup a Captcha. We offer Cloudflare Turnstile, Google reCAPTCHA, and HCaptcha as possible for solutions. See our guide here on how to get started with Captchas.
Validating
Validating data is the quickest way to make sure you aren't sifting through bad entries. Validating can happen on the frontend to limit requests to your server and validations will always happen on your server to prevent bad actors. Checkout our guide on Validations here.
Limiting Forms to Certain Users
Our conditions offer the easiest way to limit forms to specific users. You can limit to specific users or even an entire role. Checkout our guide on conditions here.
Conditions offer a wide variety of other options too. You could limit a form to a specific time frame or a certain number of Form entries.
Place any condition on the Form element and that form will not show up and will not process when it does not meet the condition requirements.
Filtering
While Cornerstone Forms works great for general purpose Form processing. It also works spendidly for creating Archive filters. The best part is you can either utilize the Archive Layout and filter based on the default query. You can also setup a new page and filter any Looper.
For all filter it is recommended to use GET as the action for Form. Using AJAX can also ensure that users get a faster experience with less page loads. Be sure to read our section on AJAX on this page.
Below is a screenshot of the WooCommerce Filtered Archive template.

Filtering an Archive
First, be sure you understand how to setup a Archive Layout. When you setup a Looper Consumer on an Archive, you will be looping over the items that are supplied by the default WordPress query. The benefit of this approach is that you do not need to configure any looper providers. However you will be limited by how the default WordPress query works, and will need to use the same input names that are expected by WordPress.
Now let's filter based on a Posts category. We are going to use the Checkbox List element in checkbox mode so we can filter based on multiple categories. The WordPress query argument name for filtering categories is category_name. Because this query expects the category names to be separated by a comma (,), we will use set the Return Type controls value to Delimiter on the Checkbox List element. Below is a screenshot for our Checkbox List element.

Now we'll setup the options. In the Checkbox List we'll add in an option child. In this Element we can setup a Looper Provider based on All Terms. We can limit the Taxonomy to Categories and with this. We will also turn on Looper Consumer for this very same element so it loops the terms as different options. In the Value and Label controls of the Option element we will be using Looper dynamic content to grab certain fields. We will be using slug for the Value and title for the Label.
When it's put all together we get a list of checkboxes we can filter our archive.
Filtering a Custom Looper
While filtering a looper can be a more manual process, doing so can give you the power to loop anything. The process for setting up the form and inputs will be the same, but you'll have an additional step of utilizing Dynamic Content in your Looper Provider. Under Dynamic Content > Form > Data you can insert your form input data into whatever Looper you are using.
See something inaccurate? Let us know