LifetimePlugins.com
Lifetime Forms › Documentation

Full Documentation

Everything you need to know about Lifetime Forms: the visual builder, every field type, templates, entries, notifications, integrations, anti-spam, payments, conditional logic, save and resume, privacy tools and answers to common questions.

📝

Overview

Lifetime Forms is a drag and drop form builder for WordPress. Build contact forms, quote requests, bookings, registrations, surveys and paid order forms in a visual editor, store every submission in your own WordPress database, export to CSV, and send leads to the email marketing tool you already use.

Free forever

  • The full visual builder, 25 field types and 27 ready-made templates.
  • Entry storage with statuses, an entry detail view and CSV export. Your leads live in your own database, with no cap and no paywall.
  • Conditional logic, multi-step forms, side-by-side field layouts and file uploads.
  • Anti-spam: honeypot, time-trap, keyword blocklist, plus reCAPTCHA v2 and v3, hCaptcha, Cloudflare Turnstile and Akismet.
  • All 7 email marketing integrations and webhooks, included.
  • One-time payments through Stripe and PayPal with a 0% platform fee.
  • Built-in SMTP, save and resume, abandonment capture, and GDPR tools.

The promise

  • No subscriptions. The free plugin needs no account and no license key. The optional Lifetime Forms Ultra upgrade is a one-time purchase, never a recurring fee.
  • No phone-home. The plugin makes no request of its own to LifetimePlugins.com or anyone else. The only outbound calls it ever makes go to a service you connected yourself (an email provider, a captcha, Stripe or PayPal), and only after you save that service's keys and enable it on a specific form.
  • Your data stays yours. Entries are stored in the plugin's own tables inside your WordPress database and are exportable to CSV at any time.

Requires WordPress 5.8 or newer and PHP 7.4 or newer. Current version: 1.0.0.

🚩

Getting started

1

Install and activate

Go to Plugins → Add New → Upload Plugin, choose the Lifetime Forms ZIP, click Install Now and Activate. A Lifetime Forms menu appears in the sidebar with Dashboard, Create New, Entries, Integrations, Settings and More Plugins.

2

Create a form

Open Lifetime Forms → Create New. The Start with a template chooser opens: pick one of the 27 templates or Blank form, give the form a title, then drag fields from the left palette onto the canvas.

3

Activate and embed

Flip the status toggle in the toolbar from Draft to Active and click Save. Copy the shortcode [lifetime_form id="123"] (shown in the editor toolbar and on the Dashboard with a Copy button) and paste it into any page or post.

4

Receive the first entry

Submit the form on your site. The submission appears under Lifetime Forms → Entries as Unread, and a notification email goes to the site admin address by default.

ℹ️
The form only renders when it is Active

New forms are saved as Draft. A Draft form outputs nothing on the front end, so if the shortcode leaves an empty space, open the form in the editor and switch the toggle to Active. The form's CSS and JavaScript load only on pages that actually render a form.

🎛️

The visual builder

The builder has three panels: the Fields palette on the left (grouped into Standard fields, Advanced fields, Layout and Payment), the form canvas in the center, and the Settings panel on the right with a Field tab and a Form settings tab.

The canvas

  • Drag a field from the palette onto the canvas, or drag existing fields to reorder them.
  • Every field card has Move up, Move down, Duplicate and Delete actions, and shows a Required tag when set.
  • Click a card to open its settings in the Field tab.

The toolbar

  • Form title (defaults to “Untitled Form”).
  • Use a template reopens the template chooser.
  • The shortcode chip for the saved form.
  • The Draft / Active status toggle and the Save button.

Existing forms autosave about three seconds after your last change; the toolbar shows “Unsaved changes” and then “Autosaved.”

Field settings

  • Label, Required, Placeholder, Help text.
  • Options, one per line, for Dropdown, Multi-select, Checkboxes and Multiple choice.
  • Field width: Full width, Half (1/2) or Third (1/3).
  • Min, Max and Step for Number and Slider fields.
  • Allow multiple files and Max files for File upload.
  • Amount for a Payment field, Content for an HTML block.
  • Conditional logic rules (see Conditional logic).

