Flexa FormFlow

User Guide · v1.3.3

Forms, entries and the emails they send

Flexa FormFlow puts a form builder and a visual email builder in one plugin. A field you add to a form becomes a token you can drop into the notification email, so the message people receive matches the data they sent. This guide covers the free plugin. The paid add-on has its own page.

Free or Pro?

Everything below is in the free plugin. Pro is an add-on installed beside it: nothing you build here moves or breaks when you add it.

AreaFree pluginPro adds
FormsEvery field type, conditional logic, honeypot, rate limits, CAPTCHA.Multi-step forms with a progress bar, a phone field with country flags, a country picker.
EmailsDrag-and-drop blocks, patterns, a global header and footer, test sends.Synced blocks, custom variables, brand color themes, file attachments.
LanguagesOne version per email.A version per language, picked from the reader’s locale.
WooCommerceOrder emails redesigned, order and customer tokens.Order fields, shipment tracking, product blocks and offers from your other plugins, plus the emails those plugins send.
WorkflowsSend an email, call a webhook, set the entry status, note the entry.A CRM and marketing connector node.
Read the Pro guideFifteen sections, with screenshots of every Pro screen.

Installation

Getting started

FormFlow runs on any WordPress site. WooCommerce is optional: with it active you get extra email blocks and the WooCommerce email designs, without it everything else works the same.

  1. Install the plugin from Plugins > Add New > Upload Plugin, or copy the flexa-formflow folder into wp-content/plugins/.
  2. Activate it on the Plugins screen.
  3. Open Flexa FormFlow in the admin menu. A short welcome guide offers to set your brand color and build a first form.
  4. Create a form, copy its shortcode, and paste it into any post or page.
The welcome guide shown on first open
The welcome guide on first open: set the brand color, then build a first form.

Delivery is your site's job

FormFlow builds the message and hands it to WordPress through wp_mail(). It does not run its own mail server. If mail from your site is unreliable, add an SMTP or delivery plugin (Flexa MailBridge, or any SMTP plugin) and FormFlow will follow it.

Orientation

The Dashboard

The admin menu has one entry, and the app inside it has eight sections.

SectionWhat lives there
DashboardCounts, recent entries, and warnings such as a published form whose CAPTCHA has no keys.
FormsThe forms list and the drag-and-drop builder.
EntriesEvery submission, filterable by form and by read status.
EmailsEmail templates, the visual editor, the global header and footer, and WooCommerce email designs.
WorkflowsTrigger, condition and action chains that run when a form is submitted.
LibraryReady-made forms, emails, workflows and industry packs, plus your own saved items.
IntegrationsConnections to other services. The CRM card belongs to Pro.
SettingsBrand color and email defaults, spam protection, CAPTCHA keys, AI provider, uninstall behavior.
The FormFlow dashboard with counts and recent entries
Dashboard: counts, recent entries, and any warnings about published forms.

Forms

Build a form

The builder has three columns: the palette of field types on the left, the canvas in the middle, and the inspector for the selected field on the right.

The forms list showing three forms
The forms list: status, field and entry counts, and the shortcode to copy.
  1. Go to Forms and click New form. Give it a title; that title is what the admin notification refers to and what {form_title} resolves to.
  2. Drag a field from the palette onto the canvas. Drag fields up and down to reorder them.
  3. Select a field and edit it in the inspector. It has four tabs: Settings (label, placeholder, and the choices for a dropdown, radio or checkbox field), Validation (required or not), Logic, and Style. A hidden field swaps its placeholder box for a Value box, since nobody types into it.
  4. Set the field width per breakpoint. Two fields at half width sit side by side on desktop and stack on a phone, with no CSS to write.
  5. Open Form settings for the submit button label, the success message, the CAPTCHA choice, and the two emails the form sends.
  6. Use Preview to see the form the way a visitor does, at desktop and phone width, then publish it.
The form builder: palette, canvas and inspector
Drag a field from the palette onto the canvas and edit it in the inspector.

Draft and published

A form stays a draft until you publish it. A draft still opens in the builder and still previews, but its shortcode renders nothing on the front end.

Forms

Field types

FieldNotes
TextOne line of text.
EmailChecked as an address, both in the browser and on the server.
ParagraphMulti-line text.
DropdownOne choice from a list.
RadioOne choice, all options visible.
CheckboxOne box to tick, or a set of them.
NumberDigits only, with the browser’s number input.
DateA date picker.
HiddenA value carried with the submission that the visitor does not see.

