Getting started Free

Install Nestform Free, create your first form, and publish it on a page.

  1. Install and activate Nestform from Plugins (or upload the Free zip).

  2. Open Forms in the WordPress admin — you will see the Nestform app shell (Dashboard, Forms, Entries).

  3. Click New form, pick a starter template or start blank, then name the form.

  4. Add fields in the Fields tab, set Mail / Messages / Settings, then Save and Publish.

  5. Embed the form with the Gutenberg block, Elementor widget, or shortcode (see Embed below).

Pro features need Nestform Pro installed and a Freemius license activated on Forms → License.

Form builder Free

Design forms visually with field cards, required toggles, and template tags like {email}.

  1. Open a form → Fields tab.

  2. Use + Add field or quick chips (Text, Email, Phone, Textarea, Select) to add fields.

  3. Drag rows to reorder. Toggle Required per field. Use visibility / duplicate / delete icons as needed.

  4. Field names become merge tags in mail templates — keep them short and stable (e.g. email, phone).

  5. Use Templates to apply a starter layout, then edit fields to match your brand.

  6. Preview the form, then Save. Publish when ready to accept submissions.

  • Tabs: Fields, Messages, Mail, Settings, Appearance.
  • Publish & Embed panel: shortcode, direct link, entries shortcut, export / duplicate.
  • Import: bring forms from Contact Form 7 or WPForms via Import forms (when available).

Conditional logic Free

Show or hide fields based on other answers so visitors only see what matters.

  1. Edit a field and open its visibility / conditional rules (when configured on the field).

  2. Pick the source field and the condition (equals, not empty, contains, etc.).

  3. Save and Preview — confirm hidden fields stay out of the way until the rule matches.

Shorter visible forms usually convert better. Prefer hiding optional branches instead of asking everything at once.

Embed a form Free

Same Nestform renderer — Gutenberg block, Elementor widget, or shortcode.

  1. Gutenberg: insert the Nestform block → pick the form → update the page.

  2. Elementor: add the Nestform widget → select the form → publish.

  3. Shortcode: paste or into any shortcode-capable content.

  • By ID

    Stable when the form post ID will not change.

  • By slug

    Prefer slug when migrating sites or syncing content between environments.

Entries inbox Free

Every submission lands inside WordPress — triage, open details, and follow up without a third-party inbox.

  1. Open Forms → Entries for the hub across all forms, or open a form → Entries for that form only.

  2. Use kind / status filters (All, New, Read, Spam, and Pro kinds when enabled).

  3. Open an entry to read field values, mark read, or move to spam.

  4. Export when you need a spreadsheet (see Export).

CSV / spreadsheet export Free

Download submissions for reporting, CRM import, or backups.

  1. From a form’s Entries screen (or the export control on the form), start Export.

  2. Choose the format available on your site (CSV and XLSX when enabled).

  3. Open the file in Sheets / Excel and map columns to your CRM if needed.

Email notifications Free

Alert your team on submit and optionally send an autoreply to the visitor.

  1. Open the form → Mail tab.

  2. Set To (and optional Cc / Bcc). Use merge tags like {email} and {name} in subject/body.

  3. Configure visitor autoreply if you want a confirmation email.

  4. Send a test submission and confirm mail arrives (use an SMTP plugin in production).

WordPress wp_mail() depends on server/SMTP setup. If mail fails locally, check PHP mail / SMTP plugins first.

Pro can add HTML email design and PDF attachments on top of this flow.

Spam protection Free

Honeypot, timing, rate limits, blocked words/IPs, Akismet, and captcha keep the inbox human.

  • Built-in honeypot and time traps on front-end forms.
  • Rate limiting and blocked words / IPs in Forms → Settings → Security.
  • Akismet when the Akismet plugin is active and keyed.
  • Captcha providers under Integrations (next section).

Captcha integrations Free

Site-wide captcha for Nestform — reCAPTCHA v2/v3, Cloudflare Turnstile, or hCaptcha.

  1. Open Forms → Integrations → Captcha.

  2. Enable captcha and pick one provider tab.

  3. Paste site key and secret key from the provider console, then Save.

  4. Only one provider is active site-wide. Test a form submit on the front.

Outbound webhooks Free

Push each submission as JSON to Zapier, Make, n8n, or your own endpoint — up to 5 URLs per form in Free.

  1. Open the form → Settings (or Integrations area for webhooks on the form).

  2. Add HTTPS endpoint URLs (max 5 per form on Free).

  3. Submit a test entry and confirm the receiver gets the JSON payload.

Developers can reshape payloads with nestform_webhook_payload and nestform_webhook_request_args.

Dashboard & settings Free

See submission volume, top forms, and plugin-wide defaults without leaving WordPress.

  • Forms → Dashboard: period filters, KPIs, activity chart, top forms.
  • Forms → Settings: general defaults, security, appearance tokens where available.
  • Forms → Developers: live hook reference inside the admin app.