Form settings

Grouped into Submit button (button text), Confirmation (show a message or redirect to a URL), Email notification, Spam protection, Save & resume, Privacy & data and Integrations. Each group is covered in its own section below.

Side-by-side fields

There is no separate “columns” field. Set a field's Field width to Half or Third and consecutive half- or third-width fields pack into one row (for example Email and Phone next to each other, or three third-width fields in a line). They stack automatically on small screens. Most templates already use this for their Email and Phone pair.

Multi-step forms

Drag a Page break (multi-step) layout field onto the canvas wherever a new step should begin. On the front end the form shows a Step 1 of N indicator with Previous and Next buttons. Required fields are validated per step before the visitor can move on, and conditional logic keeps working across steps.

🧩

Field types

The palette contains 29 field types. 25 are free, and 4 (Signature, Repeater, Calculation and Subscription) are part of Lifetime Forms Ultra: they appear in the free palette with an ULTRA badge and the tooltip “Available in Lifetime Forms Ultra”, but cannot be dragged onto the canvas until you upgrade.

✏️

Standard fields

The everyday inputs, all free.

  • Single line text
  • Paragraph text
  • Email
  • Phone
  • Number
  • Website / URL
  • Name
  • Dropdown
  • Multi-select
  • Checkboxes
  • Multiple choice
  • Consent / GDPR
🧭

Advanced fields

Structured and specialised inputs.

  • Address
  • Date
  • Time
  • File upload
  • Star rating
  • Slider
  • Rich text
  • Hidden field
  • Signature ULTRA
  • Repeater ULTRA
📐

Layout

Blocks that carry no value and shape the form.

  • HTML block
  • Section divider
  • Page break (multi-step)
💳

Payment

Take money through Stripe or PayPal.

  • Payment (one-time)
  • Order total
  • Calculation ULTRA
  • Subscription ULTRA

Field notes

  • Number and Slider: set Min, Max and Step. Leave a limit empty for no limit. Values outside the range are rejected on the server as well as in the browser.
  • Name: a single full-name input. When a submission is sent to an email provider, the first word becomes the first name and the rest the last name.
  • Address: Address line 1, Address line 2, City, State / Province, ZIP / Postal code and Country. When the field is required, line 1 and city must be filled in.
  • Star rating: a 1 to 5 star picker, keyboard accessible.
  • File upload: accepts jpg, jpeg, png, gif, pdf, doc, docx and txt, handled through the WordPress uploads API. Turn on Allow multiple files to accept several files per field, up to the Max files you set (maximum 20, default 5). Uploaded files appear as links in the entry.
  • Rich text: visitors get bold, italic, underline, lists and links. Submitted HTML is reduced on the server to a small allowlist (p, br, strong, em, b, i, u, ul, ol, li, a with href, blockquote); nothing executable survives.
  • Hidden field: never shown to the visitor, but it can feed conditional logic rules.
  • Consent / GDPR: a checkbox with your own wording, for terms, privacy or marketing consent. Make it required to force acceptance.
  • HTML block: place headings, instructions or basic HTML between fields.
  • Payment (one-time): a fixed Amount (for example 19.99). Add an Order total field to display the sum of all payment fields. See Payments.
🗂️

Templates

Lifetime Forms ships with 27 ready-made templates across 11 categories. The chooser opens whenever you create a new form (and from the Use a template button); each card shows a short description and its field count. Pick one and its fields load onto the canvas, where every field can be changed afterwards.

General

  • Simple Contact Form
  • Feedback / Rating
  • Suggestion Box

Business

  • Request a Quote
  • Appointment Booking
  • Consultation Request
  • Vendor Application
  • Membership Application (two-step)

Marketing

  • Newsletter Signup
  • Testimonial
  • Customer Satisfaction Survey

