=== CompactForm – Drag & Drop Form Builder for Contact Form 7 ===

Contributors: rstheme2017, sagar7258
Author: RSTheme
Author URI: https://rstheme.com/
Plugin URI: https://compactform.rstheme.com/
Tags: contact form 7, cf7, form builder, drag and drop, conditional logic
Requires at least: 6.4
Tested up to: 7.1.2
Requires PHP: 7.4
Requires Plugins: contact-form-7
Stable tag: 1.0.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Build Contact Form 7 forms by dragging and dropping fields. Add layouts, style each field, and set conditions without writing shortcodes.

== Description ==

**CompactForm – Drag & Drop Form Builder for Contact Form 7** adds a visual form builder to Contact Form 7. You drag fields onto a canvas, arrange them the way you want, style them, and save. You never have to write or remember a CF7 shortcode.

We love Contact Form 7. It's reliable and it works with almost everything. But once a form gets past a few fields, you end up typing tags by hand and checking the front end to see if it looks right. We built CompactForm to fix that.

Your forms stay real Contact Form 7 forms. They use the same shortcode, the same submission process, and they keep working with the CF7 addons you already use. CompactForm simply gives you a better way to build them.

[Live Demos](https://compactform.rstheme.com/) | [Setup Guide & Video](https://compactform.rstheme.com/setup-guide/) | [Form Templates](https://compactform.rstheme.com/templates/) | [Pro Addons](https://compactform.rstheme.com/pricing/)

= Stop Writing Form Code by Hand =

With Contact Form 7 on its own, you write two things by hand for every form: the form itself and the email it sends.

**1. The form markup**

Even a simple two-column contact form means typing something like this:

    <div class="cf-row">
      <div class="cf-col">
        <label>Your Name [text* your-name]</label>
      </div>
      <div class="cf-col">
        <label>Your Email [email* your-email]</label>
      </div>
    </div>
    <label>Your Message [textarea* your-message]</label>
    [submit "Send Message"]

And that's only the markup. You still have to write CSS to make the columns work, fix the spacing, and match your theme.

**2. The email**

Next, on the Mail tab, you fill in To, From, Subject, and a Reply-To header yourself, then list every mail tag in the message body. Out of the box, that gives you a plain-text email. If you want a clean, branded email that also reads well on phones, you have to hand-code table-based HTML with inline styles, one row for each field:

    <table role="presentation" width="100%" style="background:#f1f5f9;">
      <tr>
        <td style="background:#0091fa;padding:28px 32px;">
          New Submission: Contact Form
        </td>
      </tr>
      <tr>
        <td>Your Name</td>
        <td>[your-name]</td>
      </tr>
      <!-- ...and another row for every field -->
    </table>

Add a field to the form later, and you have to update the email by hand again.

= How CompactForm Handles It =

Drag the fields in, set them up in the side panel, and CompactForm builds the form layout and the email for you. Here's what changes:

* **Layout:** No more wrapping fields in HTML and writing CSS for columns. Drop fields into a Container and they line up side by side, then stack neatly on mobile.
* **Field settings:** No need to remember tag syntax like `min:10` or `filetypes:pdf|jpg`. Required fields, placeholders, limits, and allowed file types are all simple options in the panel.
* **Styling:** No custom CSS in your theme. Change fonts, colors, spacing, borders, and width for each field and see it update right away.
* **Conditional logic:** No extra plugin and no rule code to write. Pick a field, pick a condition, and choose what to show or hide.
* **Email template:** Every form gets a ready-made, responsive HTML email with a header showing the form's name and a neat row for each field. It's selected in the Template dropdown as the default, and you can still edit the HTML in the built-in code editor.
* **Autofill for mail settings:** To, From, Subject, Additional Headers, and Message Body each have their own Autofill link. One click fills in your site's admin email and title, sets Reply-To to the visitor's email field, and adds every form field to the template. Changed your fields? Click Autofill on the message body again.
* **Advanced fields:** No hunting for separate plugins to add star ratings, signatures, date pickers, or sliders. They are already in the builder.

The result is still a normal Contact Form 7 form. You just don't have to write it yourself.

= Why people use it =

* **No code needed:** Build on a live canvas and see changes as you make them.
* **28 free field types:** Everything from simple text inputs to star ratings, signatures, sliders, and a country list.
* **Style each field:** Change fonts, colors, spacing, borders, and width right in the builder.
* **Checked on the server:** Validation, conditional logic, and spam checks run on your server, so turning off JavaScript won't get around them.
* **Light on your site:** Turn off the fields you don't use. Scripts and styles only load on pages that have a form.
* **Your old forms are safe:** Nothing changes until you open a form in the builder. You can also import existing CF7 forms.

= Key Features =

**Drag & Drop Builder**
Drag fields onto the canvas, move them around, and group them into columns. You see the result as you work. The builder is turned on per form, so any form you wrote by hand stays exactly as it is until you decide to switch it over.

**28 Free Field Types**
All of these come free with the plugin:

*Layout*

* **Container:** Put fields side by side in rows and columns.
* **Heading:** Add a title or break the form into sections.
* **Divider:** Add a line or shape between sections.
* **Raw HTML:** Drop in your own HTML wherever you need it.

*Basic Inputs*

* **Text Field:** For short answers like a name or subject.
* **Email Field:** Collects an email address and checks the format.
* **Phone Field:** Collects a phone number.
* **URL Field:** Collects a website link and checks that it's valid.
* **Number Field:** Accepts numbers only, with optional minimum and maximum values.
* **Date Field:** Uses the browser's built-in date input.
* **Textarea Field:** For longer messages, comments, or feedback.
* **Hidden Field:** Sends a value along with the form without showing it to the visitor.

*Choices*

* **Dropdown:** Visitors pick one option from a list.
* **Radio Button:** Visitors choose exactly one option.
* **Checkbox:** Visitors can tick one or more options.
* **Acceptance:** Visitors must agree to your terms or privacy policy before they can submit.
* **Country Dropdown:** A ready-made list of countries. It can also pre-select the visitor's country for them.

*Advanced*

* **Star Rating:** Let visitors rate something with stars. Great for reviews and feedback.
* **Date Picker:** A calendar popup for choosing a date.
* **Time Picker:** A simple way to choose a time.
* **Date & Time Picker:** Choose a date and a time in one field.
* **Digital Signature:** Visitors sign with a mouse or finger.
* **Range Slider:** Visitors drag a slider to pick a value.
* **Quiz:** Ask a question with a fixed answer. Handy as a quick human check.
* **File Upload:** Visitors can attach files. You decide which file types and sizes are allowed.

*Protection*

* **Spam Protection:** Stops bots using a hidden honeypot field, a minimum time to fill out the form, and blocked words.
* **Google reCAPTCHA:** Adds Google reCAPTCHA v3 to check that a real person is submitting.

*Action*

* **Submit Button:** Sends the form. You can change its text and style.

**Style Each Field**
Every field has its own style settings for fonts, colors, spacing, borders, and width on different screen sizes. You won't need to write custom CSS.

**Conditional Logic**
Show or hide fields based on what visitors choose in other fields. The rules are checked again on the server, so no one can skip them by turning off JavaScript.

**Spam Protection**
Use reCAPTCHA v3, a honeypot field, a minimum fill time, and blocked words together to keep bots out. All of these checks run on the server.

**Server-Side Validation**
Every submission is checked on the server against your form's settings. The checks in the browser are only there to help visitors fill out the form correctly. They are not what keeps your form secure.

**Import Your CF7 Forms**
Already have Contact Form 7 forms? Bring them into the builder and keep editing them visually.

**Export & Import Between Sites**
Save any form as a JSON file with its fields, styles, and logic included. Import it on another site that runs CompactForm and the form is ready to use. This is useful if you build sites for clients or reuse the same forms often.

**Email Templates & Autofill**
Every form comes with a clean HTML email template that's built to look good on desktop and mobile. Your form fields are added to it automatically, so notification emails work from the first submission.

Each mail setting on the Mail tab has an Autofill link:

* **To, From, and Subject:** Filled with sensible defaults like your site's admin email and title.
* **Additional Headers:** Adds a Reply-To using your form's email field, so you can reply straight to the person who wrote in.
* **Message Body:** Adds every form field to the HTML template in one click. Use it again any time you add or change fields.

Pick a template from the Template dropdown, edit the HTML in the built-in code editor, or leave the default as it is.

**Live Email Preview**
The Mail tab shows how your email will look while you edit it. You don't need to send test submissions to check it.

**Webhook Integration**
Send each submission to another app or service by adding its URL.

**One Dashboard for Everything**
Manage addons, reCAPTCHA keys, webhooks, and which fields show up in the builder, all from one place. Turn off anything you don't need.

**Admin Bar Shortcut**
While you're browsing your site, open a form in the builder straight from the WordPress admin bar.

**Works With Contact Form 7 Addons**
Forms built with CompactForm are still Contact Form 7 forms, so the CF7 addons and setup you already have keep working.

= Want More? Try CompactForm Pro =

[CompactForm Pro](https://compactform.rstheme.com/pricing/) adds more addons on top of the free builder:

* **Multistep Forms:** Split a long form into smaller steps so it feels quicker and easier to fill out.
* **Save & Continue:** Visitors can save a half-finished form and come back later to complete it, without losing what they already entered.
* **Slot Picker:** Let visitors choose an available date and time slot for bookings and appointments.
* **Dynamic Calculator:** Show live totals and calculations based on what visitors enter, like prices or quotes.
* **Stripe Payment:** Take secure card payments right inside your form.
* **Woo Product Selector:** Let visitors pick WooCommerce products in the form and go straight to checkout.
* **Repeatable Group Field:** Let visitors add the same set of fields again and again, for example to list several team members or guests.
* **Drag & Drop Upload:** A modern upload area where visitors can drag files in instead of browsing for them.
* **Rich Text:** Give visitors a text editor with formatting like bold, lists, and links.
* **Global Field:** Build a field once and reuse it across all your forms. Update it in one place and every form changes.
* **Taxonomy & Category:** Show your WordPress categories, tags, or custom taxonomies as form options.
* **Conditional Redirect:** Send visitors to different pages after they submit, based on their answers.
* **Custom Form Action:** Send form data to an external service or your own endpoint.
* **Database Entries:** Save every submission in your WordPress dashboard so nothing gets lost if an email fails.
* **Post Submission Form:** Let visitors submit content that gets published as a WordPress post.
* **Email Sync:** Read and follow up on email replies from inside your dashboard.
* **Slack Integration:** Get new submissions posted to a Slack channel.
* **Telegram Integration:** Get new submissions sent to Telegram.
* **Google Sheets Integration:** Add every submission to a Google Sheet automatically.
* **Prebuilt Form Templates:** Import a ready-made form and adjust it to fit your needs.
* **Prebuilt Email Templates:** Choose from ready-made email designs for your notifications.

You don't need Pro to use CompactForm. The free plugin works fully on its own.

== External services ==

This plugin connects to two third-party services. Both are optional and disabled by default.

= ipapi.co =

Used by the Country Dropdown field to pre-select the visitor's country automatically.

This service is only contacted when a form author enables the "IP auto-complete" option on a Country Dropdown field. The option is off by default. When it is enabled, the visitor's browser sends a request to `https://ipapi.co/country/` each time a page containing that form is loaded. The request is made directly by the visitor's browser, so ipapi.co receives the visitor's IP address. Only the two-letter country code is returned, and no data from the request is stored by this plugin.

Service provided by ipapi.
Terms of service: https://ipapi.co/terms/
Privacy policy: https://ipapi.co/privacy/

= Google reCAPTCHA =

Used by the Google reCAPTCHA field to detect automated form submissions.

This service is only contacted when a site administrator enters their own reCAPTCHA site key and secret key in the CompactForm dashboard and adds a reCAPTCHA field to a form. No keys are configured by default. When it is configured, two requests occur: the visitor's browser loads `https://www.google.com/recaptcha/api.js` on any page containing that form, and on submission the site sends the reCAPTCHA response token together with the site's secret key from the server to `https://www.google.com/recaptcha/api/siteverify` for verification. Google receives the visitor's IP address and browser interaction data as part of its bot-detection process.

Service provided by Google.
Terms of service: https://policies.google.com/terms
Privacy policy: https://policies.google.com/privacy

== Requirements ==

* WordPress 6.4 or newer
* PHP 7.4 or newer
* Contact Form 7 installed and activated

== Installation ==

1. Upload the plugin folder to the `/wp-content/plugins/` directory, or install it directly from the WordPress **Plugins → Add New** screen.
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Make sure **Contact Form 7** is installed and activated.
4. Open a Contact Form 7 form's edit screen, switch to the **Visual Editor** tab, and click **Edit with Builder** to start building — or create a new form with the builder enabled from the start.

== Frequently Asked Questions ==

= What does this plugin do? =
It adds a drag-and-drop visual builder on top of Contact Form 7, so you can add fields, arrange layout, style fields, and set conditional logic without writing shortcodes by hand.

= Do I need to know how to code? =
No. Fields, layout, styling, and logic are all handled visually in the builder panel.

= Does it work without Contact Form 7? =
No. It's an extension for Contact Form 7, so Contact Form 7 must be installed and activated.

= Will it change my existing Contact Form 7 forms? =
No. The builder is opt-in per form. A form only becomes builder-managed once you explicitly choose to edit it with the builder; until then it behaves exactly like stock Contact Form 7.

= Can I import an existing form into the builder? =
Yes. Existing Contact Form 7 shortcode markup can be imported into the builder and edited visually from there.

= Can I export and import forms between sites? =
Yes. Any form built with CompactForm can be exported to a portable JSON file containing all field configurations, styling, conditional logic, and settings. That file can then be imported into any other WordPress site that has CompactForm installed, instantly recreating the form with all its properties intact. This is ideal for multi-site deployments, sharing templates with clients, or maintaining form libraries across environments.

= What field types are included in the free version? =
28 field types: Container, Heading, Divider, Raw HTML, Submit Button, Text, Email, Phone, URL, Number, Date, Textarea, Quiz, File Upload, Hidden Field, Dropdown, Radio Button, Checkbox, Acceptance, Star Rating, Country Dropdown, Date Picker, Time Picker, Date & Time Picker, Digital Signature, Range Slider, Spam Protection, and Google reCAPTCHA.

= Is there a Pro version? =
Yes. CompactForm Pro adds addons such as Multistep, Save & Continue, Slot Picker, Dynamic Calculator, Stripe Payment, Database Entries, and Slack, Telegram, and Google Sheets integrations. See https://compactform.rstheme.com/pricing/ for details. The free plugin works fully on its own.

= Is conditional logic enforced on the server? =
Yes. Visibility rules are always re-checked from the stored form schema and the actual posted data — a visitor cannot bypass a rule by disabling JavaScript.

= Can I style each field individually? =
Yes. Typography, color, spacing, borders, and responsive width are all available per field from the builder panel.

= Can I turn individual field types on or off? =
Yes. Every field type has its own toggle in the CompactForm dashboard, so you can disable any field you don't want available in the builder.

= Where do I manage addons and API keys? =
In the CompactForm dashboard. From one place you can manage addons, configure integrations, store API keys (like reCAPTCHA and webhooks), enable or disable features, and control which field types are available.

= Can I send submissions to an external URL? =
Yes. The free version includes a Webhook integration that posts submission data to any URL you configure.

= What spam protection options are available? =
CompactForm includes four spam defense layers: reCAPTCHA v3 for bot detection, honeypot fields for automated submissions, customizable minimum fill time to block instant submissions, and keyword blocking to filter unwanted content. All checks are enforced server-side.

= Do I need to set up email templates manually? =
No. Every form uses a default HTML email template with your form fields already added, so emails work right away. The To, From, Subject, Additional Headers, and Message Body settings each have an Autofill link that fills them in with one click. If you change your fields later, click Autofill on the Message Body and the template is updated with all of them. You can also edit the HTML yourself.

= Can I preview how emails will look? =
Yes. The Mail tab includes a live email preview that updates in real time as you edit the template.

= Where do I find the builder? =
Open any Contact Form 7 form's edit screen — the **Visual Editor** tab is the first tab, and it walks you through enabling the builder for that form.

= Is there a limit on how many forms or fields I can create? =
No. You can build as many forms as you need, each with as many fields as you need.

= Where can I get support? =
Support is available through the plugin's support forum on WordPress.org. Setup guides and videos are available at https://compactform.rstheme.com/setup-guide/.

== Screenshots ==

1. Drag-and-drop builder canvas with the field palette.
2. Per-field style controls panel.
3. Conditional logic configuration.
4. Field library with 28 free field types.
5. CompactForm dashboard — enable or disable individual field types.

== Changelog ==

= 1.0.0 =
* Initial release with the drag-and-drop visual builder, 28 free field types, per-field styling, conditional logic, form import, webhook integration, and admin bar quick access.