Activate Nestform Pro Pro

Pro is a separate plugin. Licensing is handled by Freemius on Forms → License.

  1. Install and activate Nestform Pro alongside Nestform Free.

  2. Open Forms → License.

  3. Connect / opt-in to Freemius if prompted, then activate your license key (or purchase Pro / Agency).

  4. Confirm status shows Active with your plan. Sync or deactivate the site from the Freemius account panel on the same screen.

  • Pro: 1 site. Agency: up to 5 client sites — same Pro feature set; Freemius enforces quotas.
  • Do not put license keys in Free. Activation lives in Nestform Pro / Freemius only.

Multi-step forms & branching Pro

Break long flows into guided steps and route visitors down different paths.

  1. With Pro licensed, open the form → Fields and enable Multi-step form.

  2. Organize fields into steps; Preview to walk Next / Back.

  3. Add branching rules when answers should skip or jump to another step.

Quizzes, scoring & survey fields Pro

Score answers, define result bands, and collect richer feedback (NPS, matrix, ranking, and more).

  1. Add quiz / survey field types from More fields (Pro).

  2. Assign scores or result bands for quiz outcomes.

  3. Review responses in Entries and Pro analytics / survey charts where available.

Advanced fields, calculated & repeaters Pro

Rating, signature, NPS, scales, ranking, matrix, calculated values, and repeatable groups.

  • Add advanced widgets from More fields when Pro is active.
  • Calculated fields derive values from other answers for quotes or scores.
  • Repeaters collect repeating rows (line items, guests, etc.).

Automations Pro

Run follow-up logic after submit when a flat contact form is no longer enough.

  1. Open the form’s Pro automation settings (when licensed).

  2. Define triggers / conditions and the actions to run.

  3. Submit a test entry and verify side effects (mail, tags, CRM, etc.).

Stripe payments Pro

Collect payments on the form with Stripe fields — checkout that stays inside WordPress.

  1. Connect Stripe keys in Nestform Pro payment settings.

  2. Add a Stripe / payment field to the form.

  3. Test in Stripe test mode, then switch to live keys for production.

Never commit live secret keys to git. Prefer wp-config or environment constants for secrets.

HubSpot sync Pro

Create or update HubSpot contacts on submit so sales sees every lead.

  1. Connect HubSpot from Nestform Pro integrations / HubSpot settings.

  2. Map Nestform fields to HubSpot properties.

  3. Submit a test lead and confirm the contact in HubSpot.

HTML email designer & PDF Pro

Send polished HTML messages and attach PDFs when a submission needs to look client-ready.

  1. Open the form mail / Pro email designer settings.

  2. Design the HTML template with merge tags.

  3. Enable PDF attachment when you need a downloadable summary.

Lead insights & analytics Pro

Deeper dashboard insights for quizzes, surveys, and conversion beyond basic counts.

  • Dashboard panels for lead quality / hot rates when Pro analytics are active.
  • Response breakdowns for key forms.
  • Survey charts for Pro survey field types.

Recruiting / HR module Pro

Optional ATS-lite: job vacancy forms, recruiter inbox, pipeline, and Recruiting dashboard.

  1. Enable Recruiting under Forms → Integrations → Recruiting (requires valid Pro).

  2. On a form, check Treat as job vacancy form and assign a recruiter.

  3. Candidates appear in the Recruiting inbox / pipeline for that vacancy.

Troubleshooting

Quick checks when something does not behave as expected.

  • Form missing on the front: confirm the form is Published and the block/shortcode ID/slug is correct.
  • Submit fails: check captcha keys, spam rate limits, and the browser network tab for the AJAX response.
  • No email: verify Mail → To, merge tags, and SMTP. Check spam folders.
  • Pro features locked: Nestform Pro active + Freemius license valid on Forms → License.
  • Webhook silent: confirm HTTPS URL, 2xx response, and that Free allows up to 5 endpoints.
  • Styling conflicts: Nestform front CSS is scoped; theme CSS may still override — inspect with DevTools.

Shortcodes Dev

Drop a form into any classic content, widget, or template that supports shortcodes.

  • By form ID

    Embed a published Nestform by post ID.

  • By form slug

    Embed by post_name when you prefer a stable slug over a numeric ID.

  • Block & Elementor

    nestform/form

    Prefer the Gutenberg Nestform block or Elementor widget in the editor — same renderer as the shortcode.

JavaScript events Dev