Pro adds a Phone field with country flags and calling codes, a Country field, and a Step item that splits a long form into pages. Those are covered in the Pro guide.

Phone, country and multi-step forms

FormFlow Pro adds a phone field with country flags and calling codes, a country field, and steps that split a long form into pages with a progress bar and per-step validation.

Forms

Show and hide fields

Any field can depend on the answer to another one. Pick the field to watch, the comparison, and the value; the field then appears only when the rule matches.

Rules run in the browser as the visitor types, and again on the server when the form is submitted. A field that is hidden by its own rule is not required, so a conditional required field cannot block a submission the visitor has no way to fix.

Conditional logic in the field inspector
Show or hide a field based on the answer to another one.

Forms

Put the form on a page

Two ways, same result.

Shortcode
[flexa_formflow id="123"]

Or add the FormFlow Form block in the editor and pick the form from the dropdown. The block panel lists published forms by title.

The front-end form loads one small stylesheet and one script. The builder's preview loads the same stylesheet, so what you see in the preview is what visitors get.

A published form on the front end
The same form on a page, using your brand color and the theme's fonts.

Forms

Spam protection

Every form is protected the moment it goes live. There is no switch to forget.

LayerWhat it does
HoneypotA field real visitors never fill in. A filled one is dropped.
Timing checkA submission that arrives faster than a human could type is refused.
Rate limitCounts submissions per visitor over time and refuses a flood.
CAPTCHA (optional)Cloudflare Turnstile or Google reCAPTCHA v2, per form.

The first three are always on. To add a CAPTCHA, enter the provider keys once in Settings, then pick that provider on the form. Secret keys are stored encrypted, and Test keys confirms them without involving a visitor. Every answer is verified on your server before an entry is saved or an email is sent.

Keys first, then the form

A form cannot go live with a CAPTCHA that has no keys. The Dashboard warns about any published form in that state, because the form would show a challenge no visitor could pass.

Entries

Entries

Every submission is stored in your own database. Nothing is kept behind an external service.

The Entries list filters by form and by read status. Clicking a row opens a peek panel beside the list; the detail view shows the whole submission with its date, the page it came from, and any notes a workflow added. Entries can be marked read or unread, and deleted.

The entries list with the peek panel open
Entries: filter by form and read status, peek without leaving the list.
One entry open in the detail view
The detail view: every value, the page it came from, and the workflow notes.

Emails

Design the email

The email builder is a block editor that writes email-safe HTML. Blocks are dragged in from a palette, selected on the canvas, and styled in the side panel.

The email templates list
Every template in one list, with the packs they came from.
BlockUse
Heading, TextCopy, edited in WordPress’s own visual editor with only the formatting an email can keep.
ButtonA call to action with its own colors and width.
Image, LogoPicked from the Media Library, or any URL. The logo follows your site logo.
Divider, SpacerRules and vertical space.
ColumnsTwo or more columns that stack on a phone.
Fields tableThe whole submission as a label and value table.
Order details, AddressesWooCommerce order lines and billing or shipping addresses, on stores.

Insert form data with tokens. {field:ID} prints one answer, and the Dynamic data list offers the rest without any syntax to memorize:

TokenResolves to
{field:ID}One answer from the submission.
{form_title}The form’s title.
{entry_id}The entry number.
{entry_date}When it was submitted, in the site format.
{page_url}The page the form was submitted from.
{site_title}Site name.
{site_tagline}Site tagline.
{site_url}Site address.
{site_logo_url}The site logo, for an image block.
{admin_email}The site admin address.
{year}The current year, for a footer.

Each block has a ⋮ menu: duplicate, copy, paste after this one, copy styles, paste styles, remove. A copied block or a copied style pastes into another email too. Arrows beside the selected block move it one place, including inside a column.

Set global styles once (brand color, page and content background, text color, font, content width) and every template follows them. Preview at desktop and phone width, pick a real entry or a real order to preview against, and send yourself a test before going live.

The editor saves itself as you go, a moment after you stop typing, and the header says whether the draft is saved, saving or still unsaved. If a save fails you get a toast saying so, and leaving the screen stores the last change before the editor closes. The ⋮ menu beside Send test holds Export as JSON and Reset to default; the reset asks what to start from, suggests the design this template came from, says why, and can be undone.

