=== 2ranq Forms === Contributors: 2ranq Tags: forms, contact form, form builder, conditional logic, multi-step Requires at least: 6.6 Tested up to: 7.1 Requires PHP: 7.4 Stable tag: 1.1.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Form builder with conditional logic, multi-step forms and file uploads. Every feature free, nothing locked behind a paywall. == Description == 2ranq Forms is a drag and drop form builder. Everything it does is free. There is no pro tier, no trial, and no feature that stops working after a while. **What it does** * Drag and drop builder with a live preview of your real form * 23 field types, including name, address, phone with per country checks, date, time, rating, ranking, picture choice, signature, password and file upload * Conditional logic: show or hide any field based on what was answered earlier * Multi-step forms with a progress bar and per step validation * File uploads with type, size and content checks * Entries stored in your own database, with their own screen in the dashboard * Email notification on every entry, with a reply address taken from the form * A Design tab with 45 ready made styles, and a setting for every colour, corner, space and button * 13 full width sections that wrap around a form, with heading, contact details and photo * Gutenberg block, Elementor widget and a plain shortcode * 29 ready made forms in nine groups: start here, contact, bookings and appointments, quotes and orders, applications step by step, verification and documents, support, sign ups and events, feedback and surveys. Seven of them are split into steps **Built to stay light** Nothing is sent to the visitor on pages that have no form on them. Forms use plain JavaScript, so jQuery is not loaded on your site because of us. No payment library ships inside the plugin. A page with a form loads about 8 KB of stylesheet and 6 KB of script, gzipped, and the sections stylesheet is a separate file that only loads on pages that use a section. **It works without JavaScript too** If scripts are blocked, every step is shown at once, every field is shown, and the form submits normally. The server checks the same rules either way, so nothing is lost and nothing slips through. **Your data stays yours** Entries are stored in a table in your own database and files in your own uploads folder. Nothing is ever sent to us: there is no account, no licence check and no usage report. Storing the visitor IP address can be turned off in the settings. The plugin can connect to a small number of outside services, but every one of them is switched off until you turn it on and enter your own keys. They are all listed under External services below, with what is sent and when. == External services == Out of the box this plugin does not connect to any external service. Nothing is sent to 2ranq at any point. The services below are optional: each one is off until you switch it on in the plugin settings and enter your own keys, and each one only sends data for the forms where you have enabled it. If you enable one of them, personal data from that form reaches that company, so say so in your own privacy notice. **Google reCAPTCHA** Used to stop automated spam, if you pick it as your spam check. The reCAPTCHA script (https://www.google.com/recaptcha/api.js) is loaded in the visitor's browser on every page that shows a protected form, which lets Google see the visitor's IP address and browser. When the form is submitted, the token from that widget and your secret key are sent from your server to https://www.google.com/recaptcha/api/siteverify to be verified. The answers typed into the form are never sent. Service provided by Google. Terms of service: https://policies.google.com/terms Privacy policy: https://policies.google.com/privacy **hCaptcha** Used for the same job as reCAPTCHA, for people who would rather not send their visitors to Google. The hCaptcha script (https://js.hcaptcha.com/1/api.js) is loaded in the visitor's browser on every page that shows a protected form, which lets hCaptcha see the visitor's IP address and browser. When the form is submitted, the token and your secret key are sent from your server to https://api.hcaptcha.com/siteverify to be verified. The answers typed into the form are never sent. Service provided by Intuition Machines, Inc. Terms of service: https://www.hcaptcha.com/terms Privacy policy: https://www.hcaptcha.com/privacy **Mailchimp** Used to add the person who filled in the form to one of your audiences. After an entry is saved, and only for a form where you have chosen Mailchimp, your server sends the email address from the entry, the name if the form has a name or text field, and any tags you set, to https://.api.mailchimp.com/3.0/lists//members, authenticated with your own API key. The person is added with the status "subscribed", so ask for their consent on the form itself. The data centre prefix comes from your key and the audience id is the one you enter yourself. Service provided by Intuit Mailchimp. Terms of use: https://mailchimp.com/legal/terms/ Privacy policy: https://mailchimp.com/legal/privacy/ **Slack** Used to post every new entry into a channel, so a team sees it without opening the dashboard. After an entry is saved, the form name and the submitted answers are sent to the incoming webhook address you paste into the settings, on hooks.slack.com. Nothing is sent until that address is entered. Service provided by Slack Technologies. Terms of service: https://slack.com/terms-of-service Privacy policy: https://slack.com/trust/privacy/privacy-policy **A webhook address of your own** Used to send the entry to any address you give, which is how people reach Zapier, Make, n8n or their own system. After an entry is saved, the entry is sent as JSON to the address you typed into the form settings: the entry and form ids, the form name, your site address, the time, and every submitted field. An optional secret of yours travels in an X-Ranq-Secret header. There is no fixed provider behind this one: the address is yours, so the terms and the privacy policy are those of whatever service you point it at. == Installation == 1. Upload the plugin folder to `/wp-content/plugins/`, or install it from your dashboard. 2. Activate it through the Plugins screen. 3. Open **2ranq Forms**, pick a template or start blank, and build your form. 4. Add the form to a page with the block, the Elementor widget, or the shortcode. == Frequently Asked Questions == = Is anything locked behind a paid version? = No. There is no paid version. = Does the plugin send any data to your servers? = No. There is no account, no licence check and no usage report, and nothing reaches 2ranq at any point. The only requests that leave your site are to the optional services you switch on yourself with your own keys. Each of them is described under External services above, with what is sent and when. = Do I need a spam service for the forms to work? = No. A hidden trap field and a rate limit are always on and need nothing from outside. Google reCAPTCHA and hCaptcha are there if you want them, and both are off until you enter your own keys. = Where are uploaded files kept? = In your own uploads folder, in a directory that does not run code and does not list its contents. Each file is renamed to a random name, and the original name is kept separately with the entry. = Can I change how a form looks? = Yes, in the Design tab. There are 45 ready made styles, and a setting for every colour, spacing, border, shape and button. Pick a style, then change anything you like. = Will it slow my site down? = Pages without a form load nothing from this plugin at all. = What happens if I delete the plugin? = Deleting it removes its own settings and its own entries table, and touches nothing else. Export your entries first if you want to keep them. == Screenshots == 1. The drag and drop builder, with a live preview of the real form. 2. The Design tab, with ready made styles and every setting. 3. The template picker. 4. Entries in the dashboard. 5. A form on the front end. == Credits and origin == 2ranq Forms is written by Quantum, Serbia, and published by 2ranq (https://2ranq.com). The plugin page is at https://2ranq.com/plugins/2ranq-forms/. Copyright (c) 2026 Quantum. The plugin is free software under the GNU General Public License, version 2 or later. The full text is in LICENSE.txt inside the plugin folder. The layouts are not guesswork. In August 2026 we measured seventeen live sites we build and maintain, and the numbers decided the defaults: field height, corner rounding, how a contact section splits into columns, and how many fields a real contact form has. The thirteen ready made sections are copies of those sites, rebuilt field by field, with sample details that belong to nobody: phone numbers from the 555-01xx range and email addresses on the reserved .example domain. == Changelog == = 1.1.0 = * The notification about a new entry now arrives as a card: the answers one under another, the form name, the site and the time at the top, and a button that opens that entry in the dashboard. * You pick the colour of the frame per form. The frame, the strip on top and the button take it. When the colour is light the button keeps black text on its own, so it stays readable. * Plain text is still there, as a choice under Email notification, and it also travels inside the card for a reader that does not draw HTML. * The link in the notification now leads to the entry itself instead of the list of entries. * Everything a visitor typed is escaped before it enters the message, so an answer is text and never markup. * A dropdown, a radio button and a checkbox now say what the visitor chose, not the value stored behind it. `I am already a customer` instead of `i-am-already-a-customer`, in the notification, on the Entries screen, in the export and in the webhook. An answer whose choice is no longer on the form is still shown as it was stored. * The Entries screen shows every form in the picker. It stopped at a hundred, so a form below that could not be chosen, and a link straight to one of its entries opened a screen that said zero entries while the entries were listed under it. * The Entries screen counts the entries of all forms in one query instead of one query per form. * The version number in the code and in the plugin header now match. They had drifted apart at 1.0.1. = 1.0.1 = * Password protected forms now limit how many times the password can be tried from one address. Ten tries in ten minutes, adjustable with the `ranq_forms_password_rate_limit` filter. * The cookie that remembers a given password now carries SameSite=Lax. * On a network of sites, a site added after the plugin was switched on now gets its entries table. Before this it did not, and forms on that site had nowhere to save. * Corrected the front end size written in this readme to the measured one. = 1.0.0 = * First public release. * Conditional logic, multi-step forms and file uploads. * Gutenberg block and Elementor widget. * Email notification on every entry. * Phone field with a country code and per country digit checks. * Multi-step forms with five ready made step bars. * 23 field types, 45 ready made styles, 29 templates, 13 ready made sections. * Optional connections to Google reCAPTCHA, hCaptcha, Mailchimp, Slack and a webhook of your own, all off by default. == Upgrade Notice == = 1.1.0 = Recommended. Notifications now arrive as a card with a frame colour you choose, the link opens the entry itself, and answers to a dropdown, a radio button or a checkbox read as the visitor saw them. = 1.0.1 = Recommended. Limits password attempts on protected forms, and fixes missing entries tables on a network of sites. = 1.0.0 = First public release.