CustomEvents bubble from the <form data-nest-form> element. detail always includes form and formId. Also exposed as window.nestformEvents.

  • nestform:ready

    Form bootstrapped (selects + multi-step). detail.steps when steps exist.

  • nestform:before-submit cancelable

    Submit started — before client validation. Cancelable. Sync custom widgets into inputs here.

  • nestform:validation-error

    Client-side validation failed. detail.errors, detail.message, detail.source.

  • nestform:submit cancelable

    After validation + captcha, before fetch. Cancelable. detail.formData is the request body (mutable).

  • nestform:success

    Server accepted the entry. Fired before reset. detail.message, detail.entryId, detail.values.

  • nestform:error

    Server rejected the submit. detail.message, detail.errors.

  • nestform:network-error

    Fetch/network failure. detail.message, detail.error.

  • nestform:redirect cancelable

    About to change location after success. Cancelable. detail.url, detail.values.

  • nestform:before-step-change cancelable

    Before multi-step index changes. Cancelable — preventDefault() keeps the current step.

  • nestform:step-change

    Multi-step index changed. detail.index, detail.previousIndex, detail.reason.

  • nestform:select-change

    Custom select value changed. detail.name, detail.value, detail.previous.

  • nestform:reset

    Form reset after success (or native reset).

PHP actions Dev

Hook with add_action(). Fired during submit and mail.

  • nestform_before_validate

    Before field validation (after captcha).

  • nestform_submitted

    After entry is stored. Args: form_id, data, entry_id.

  • nestform_mail_sent

    After admin notification mail.

  • nestform_extra_mail_sent

    After conditional extra mail (only if sent).

  • nestform_user_mail_sent

    After visitor autoreply (only if sent).

  • nestform_webhook_sent

    After each outbound webhook HTTP request.

  • nestform_entry_meta_after_triage

    After entry status triage (addons: recruiting stage).

  • nestform_entry_meta_after

    After entry meta box rows.

  • nestform_template_applied

    After a starter template is applied. Args: form_id, key.

PHP filters Dev

Hook with add_filter(). Public extension points to change data, markup, or mail.

  • nestform_verify_captcha

    Captcha pass/fail (custom captcha integrations).

  • nestform_entry_data

    Sanitized entry payload before save.

  • nestform_validate_field

    Per-field value or WP_Error.

  • nestform_captcha_html

    Captcha markup output.

  • nestform_render_html

    Full form HTML.

  • nestform_field_html

    Single field HTML.

  • nestform_field_classes

    Field wrapper classes.

  • nestform_success_message

    Thank-you message text before JSON response.

  • nestform_submit_success_data

    AJAX success payload (message, redirect, entry_id).

  • nestform_redirect_url

    Redirect URL after merge tags (before final sanitize).

  • nestform_sanitize_redirect_url

    Sanitized redirect URL (empty = blocked).

  • nestform_mail_args

    Admin wp_mail() args.

  • nestform_extra_mail_args

    Extra notification wp_mail() args.

  • nestform_user_mail_args

    Visitor autoreply wp_mail() args.

  • nestform_accessible_form_ids

    Form IDs the user may inspect entries for (null = all).

  • nestform_user_can_manage_form_entries

    Whether a user may manage entries for a form.

  • nestform_entries_kind_filters

    Entries hub kind tabs (e.g. All / Forms / Jobs).

  • nestform_entries_hub_query_args

    Entries hub query args (form_ids / exclude_form_ids by kind).

  • nestform_templates

    Starter form templates registry.

  • nestform_settings

    Plugin-wide settings array.

  • nestform_webhook_payload

    Webhook JSON body (per endpoint URL).

  • nestform_webhook_request_args

    Webhook wp_remote_post() args (per endpoint URL).

Pro hooks Pro

Available with licensed Nestform Pro. Without Pro these filters are not applied — callbacks never run.

  • nestform_pre_validate_field

    Early per-field validation for advanced field types.

  • nestform_render_field

    Short-circuit single field HTML for advanced widgets.

  • nestform_mail_attachments

    Admin mail attachment paths (e.g. PDF export).

  • nestform_dashboard_conversion_kpi

    Dashboard conversion KPI card HTML.

  • nestform_dashboard_chart_metrics

    Dashboard chart metrics nav HTML.

  • nestform_dashboard_chart_empty

    Whether the activity chart shows empty state.

  • nestform_dashboard_chart_data

    Extra chart series markup/data.

  • nestform_dashboard_work_pulse_extra

    Extra Work pulse chips (e.g. Hot leads).

  • nestform_dashboard_lead_insights

    Lead insights panel HTML.

  • nestform_dashboard_responses_panel

    Response breakdown panel HTML (survey/quiz).

Code examples Dev

Drop these into functions.php, a small mu-plugin, or a theme script.

PHP

Log every successful submission.

add_action( 'nestform_submitted', function( $form_id, $data, $entry_id ) {
	error_log( sprintf( 'Nestform #%d entry #%d', $form_id, $entry_id ) );
}, 10, 3 );

JavaScript

Listen on document — events bubble from the form.

document.addEventListener( 'nestform:success', function( event ) {
	console.log( 'Entry', event.detail.entryId, event.detail.values );
} );

document.addEventListener( 'nestform:before-submit', function( event ) {
	// Sync custom widgets, or event.preventDefault() to abort.
} );