home/veldform/docs

Veldform / Docs

Form builder

All your forms live under the Forms menu in the WordPress admin. This is where you create, edit and duplicate forms — and where you'll find the entries and statistics of each form.

Creating a form

To create a form, click Add new form. You can then choose how to start:

  • Blank form — start from scratch
  • Build with AI — describe the form you want, and a ready-to-edit form is generated
  • A template — contact form, newsletter signup, job application, event registration, feedback survey or a donation form

The AI option only shows up when your site has the WordPress AI Client (WordPress 7.0+) with a provider configured. Describe your form — fields, requirements, who should be notified — and Veldform drops a complete form on the canvas for you to review and save.

Each form in the overview has a menu with a few handy tools:

  • Page with form — creates a draft page containing the form and opens it in the editor. If the form is already on a page, that page is opened instead.
  • Duplicate — copies the form, including its settings and actions.
  • Export JSON — downloads the form as a JSON file. Use Import (top of the overview) on another site to recreate it — imported forms start out non-public, so you can review before going live.

Builder

The Build tab is where you compose your form. The canvas in the middle shows a live preview of your fields; the panel on the right has two tabs: Add field and Field settings.

To add a field, drag it from the palette onto the canvas — or just click it to append it to the bottom. Clicking a field on the canvas selects it and opens its settings. The toolbar above a selected field lets you reorder (drag, or move up/down), duplicate and delete it.

The following field types are available:

Field Description
Text Single line text input
Email Email address, validated server-side
Paragraph Multiline text
Number Numeric input
Phone Phone number
Website URL
Name Composite field — toggle the parts you need (prefix, first, middle, last)
Address Composite field — toggle the parts you need (street, city, state, postal code, country)
Date / Time / Date & time With optional earliest/latest limits
Dropdown Choice field, optionally with multiple selections
Multiple choice Radio buttons
Checkboxes Multiple checkboxes
Checkbox A single consent/acceptance checkbox
Rich text Text area with a limited toolbar (bold, italic, link, list)
File upload Optionally multiple files, with a drag & drop zone, file type and size limits
Product / price A priced item — see Payments
Order total Displays the running total of all product fields
Hidden field Not visible to the visitor, submits a default value
Heading H2, H3 or H4
HTML A block of custom HTML
Submit A submit button (overrides the default button)
Page break Starts a new step — this is how you build multi-step forms

Field settings

Every field has a Label and a Required checkbox, plus options specific to its type. At the bottom of the settings panel you'll find a row of chips, each opening a focused panel:

  • Logic — show or hide the field based on other fields
  • Description — help text shown under the label (also read by screen readers)
  • Default — a default value, either static, from a URL query parameter, or from the logged-in user
  • Prefill from API — fill the field from an external API, see Custom API's
  • Layout — the field width (full, two thirds, half, third or quarter) and an Inline with previous field toggle to place fields side by side

Conditional logic

Fields can be shown or hidden based on the values of other fields. Choose Show or Hide, whether all or any of the rules should match, and add rules like [field] [operator] [value].

The available operators: is, is not, contains, does not contain, starts with, ends with, greater than, less than, is at least, is at most, is empty, is not empty, is one of, is not one of.

Conditional logic runs live in the browser, but is always re-checked on the server — so it can't be bypassed.

Multi-step forms

To split a form into steps, add a Page break field wherever a new step should start. Everything above the first page break becomes step one, and so on.

The visitor sees one step at a time, with a progress indicator on top and Previous/Next buttons below — the button texts are configurable per page break. Clicking Next validates the current step before advancing, so visitors catch mistakes early instead of at the very end. The server still validates the whole form on submit, and if it finds an error, the form reopens on the first step that has one.

File uploads

The File upload field accepts pdf, doc(x), jpg, jpeg, png, gif, txt, csv, xls(x) and zip files by default, with a maximum of 5 MB per file. You can change the allowed types, the size limit, allow multiple files (up to 5 by default) and enable a drag & drop zone in the field settings.

A few things to know about how files are handled:

  • Uploaded files are stored outside the public uploads folder — there is no guessable URL, and downloads are only served to logged-in users who can view entries.
  • You'll find the files on the entry; deleting the entry deletes the files too.
  • Notification emails can't attach files. Use the {{ entry.url }} merge tag in your notification to link to the entry instead.

Preview and publishing

The Preview button in the header shows the real front-end form. Next to it sits the Public toggle: a form only renders and accepts submissions when it's public.

Settings

The Settings tab holds the form-wide options:

  • Submit button — the button text. If you place a Submit field on the form, its own text is used instead.
  • Confirmation — what the visitor sees after a successful submit. Either show a message, or redirect to a URL. Both support merge tags.
  • Currency — the currency for product prices on this form. Leave blank to use the global default.
  • Form visibility — only show (and accept) the form when the request meets certain conditions, based on query parameters or the logged-in user. When the conditions aren't met, you can show a message or hide the form entirely. Note: logged-in user conditions are enforced on submit too, but query-parameter conditions only check that the parameter is present — they are convenience, not access control.
  • Prefill from API — fetch a record once when the form loads and fill fields from it. See Custom API's.
  • Entries — whether submissions are stored as entries. Turn this off to only run actions.
  • Spam protection — whether submissions are verified with the site-wide captcha. See Anti-spam.

Actions

The Actions tab is where you define what happens when the form is submitted — sending notifications, calling APIs, taking payments and more. This is covered in detail on the Actions page.

Entries

The Entries tab shows the stored submissions of the form. See the Entries page.

Statistics

The Stats tab gives you a quick look at how the form is doing. Pick a range (last 7, 30, 90 days or a year) and you'll see:

  • The number of submissions in the range, and all time
  • A revenue tile per currency when the form takes payments (paid amount, refunds and the net result)
  • A submissions-per-day chart
  • For every dropdown, radio and checkbox field: how the answers are distributed, with counts and percentages

Note: page views and conversion rate are not tracked yet.

Embedding the form

There are three ways to put a form on your site — they all produce the exact same output:

  • Block — add the Veldform block in the editor and pick your form
  • Shortcode[veldform id="1"], optionally with title="1" to show the form title. You can copy the shortcode from the forms overview.
  • Template tag — for theme developers: veldform_render( 1 );