Support

  • Support Request
  • Bug Report

Events

  • Event Registration
  • RSVP
  • Catering Request
  • Contest Entry

Education

  • Course Enrollment

HR & Jobs

  • Job Application

Real Estate

  • Real Estate Inquiry

Health & Wellness

  • Medical Appointment

Nonprofit

  • Volunteer Signup
  • Donation (paid, Stripe or PayPal)
  • Petition

eCommerce

  • Product Order (paid, with shipping address)
  • Return / RMA Request
  • Warranty Registration

Every template uses free field types only, so they all work in the free plugin.

🗄️

Entries & CSV export

Every submission is stored in your own WordPress database and listed under Lifetime Forms → Entries. Choose a form in the switcher at the top, then browse, filter and manage its entries. There is no entry limit in the free plugin.

Statuses

  • Unread, a new submission (the default).
  • Read, once you have looked at it.
  • Spam and Trash, moved there by you.
  • Pending payment and Paid, for forms with a payment field.
  • Partial, a saved or abandoned draft (see Save & resume). Partials never count as submissions.

Actions

View, Mark read / Mark unread, Spam / Not spam, Trash / Restore and Delete.

Entry detail

Open View to see one entry: the date, status, payment details for paid forms, the IP address (when IP storage is on for that form), and every field with its label. Uploaded files are shown as links.

CSV export

Click Export CSV to download all entries of the selected form (Partial drafts are never included). Every cell passes through a formula-injection guard, so spreadsheets open the file safely, and rich-text values are flattened to plain text.

💡
Leads are stored free

Some form plugins only email you submissions, or keep entry storage behind a paid tier. Lifetime Forms stores every entry on your own site, in the free version, and lets you export them whenever you like.

✉️

Notifications & email

Admin notification

Under Form settings → Email notification, keep Send an email on each submission on and set:

  • Send to: one or more addresses separated by commas. Defaults to {admin_email}.
  • Subject: defaults to “New form submission”.

The email is plain text: a “New submission for: form title” line followed by one “Label: value” line per field.

Merge tags

  • {admin_email}, the site admin address from Settings → General.
  • {field:email}, the first email address the visitor typed into any field.

Both tags work in Send to and Subject. The message is sent from the admin address, and its Reply-To is set to {field:email} automatically, so hitting Reply in your inbox writes back to the visitor.

Confirmation

After submitting, the visitor sees a message (default “Thanks for your submission!”) or is redirected to a URL you set.

Built-in SMTP

Default WordPress mail is often flagged as spam. Open Lifetime Forms → Settings → Email delivery (SMTP), tick Send emails through SMTP and fill in:

  • From name and From email (use an address on the domain your provider sends for).
  • SMTP host and Port (587 by default).
  • Encryption: None, SSL (port 465) or TLS (port 587).
  • My server requires authentication, then Username and Password.