The email builder with the block palette and preview
Drag blocks, preview with real entry data, and set the template design.

Emails

Show a block only sometimes

Any block can carry conditions. The block is in the design, but a reader only sees it when their entry matches.

Select a block and open Visibility at the bottom of the inspector. Choose whether to match all or any of the rules, then add rules. A rule is one of the form’s fields, an operator, and a value to compare against. The block gets a Conditional badge once it has at least one rule.

OperatorMatches when the answer…
isequals the value exactly.
is notdiffers from the value.
containshas the value somewhere inside it.
does not containdoes not have the value inside it.
is emptywas left blank. No value to type.
is not emptywas filled in. No value to type.

The field list comes from whichever form the Preview data source picker in the toolbar is set to, so pick the form first. One use: a thank-you email with a paragraph for Enquiry type is Support and a different one for Enquiry type is Sales, both in the same design.

The preview always shows everything

Conditions are checked at send time, against the entry. The editor and the preview show every block regardless, so you can keep designing the parts a given reader will not get.

Emails

Patterns and global parts

Starting from a blank canvas is slow, so the editor ships a pattern library: ready-made headers, intros, banners, calls to action, galleries, offers and footers, plus order and shipping sections on WooCommerce stores.

Browse them by category or search, preview one at full size, insert it, and then edit it like any other blocks. Undo works on an inserted pattern.

The global header and footer keeps branding in one place. Pick a ready-made set, then decide per email whether to use the global one, keep its own copy, or turn it off. Section backgrounds let neighboring blocks form one tinted band with no seam between them.

The global header and footer editor
One global header and footer, designed once and wrapped around every email.

Templates can be saved to the library, exported as JSON (one or all of them), and imported on another site. An import warns about missing block types and images hosted elsewhere before it adds anything.

Emails

Which email a form sends

A form sends up to two messages, both set in Form settings, both optional.

MessageSettings
Admin notificationRecipient (the site admin address when left empty), subject, and which template to use.
Confirmation to the submitterWhich email field to send to, subject, and which template to use. Nothing is sent when that field is empty or not an address.

When no template is chosen, a clean default layout is used, so a form you built in two minutes still sends a readable email. Subjects accept the same tokens as the body.

The two email settings in Form settings
Form settings: the admin notification and the confirmation, side by side.

Emails

WooCommerce emails

On a store the Emails screen gets a second tab. It lists the 17 WooCommerce transactional emails FormFlow can take over, from New order through to Reset password, so you design them with the same builder instead of WooCommerce's fixed template.

The WooCommerce tab on the Emails screen
Order tokens sit above the cards, and every WooCommerce email gets one card.
  1. Open Emails and switch to the WooCommerce tab.
  2. Flip the toggle on the email you want. FormFlow sends that one from then on. Flip it back and WooCommerce takes it over again, with nothing lost.
  3. Type a Subject line, or leave it blank to keep WooCommerce's own. Order tokens work here as well as in the body.
  4. Pick a Template. Default design keeps WooCommerce's layout; Customize copies that layout into a template of your own and opens it, after which the button reads Edit design.
  5. Preview renders the email against sample data or a real order (search by order number, name or email), at desktop or phone width, and can send a test to any address.
A WooCommerce order email open in the block editor
An order email in the builder: logo, copy, the order table and the addresses are all blocks.

Taking it over does not switch it on

If the email is disabled in WooCommerce's own settings, the card shows an amber warning with a link straight to that screen. Nothing sends until WooCommerce has it enabled too.

Order merge tags

The tab lists every order token above the cards, so you can copy one and drop it into a subject line or a text block: order number, date, status and totals, the payment and shipping method, billing and shipping addresses, the customer's name and email, the order, payment and my-account links, and the password links the account emails need. A tag with no value is left empty rather than printed raw.

Workflows

Workflows

A workflow is a trigger, an optional gate, and a list of actions. It runs when a form is submitted, either any form or one you name.

The workflows list with three active workflows
Each workflow shows its trigger, how many actions it runs, and whether it is active.
PieceOptions
TriggerA submission, from any form or from one specific form.
GateA condition with Then and Otherwise branches, or a Switch on one field with a case per value and a Default.
ActionsSend an email, send a webhook (POST with the entry as JSON), mark the entry read or unread, or add a note to it.

