Forms are a fundamental part of many websites. Think of how many times you see forms everyday; like email subscription signups, questionnaires, contact form, guestbooks, event registrations, and so many more. Most forms require special code called "PHP" to receive the form data and send it to where it needs to go. Unfortunately some web hosting companies have very poor PHP support. This means you may not be able to use some of the form addons available for RapidWeaver. Form reliability is of paramount importance - a lot of website users won't tell you if your forms break!

So the Formulate stack was invented. The idea being that Formulate provides the basis to quickly construct attractive and accessible web forms in RapidWeaver, using drag and drop components. However rather than "chaining" you down into only using one type of form submission, Formulate gives you the choice of many.

If Formulate is configured to use Formbucket or Formspree, Formspark or SheetMonkey, the contact form data is sent through to one of these services. From here, you can either login to read the messages sent or have the messages forwarded onto a normal email address. And unlike a conventional PHP form, the email address messages are sent to does not need to be an address managed by the hosting company - you can just as easily have messages sent to a free Gmail, Outlook or Yahoo email address of your choosing. Or assign access for a client to login and view their messages. This really is quite a ground-breaking stack!

Formulate is perfect for quick and simple contact forms. It is not intended as a replacement to more heavy-weight and feature-rich solutions, like FormsPlus. However there are enough input types and customisable options offered in Formulate to help build any basic form. Formulate was primarily designed for users of ThemeFlood RapidWeaver themes (with Bootstrap support) but a custom styling option exists if you want to try and bend this stack to work with other themes and frameworks. A free trial version if provided for download.


This is a quick example showing the type of contact form Formulate can be used to create. This form is in 'test mode', so it will not send any actual messages in the current configuration. Note that the submit button only becomes active, once all mandatory (*) inputs are completed.
Please choose an enquiry type from the menu, that best describes why you are contacting us today.
* Required fields
In this example, the form was constrained to a maximum width of 800px using the free UsefulStack and the box shadow effect is achieved with the free Shady stack.

By default, Formulate is designed to be styled by a theme that includes Bootstrap. However there is a checkbox option that will let you set some custom styling for use in other themes. Parameters like the label colours, borders, rounded corners and submit button colour can be quickly amended. And as with many of our other stacks, there is additionally a huge amount of customisation feasible with custom CSS code.


Formulate is easy to get working in most webpages. In essence you can follow these steps:
  1. Once installed into Stacks and RapidWeaver, open your Stacks Library (on a Stacks page type).
  2. Drag and drop a copy of Forumulate into the webpage.
  3. With your mouse or touchpad, click the blue button to add input types to your form. Formulate supports lots of traditional form inputs and some much newer HTML5 input types. Each input type has its own settings.
  4. Give every input a sensible label (this is shown to the website user) and a unique name (shown in emails and form processing).
  5. Select the main Formulate stack to configure how and where messages should be sent. Some other options are also provided to customise the labelling of the form, your submit button and custom styling.
  6. Publish or export your website when done.

Online form processing services like Formbucket or Formspree, Formspark or SheetMonkey, require that you sign-in and setup an account on their websites first. Then you are given the appropriate keys or IDs, to use in Formulate. Each of these services have different costs and features available, so it's well worth researching them carefully to choose the one you think works best for you. Formulate does not include membership or technical support for these form processing services; the license fee for Formulate only covers support and updates for the Formulate stack itself.

If you like Formulate, but don't like the idea of sending form data to a third party, then another option is to use either the GET or POST submission types. These send your form data to another page or a script you can write to process the data. Obviously this does require suitable technical "knowhow" and coding to get working. But carries the advantage of letting you truly unlock your form data and do practically anything with it. Stacks like Builder could come in handy. Paid help is also available for coding and testing custom form processing scripts.

Sending messages using PHP Mail

Added by request of some users in the free version 1.4 update, Formulate now includes a basic mechanism for the sending of form data using 'PHP Mail' on your own web server. Therefore you no longer need to use a third-party mail forwarding service. PHP Mail is compatible with most web hosting companies, but not all. To test this, you need to do the following...
  1. Change the page file extension from .html to .php in the Page Inspector. If you previously published the page with a .html extension, this will require deleting.
  2. In the Formulate settings, set the Mail Processing to 'PHP Mail' in the dropdown menu.
  3. Within the settings shown, type the email address you want the form sent to. This must be an email address associated with the website domain (addresses like 'gmail' and 'hotmail' are much less likely to work). For multiple email addresses, separate each address with a comma.
  4. Provide an email subject. This helps the receiver know where the message has originated from and can be used to help filter messages being received.
  5. The name, email and post input names must match those you have setup in your form. The values collected from these form inputs are used to construct the email.
  6. Setup the failure and success redirects. These are where people are sent after the form is submitted. Adding query strings to the addresses like ?success=false and ?success=true offers excellent integration with free stacks like QueryDisplay, for displaying custom messages. It is possible to redirect to the same page Formulate is on, and have the success message popup and reset the form to be empty again.

The built-in 'honeypot' is invisible and will trap a vast majority of automated spam messages. Junk messages being sent by people manually completing your form cannot be stopped. It is possible to add another layer of protection using ReCAPTCHA, however the normal pitfalls of using this remain present.

Form data can be received in two formats. Strings (default) presents data in a 'pretty' human-readable format, with input names marked in bold and each piece of data on its own line. Whereas JSON sends the data as a plain text object, which can prove easier to process further.

The emphasis here is on simplicity; there is no fancy 'templating engine', as offered by other stacks. For some web servers, it can take several minutes between the form being sent and the email being received. Make sure you spell your email address correctly and review your spam / junk mail folders regularly for any missing messages!

If you are still encountering problems with PHP Mail not working on your web server, please consult with your hosting company. Only they can access your settings / error logs and advise you where things are going wrong. If you still cannot make it work, you will need to use one of the other mail handling services offered in Formulate. Do not buy Formulate if you cannot get the free trial version to work first.