> For the complete documentation index, see [llms.txt](https://kb.craftformswp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kb.craftformswp.com/documentation/why-craftforms.md).

# Why CraftForms?

[**CraftForms**](https://craftformswp.com/) is a WordPress form builder plugin built entirely on the native **Gutenberg editor**. Instead of learning a proprietary interface, you build and manage forms using the same block editor you already use for your WordPress content.

The plugin covers the full lifecycle of a form: building fields, collecting submissions, sending email notifications, and managing delivery — all from within your WordPress dashboard, with no external services required.

***

### What CraftForms Does

* **Build forms** with standard and advanced fields using the Gutenberg block editor
* **Collect and store submissions** as structured database records inside WordPress
* **Send** email notifications as **plain text** **or fully designed HTML email templates**
* **Log email delivery** so you always know what was sent and when
* **Configure SMTP servers** per-form to control how emails are dispatched
* Define submit actions to decide what happens on each form submission — **save a record, send an email, register a user, create a post, or combine several actions at once**
* **Calculate prices dynamically** using formulas and lookup tables; evaluate server-side on submission
* **Accept bookings with per-date and per-slot inventory tracking**
* Process **payments via Stripe** (hosted checkout or inline embedded form)
* **Expose REST API endpoints** for form submissions, suitable for headless setups and external integrations

***

### Free <a href="#free" id="free"></a>

#### Fields <a href="#fields" id="fields"></a>

* **Text input** — supports text, email, URL, password, number, date, time, phone, and search; configurable min/max, pattern validation, autocomplete, placeholder
* **Textarea** — multi-line text with configurable height and validation
* **Select** — dropdown with optional image and color swatches; square or circle option shapes
* **Radio buttons** — single-choice selection with the same swatch styling as Select
* **Checkboxes** — multi-choice with configurable minimum and maximum selections; per-option image and color swatches
* [**Infoblock**](/documentation/form-building/create-form/blocks/infoblock.md) — displays form field values in real time as the user fills in the form; no JavaScript or shortcodes required

#### Form Settings <a href="#form-settings" id="form-settings"></a>

* Default and Modern form styles — switchable from the form settings panel; no CSS required; both are theme-aware
* 2 form starters: contact form and inquiry form — fully editable blocks
* Invisible spam protection — scores mouse movement, focus events, keystroke patterns, timing, and paste behavior; bots blocked server-side before submission is processed; no CAPTCHA, no checkbox

#### Submit Actions <a href="#submit-actions" id="submit-actions"></a>

* **Save submission** — stores every field value as a structured database record; browsable, searchable, and exportable from the admin panel
* **Send plain-text email** — recipient address, subject, and body support `{{field_name}}` variables
* **Send HTML email** — uses a template built in the Email Template designer; supports the same `{{field_name}}` variables
* **Webhook** — sends a POST request to a configured URL on every submission; payload includes all field values as JSON

#### Starters (Free) <a href="#starters-free" id="starters-free"></a>

Form starters — fully editable blocks, not locked templates:

* Contact Form
* Customer Survey
* Event RSVP
* Feedback Form
* Inquiry Form
* Lead Capture
* Support Request

Email template starters — ready-to-use HTML email designs built in the Email Template designer:

* Contact Form Auto-Reply
* Customer Survey Confirmation
* Event RSVP Confirmation
* Feedback Form Confirmation
* Inquiry Form Auto-Reply
* Lead Capture Confirmation
* Support Request Confirmation

#### Email <a href="#email" id="email"></a>

* **Email Template designer** — build responsive HTML emails in Gutenberg; insert `{{field_name}}` variables anywhere; auto-compiled to optimised HTML on save; reusable across multiple forms and actions
* **Email log** — records every outgoing email: recipient, subject, timestamp, delivery status (success or failure), and full message body
* **SMTP configuration** — add multiple SMTP servers, assign per form, test the connection from the admin panel

#### Integration <a href="#integration" id="integration"></a>

* **CF7 importer** — converts Contact Form 7 forms to CraftForms blocks (fields, labels, basic validation)
* **Shortcode** — `[craftforms id="123"]` works in any post, page, custom post type, Classic Editor field, text widget, or third-party block
* **Elementor widget** — native CraftForms widget in the Elementor panel; full form functionality (calculations, conditional logic, validation, spam protection) renders inside any Elementor section
* **Bricks element** — native CraftForms element in the Bricks builder panel; insert and configure without custom markup

***

### Free Version Complete Overview

{% embed url="<https://youtu.be/YfuFJeu4Msc>" %}

***

### Pro <a href="#pro" id="pro"></a>

#### Fields <a href="#fields-1" id="fields-1"></a>

* **File upload** — MIME type verified server-side (browser-reported extension not trusted); hard blocklist rejects executable and script file types; stored in session-bound temporary directories until submission succeeds, then imported automatically into the WordPress Media Library; configurable accepted file types and size limit
* **Booking datepicker** — three modes:
  * Hotel-style (checkin/checkout range) — minimum and maximum nights, blocked days of the week, no-checkin and no-checkout day restrictions
  * Fixed time slots (date + time) — configurable slot interval in minutes; unavailable slots removed automatically based on confirmed bookings
  * Single-date — calendar-based date selection
  * Advance notice requirement and bookable date window restrictions configurable on all modes

#### Calculations & Smart Variables <a href="#calculations--smart-variables" id="calculations--smart-variables"></a>

* **Smart Variables** — virtual values defined on the form, not visible to the user; available in price formulas, conditional logic, and submission records; three types:
  * Expression — formula using field values and 50+ built-in functions (math, rounding, array operations, date arithmetic, string manipulation)
  * Price matrix — 2D lookup table driven by two field values; importable and exportable as CSV; lookup strategies: exact-match, closest-up, or closest
  * Linked field — maps a radio, checkbox, or select option value to its human-readable label; when option values are machine-readable codes, the Linked field resolves them to the display label so it can be shown in the Info block and stored in submission records
* Smart Variables resolve in dependency order automatically; one variable can reference another
* **Price calculation** — designate any Smart Variable as the form price; evaluated server-side on submission (client-side values not trusted); configurable currency (18 supported) and number format (US, European, Swiss, Scandinavian); live estimate displayed to user before submit; calculated price flows into the payment step, order record, and email templates

#### Logic <a href="#logic" id="logic"></a>

* **Conditional logic** — show/hide fields, enable/disable fields, show/hide any HTML element by CSS selector; conditions test any field value or Smart Variable against: equals, not-equals, is-empty, is-not-empty, one-of, any-of, all-of, none-of; multiple conditions combinable with AND or OR; runs entirely in the browser with no round-trips

#### Submit Actions <a href="#submit-actions-1" id="submit-actions-1"></a>

* **Register user** — maps form fields to WordPress user properties: username, email, password, first name, last name, display name, role, and custom user meta; automatic password generation if no password field; duplicate username and email detection; optional welcome email
* **Create post** — maps form fields to post properties: title, content, excerpt, author, publish date, slug, status (published, draft, pending, private), categories, tags, custom taxonomies, and custom fields; supports all public post types

#### Integration <a href="#integration-1" id="integration-1"></a>

* **Embed form** — each form generates a self-sizing snippet; paste it on any external website or standalone landing page outside WordPress; the form runs fully — calculations, conditional logic, validation, spam protection — inside the embed

#### REST API <a href="#rest-api" id="rest-api"></a>

* Custom endpoint slug per form (replaces default UUID with a readable name)
* Cross-origin (external) submissions — accept POST requests from other domains
* Required request headers — define key:value pairs every external request must include; acts as lightweight API key
* Custom form action URL — point the form at a completely external handler
* Full REST endpoints: submission management, email and SMTP management, CSV/JSON export

#### Commerce/Booking <a href="#commercebooking" id="commercebooking"></a>

* **Catalog** — define bookable services, rentals, or products as resources; attach a resource to a form; the same resource can be bookable through multiple forms on different pages
* **Inventory** — per-date and per-slot availability tracking for booking resources; stock quantity tracking for products; pre-submission availability check prevents overselling before an order is saved
* **Orders** — created on paid or confirmed submission; status lifecycle: pending → confirmed → paid → cancelled → refunded; stores customer data, line items, booking dates, total, currency, and payment details; identified by a secure token (not a sequential ID)
* **Stripe payments** — two integration modes:
  * Hosted Checkout — redirect to Stripe-hosted payment page after form submit; webhook confirms payment and updates order status
  * Embedded Elements — Stripe card form renders inline inside the CraftForms form; single-flow checkout without leaving the page
  * Both modes: HMAC-SHA256 webhook signature verification, test/live key separation, server-side price validation (amount charged always matches server-calculated total)
* **Order Summary block** — drop on any page to display order reference, status, total, and date from the URL token; no configuration required
* **iCal sync** — inbound: paste external platform feed URL (Airbnb, Booking.com, Google Calendar); WordPress fetches it hourly and marks those dates unavailable in inventory; outbound: generates a private .ics feed URL per resource for external platforms to pull confirmed bookings; availability stays consistent in both directions automatically

#### Starters (Pro) <a href="#starters-pro" id="starters-pro"></a>

Five additional form starters, unlocked with Pro:

* Booking Form — booking datepicker, per-slot inventory, and price calculation pre-configured
* Bug Report
* Event Ticket — ticket quantity, price formula, and order flow pre-configured
* Job Application
* Quote Request Form — live price display and Smart Variables pre-configured

Five additional email template starters, unlocked with Pro:

* Booking Form Confirmation
* Bug Report Confirmation
* Event Ticket Confirmation
* Job Application Confirmation
* Quote Request Confirmation

***

<a href="https://craftformswp.com/#buyCf" class="button primary">Buy PRO version</a>

***

### Looking for our roadmap? [It is here](/documentation/roadmap.md)!

***

### Getting Started

* [Installation](/documentation/installation.md) — how to install and activate CraftForms
* [Creating your first form](/documentation/form-building/create-form.md#how-to-create-your-first-form-with-craftforms) — build and publish a form step by step


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://kb.craftformswp.com/documentation/why-craftforms.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