The builder has two views over the same draft: a list, and a canvas where steps are nodes you can pan, zoom and fit to view, with settings in a side panel. Run test docks a panel beside the flow and reports every step, using the latest entry, a recent entry you pick, or values you type. A test saves nothing and sends no email.

The list view of the workflow builder
The list view: the trigger first, then one card per action, each with its own settings.

Each run is logged. The Logs tab shows the same per-step report the test panel gives, so a workflow that quietly skipped an action tells you which step decided that and why.

The workflow builder canvas with a condition and two branches
A trigger, a condition, and a branch for each outcome.

Webhooks go only where you point them

A webhook action posts the form ID and title, the entry ID, the submission time, and the submitted values as JSON to the URL you enter. Local and private-network addresses are refused.

The Integrations screen is the map of what a workflow can reach. It shows what is already working (webhooks, and Zapier or Make through a catch hook), what is waiting on another plugin (SMTP delivery, WooCommerce), and what Pro adds (the CRM and marketing connectors).

The Integrations screen listing webhooks, email delivery, WooCommerce, Zapier and CRM
Integrations: each card says whether it is active, available, or waiting on something.
The Logs tab of a workflow
Logs: one row per run, expanded into the decision each step made.

Library

Library and packs

The Library has two halves: a catalog of ready-made content, and the items you saved yourself.

A pack installs a set of related items at once: forms, email templates and workflows for a trade or a use case. A pack's detail page reports any of its installed items you have since deleted and offers to put back only those, leaving the rest of the pack alone.

The library with packs and saved items
The Library: ready-made forms, emails, workflows and industry packs.
A pack detail page listing its items
A pack's detail page: what it installs, and what you have since deleted.

Settings

AI assistant

Optional, off until you add a key, and never used on the front end.

Choose a provider in Settings (Anthropic, OpenAI or Google Gemini) and paste an API key. The key is stored encrypted and is never shown in the browser again. A request leaves your site only when you click an AI tool in the builder:

  • Generate a form sends the description you typed.
  • Writing assistant (rewrite, shorten, change tone, subject ideas) sends the text you asked it to work on, the tone you picked, and your site name.

No visitor data, entries or submitted values are sent, and there is no FormFlow server in between: the request goes from your site straight to the provider with your own key.

Settings

Settings

SettingWhat it controls
Brand colorThe accent every email template starts from. Default #0f92f7.
Page and content background, text colorThe canvas of the emails you send.
Font family, content widthEmail typography and the width of the content column (600px by default).
Footer textThe line at the bottom of emails. Tokens work here, for example © {year} {site_title}.
Spam protectionCAPTCHA provider keys, stored encrypted, with a test button.
AI providerProvider, model and API key for the AI tools.
Delete data on uninstallOff by default. See the FAQ below.
The settings screen
Settings: brand color, spam protection, and CAPTCHA keys stored encrypted.

Ready for more?

Pro keeps everything on this page and adds multi-step forms, synced blocks, email variables, color themes, PDF attachments, per-language emails, a CRM, and email blocks that pull data from your other plugins.

Help

Troubleshooting and FAQ

No email arrives

FormFlow hands the message to wp_mail(). If other WordPress mail (a password reset, for instance) also fails, the problem is delivery, not FormFlow: install an SMTP or delivery plugin. If other mail arrives and FormFlow's does not, open the form's settings and check that the notification is enabled and has a recipient, then use the editor's test send.

A visitor says the form will not submit

Check the CAPTCHA first: a published form set to a provider with no keys shows a challenge nobody can pass, and the Dashboard flags it. After that, look for a required field hidden by a show/hide rule.

A token prints raw in an email

A token that has no value is left empty rather than printed, so raw text in a sent email usually means a typo in the token name. Insert tokens from the Dynamic data list instead of typing them.

Where are submissions stored?

In your own database, in the plugin's own tables. Nothing is sent to a third party. The technical reference lists the tables.

What happens when I uninstall?

Nothing is removed unless you turn on Delete data on uninstall in Settings first. With it off, your forms, entries and templates survive a reinstall.

Does it need WooCommerce?

No. WooCommerce only adds the store-specific blocks and the WooCommerce email designs.