Save, enter an address under Send a test email to and click Send test email. It works with any SMTP relay (Brevo, SendGrid, Mailchimp Transactional, Gmail or your host's own server), and no separate SMTP plugin is needed.

ℹ️
Applies to all site email

While enabled, every email WordPress sends goes through this SMTP connection, not just form notifications. The password is stored on your site only and is never displayed again after saving.

📮

Integrations

Connect a provider once under Lifetime Forms → Integrations, then enable it per form under Form settings → Integrations. Seven email marketing services plus generic webhooks are included, all free.

ProviderWhat you enterWhere to find itSubscribes to
BrevoAPI keyBrevo → Settings → SMTP & API → API Keys (create a v3 key)Contact lists
MailchimpAPI keyAccount → Extras → API keys. The key ends with your datacenter, e.g. -us21Audiences (tags supported)
SendGridAPI keySettings → API Keys. The key needs Marketing permissionsMarketing lists
MailerLiteAPI keyMailerLite → Integrations → APIGroups
Kit (ConvertKit)API keyKit → Settings → Developer → API Key (v3)Tags (a tag must be selected)
ActiveCampaignAPI URL and API keySettings → Developer → API Access (URL like https://youraccount.api-us1.com)Lists
GetResponseAPI keyTools → Integrations and API → API → Generate API keyCampaigns (lists)
WebhooksWebhook URLAny URL you control, for example a Zapier, Make or n8n triggerReceives the full submission as a JSON POST

On the Integrations page

  • Paste the credentials and click Save, then Test connection to verify them against the live API.
  • Pick a Default list (new subscribers land there unless a form chooses its own).
  • Disconnect removes the stored credentials entirely.
  • Keys are shown masked (the last four characters only) and never echoed in full again. The list catalog is cached for five minutes.

On each form

  • Enable the provider and pick its List / audience, or keep Use the global default list.
  • Email field: choose which field holds the address, or leave Auto-detect (first email field).
  • Tags: comma-separated. Mailchimp applies them to the member and webhooks include them in the payload.
  • A Name field is split into first and last name for the provider.

Webhook payload

Webhooks receive JSON with form_id, form_title, submitted_at and a fields object keyed by field id, each carrying its label and value, plus email and tags when present.

🔒
Consent-gated, and never in the way of a submission

Dispatch runs after the entry is saved and is gated by the lftmf_consent_ok filter, so a consent-management plugin can block marketing sends. If a provider is down or rejects the contact, the failure is logged only when WP_DEBUG is on and the visitor's submission still succeeds. For paid forms, providers are contacted only after the payment has been verified.

🛡️

Anti-spam

Spam checks run in this order on every submission: honeypot, time-trap, captcha, Akismet, keyword blocklist. All of them are free and configured per form under Form settings → Spam protection.

On by default, zero setup

  • Honeypot field: an invisible input that humans never see. If a bot fills it, the submission is rejected.
  • Time-trap (block instant submits): submissions sent less than 2 seconds after the form was rendered are rejected.

Keyword blocklist

List keywords one per line or comma-separated. Any submission containing one of them (case-insensitive, in any field) is rejected.

Akismet

Install and configure the Akismet plugin, then tick Check submissions with Akismet on the form. No keys are needed in Lifetime Forms. The submission's text, author name and email, IP and user agent are sent to Akismet for a spam check.

Captcha

Save the keys once under Lifetime Forms → Settings (each provider has a Site key and a Secret key), then choose the captcha per form:

  • reCAPTCHA v2: the classic “I'm not a robot” checkbox. Keys at google.com/recaptcha/admin.
  • reCAPTCHA v3: invisible and score-based; submissions scoring below 0.5 are rejected.
  • hCaptcha: a privacy-focused challenge. Keys at dashboard.hcaptcha.com.
  • Cloudflare Turnstile: free and mostly invisible. Create a widget under Turnstile in your Cloudflare dashboard.

The widget renders just above the submit button, and the provider's script loads only on pages with a form that uses that captcha. Secret keys are stored on your site only and are sent solely to that provider's verification endpoint.

💡
Recommended setup

Keep the honeypot and time-trap on. If spam still gets through, add Cloudflare Turnstile or reCAPTCHA v3 (both nearly invisible to real visitors), then Akismet if you already run it. Use the blocklist for the specific phrases that keep coming back.

💳

Payments

Accept one-time payments with Stripe and PayPal. Lifetime Forms adds a 0% platform fee: you keep everything except the processor's own fee.

Set up the processor

Under Lifetime Forms → Settings:

  • Payments (Stripe): paste the Publishable key and Secret key from Developers → API keys in your Stripe dashboard, and choose a Currency (USD, EUR, GBP, PLN, CAD, AUD, CHF, SEK, NOK, DKK or CZK). Test or live mode simply follows the keys you paste (sk_test_ or sk_live_).
  • Payments (PayPal): paste the Client ID and Secret of a REST API app created under Apps & Credentials in the PayPal Developer Dashboard, and pick the Environment: Sandbox (testing) or Live.

Build the paid form

Add a Payment (one-time) field and set its Amount. Several payment fields add up. An optional Order total field shows the visitor the sum. When both Stripe and PayPal are configured, the form shows a Pay with choice: Card (Stripe) or PayPal.

What happens on submit

  1. The entry is stored as Pending payment.
  2. The visitor is sent to Stripe Checkout or PayPal's hosted page and pays there.
  3. Back on your site, the plugin verifies the payment with the processor: Stripe must report the session as paid, PayPal must report the order as completed, and in both cases the amount must match exactly.
  4. Only then does the entry become Paid, and only then do the notification email and integrations fire, exactly once.
  5. The visitor lands on your confirmation message or redirect URL. If the payment was cancelled or could not be verified, they return to the form with a notice and the entry stays Pending payment.
🔒
Secure by design

Card details never touch your site. The amount is computed on the server from the saved form only, so nothing sent by the browser can change what is charged. No application fee of any kind is ever sent to Stripe or PayPal. The smallest charge Stripe accepts is 0.50 in the currency's main unit. Recurring and subscription payments are part of Ultra.

🔀

Conditional logic

Show or hide any field based on what the visitor entered in other fields. Select the field, open Conditional logic in the Field tab and tick Enable conditional logic, then build the sentence:

[Show | Hide] this field when [all rules match | any rule matches], with each rule being field + operator + value.

Operators

  • is / is not
  • contains / does not contain
  • is greater than / is less than (numeric)
  • is empty / is not empty

Rules of the game

  • Up to 20 rules per field. “All” means AND, “any” means OR.
  • Checkbox and multi-select fields match when any selected value satisfies the rule.
  • Conditions can chain: a field hidden by its own rules counts as empty for every rule that references it.
  • A Hidden field can be a rule source but is never toggled itself. Layout blocks cannot be sources.
🔒
Evaluated on the server too

The browser hides fields instantly, but the server recomputes the same rules from the submitted values. A conditionally hidden field is never treated as required and its value is never stored, even if the browser was tampered with.

💾

Save & resume

Long forms lose people. Two options under Form settings → Save & resume keep their progress:

Let visitors save and continue later

Adds a Save and continue later button to the form. Clicking it stores the current answers and shows a private link (“Bookmark or copy this link to finish later”). Opening that link prefills the form; when the visitor finally submits, the draft is removed so nothing is duplicated.

Capture abandoned forms

Quietly auto-saves what a visitor typed, about two seconds after the last change and again when they leave the page. Half-filled forms show up under Entries as Partial with an “In progress / abandoned” tag instead of vanishing, so you can follow up.

  • Each draft is keyed by a private random 32-character token. The link only ever restores that visitor's own draft; a wrong token simply shows an empty form.
  • Partials never count as submissions and are never included in the CSV export.
  • File uploads and payment fields are never drafted. Drafts are capped at 500 per form.
⚖️

Privacy & GDPR

Per form

  • Consent / GDPR field: add a required acceptance checkbox with your own wording.
  • Store IP address with entries: on by default; switch it off under Form settings → Privacy & data to skip the submitter's IP.
  • Data retention: delete entries older than N days (0 keeps them forever). A daily cleanup removes only entries strictly older than the window.

WordPress privacy tools

Lifetime Forms registers with Tools → Export Personal Data and Tools → Erase Personal Data. Given an email address, the exporter finds every entry where a field equals that address and exports each field with its label, the submission date and the IP (when stored). The eraser deletes those entries and their metadata.

Everything stays on your own server. No submission data is sent to a third party unless you connect an integration, captcha or payment processor and enable it on a form. Uninstalling the plugin removes its tables and settings.

📊

GA4 analytics

Under Settings → Analytics (GA4), tick Enable GA4 events to send lftmf_form_view (when a form comes into view) and lftmf_form_submit (on a successful submission), with the form id and title, to the Google Analytics 4 setup your site already runs. The plugin never loads Google's script and makes no request to Google itself: it only pushes events to your existing gtag or dataLayer, and only when analytics consent is granted (a consent plugin can define window.lftmfConsentOk). The optional Measurement ID field is for your reference only and is never sent anywhere.

⭐

Ultra features

These features are part of Lifetime Forms Ultra, a one-time upgrade, never a subscription. See pricing →

Conversational forms

One question at a time, for higher completion on long forms.

Calculation field

Compute totals and quotes from other fields, live.

Signature field

Collect e-signatures on contracts, waivers and agreements.

PDF generation

Turn submissions into PDFs.

Subscription payments

Recurring payments through the same payment field workflow.

Repeater field

Let visitors add as many rows of a group as they need.

User registration & front-end posts

Register WordPress users and accept posts from the front end.

AI generator, CRM & analytics

An AI form generator, Salesforce and HubSpot integrations, and advanced analytics.

❓

FAQ & troubleshooting

Notification emails are not arriving. What should I check?

First check the spam folder and confirm the Send to address in Form settings. If mail from your site is unreliable, turn on Email delivery (SMTP) under Lifetime Forms → Settings, route it through your provider (Brevo, SendGrid, Gmail, your host), save, and use Send test email. Make sure the From email is on a domain your SMTP provider is allowed to send for. The entry is always stored under Entries even if the email fails.

Spam is getting through. How do I stop it?

Honeypot and time-trap are on by default but sophisticated bots can pass them. Save captcha keys under Settings and enable Cloudflare Turnstile or reCAPTCHA v3 on the form (both are nearly invisible). If you run Akismet, tick Check submissions with Akismet. Add recurring phrases to the Keyword blocklist.

The shortcode shows nothing on the page.

The form must be Active: open it in the editor and flip the toggle from Draft to Active, then Save. Also check that the id in [lifetime_form id="…"] matches the form's id on the Dashboard.

Is there a Gutenberg block?

Not in version 1.0.0: forms are embedded with the [lifetime_form id="123"] shortcode. In the block editor use a Shortcode block; the shortcode also works in the classic editor and in page builders and widgets that render shortcodes.

Can I style the form to match my site?

Yes. The front-end styles are neutral and inherit your theme's fonts and colors where possible. For custom CSS, target the .lftmf-form wrapper, .lftmf-field wrappers, .lftmf-label and the .lftmf-btn / .lftmf-submit button classes from Appearance → Customize → Additional CSS.

Is it really free, and what is in Ultra?

The free plugin is complete: builder, 25 field types, 27 templates, entries with CSV export, conditional logic, multi-step, anti-spam, all email integrations, Stripe and PayPal one-time payments, SMTP, save and resume and GDPR tools. The optional one-time Ultra upgrade adds conversational forms, calculations, e-signatures, PDF generation, the repeater field, user registration, front-end post submission, subscription payments, an AI form generator, CRM integrations and advanced analytics.

Where are entries stored, and does anything leave my site?

In your own WordPress database, in the plugin's own tables. Nothing is sent anywhere unless you connect an email provider, captcha or payment processor and enable it on a form. The plugin makes no calls of its own to LifetimePlugins.com.

Do I need an account or a subscription?

No. Everything runs on your site. Ultra is a one-time purchase, never a subscription.

How do payments stay secure?

Card entry happens on Stripe's or PayPal's hosted page, never on your site. The amount is computed on the server from the saved form, every payment is verified with the processor before an entry is marked Paid, and Lifetime Forms adds no platform fee.

What happens when I uninstall the plugin?

Deleting the plugin from the Plugins screen removes its database tables (forms, entries, entry metadata and stats) and its settings. Export your entries to CSV first if you want to keep them.

Where do I get support?

Email support@lifetimeplugins.com or use the Report a bug form. Include your WordPress and PHP versions and, for email or integration issues, which provider you use.