Supported form plugins

Tracking and forms

Supported form plugins

This page explains which form plugins SmartDingo Form Tracker captures leads from, how reliable each
one is, and how to tell best-effort captures apart from confirmed ones. It covers lead capture
specifically — the paid feature that stores each submission as a lead.

Note Two different features are at play. Auto-fill (writing tracked values into your form
fields) works with virtually any form that has mappable fields. Lead capture (Starter) is
reliable only for the supported AJAX plugins below and best-effort otherwise. Don’t assume the two
behave the same on a given form.


Reliability at a glance

Form typeHow the lead is capturedReliability
Supported plugin, AJAX submission (Contact Form 7, Gravity Forms, WPForms, Fluent Forms, Elementor Pro, WS Form, Formidable, Ninja Forms)Dedicated success-event listener, fired after the plugin validates and the server accepts the submissionReliable
Supported plugin, redirect / non-AJAX confirmationsendBeacon on page navigation (beforeunload), fired before server-side validation completesBest-effort
Unknown / other plugin, custom HTML formGeneric submit listener with a short delay (1500 ms)Best-effort

“Reliable” means the lead is sent only after the form plugin confirms a successful submission, so
validation failures and spam rejections don’t create leads. “Best-effort” means the lead may be sent
before the server has finished validating — so a submission the server later rejects can still show
up as a lead. See distinguishing best-effort leads below.

Warning For the most reliable capture, enable AJAX submission in your form plugin’s
settings wherever that option exists. A redirect-style confirmation (the page reloads or navigates
to a thank-you page) always falls back to the best-effort beacon path.


How capture works, briefly

For each supported plugin, the tracker listens for that plugin’s own “submission succeeded” event
and only then reads the form’s fields and sends the lead. Most of these events are delivered through
jQuery, so those listeners only attach when jQuery is present on the page — which it normally is,
because the form plugins themselves load it. Two integrations are exceptions: Contact Form 7 uses a
native browser event (no jQuery needed), and Ninja Forms uses its own Backbone radio channel.

Note There is no REST API. Leads are posted to WordPress’s admin-ajax.php endpoint. If a
supported plugin’s event doesn’t fire (for example jQuery isn’t loaded, or the form submits by full
redirect), capture falls back to the best-effort beacon or the generic fallback.


Supported plugins

Contact Form 7

  • Detection: form has the .wpcf7-form class (or contains a .wpcf7-form-control).
  • Success event: wpcf7mailsent (a native DOM event on the form).
  • Submission: AJAX. jQuery not required for this listener.
  • Reliability: reliable — fires only after CF7’s mail-sent confirmation.

Gravity Forms

  • Detection: form id starts with gform_, or the form is inside a .gform_wrapper.
  • Success event: gform_confirmation_loaded.
  • Submission: AJAX (Gravity Forms submits into a hidden iframe). Requires jQuery.
  • Note: Gravity Forms replaces the form with its confirmation message before the success event
    fires, so the tracker snapshots the form on submit and reads the captured field values when the
    confirmation loads. No action needed on your side.
  • Reliability: reliable.

WPForms

  • Detection: form has the .wpforms-form class.
  • Success event: wpformsAjaxSubmitSuccess (fired on the form element).
  • Submission: AJAX. Requires jQuery.
  • Reliability: reliable. Enable AJAX submission in the form’s settings if it isn’t already on.

Fluent Forms

  • Detection: form has the .frm-fluent-form class or a data-form_id attribute.
  • Success event: fluentform_submission_success.
  • Submission: AJAX. Requires jQuery.
  • Note: the tracker handles both the Fluent Forms 5.x event shape (positional arguments) and
    the 6.x shape (a single { form, config, response } object). Both versions are supported.
  • Reliability: reliable.

Elementor Pro

  • Detection: form has the .elementor-form class.
  • Success event: submit_success.
  • Submission: AJAX. Requires jQuery.
  • Note: the Form widget is an Elementor Pro feature — the free Elementor plugin has no forms.
  • Reliability: reliable. The submit_success event fires only after a successful AJAX
    submission, so leads are captured after validation, exactly like the other supported plugins.

WS Form

  • Detection: form id starts with wsf-, or the form has the .wsf-form class.
  • Success event: wsf-submit-success (a jQuery custom event on document; the success-only
    event is used so server-rejected or spam submissions don’t create leads).
  • Submission: AJAX. Requires jQuery.
  • Reliability: reliable.

Formidable Forms

  • Detection: form has the .frm-show-form class.
  • Success event: frmFormComplete.
  • Submission: AJAX. Requires jQuery.
  • Reliability: reliable.

Ninja Forms

  • Detection: form is inside a .nf-form-cont container.
  • Success event: the submit:response message on Ninja Forms’ nfRadio forms channel.
  • Submission: AJAX. Requires Backbone and nfRadio (both loaded by Ninja Forms itself), not
    jQuery events.
  • Reliability: reliable.

Redirect and non-AJAX confirmations (best-effort)

If a supported form is configured to redirect to a thank-you page (or otherwise reload the page)
instead of confirming via AJAX, its success event never gets a chance to run before the browser
navigates away. To avoid losing the lead entirely, the tracker registers a beforeunload safety net
that sends the lead with navigator.sendBeacon as the page unloads.

Because this beacon fires before the server finishes validating the submission, it is
best-effort: a submission that the server later rejects (validation error, spam, failed required
field) can still be recorded as a lead. These captures are tagged so you can filter them out.


Unknown and custom forms (best-effort)

For any form that isn’t one of the supported plugins — including plain HTML forms — the tracker uses
a generic submit listener. It waits 1500 ms after submit (to give client-side validation a
chance to reject the form) and, if the form is still on the page and matches one of your
configurations, sends the lead. This never inspects the server response, so it too is best-effort.

Note A form is only ever considered for lead capture if it matches one of your form
configurations
— that is, one of your mapped CSS selectors resolves inside it. Forms with no
matching mapping are not captured at all. See
Field mapping & auto-fill.


Distinguishing best-effort leads

Every stored lead records how it was captured in its tracking data, under capture_method:

capture_method valueMeaning
ajaxCaptured via a plugin success event (reliable) or the generic fallback. This is the default.
beacon-best-effortCaptured by the redirect/beforeunload beacon, before server-side validation.

Any lead marked beacon-best-effort came from a redirect-style submission and may correspond to
a submission the server didn’t actually accept — treat those as unconfirmed and review them before
acting. The value is stored with the lead and included in CSV exports, so you can filter or sort on it.

Note The generic fallback for unknown forms is best-effort by timing, but it is recorded as
ajax rather than beacon-best-effort. If you rely on custom forms, verify a real submission
rather than trusting the capture_method label alone.


Next steps

Stop guessing where your leads come from

You’ve spent the budget. You’ve run the campaigns. You deserve to know what actually worked. SmartDingo gives you complete, accurate, first-party attribution for every WordPress form submission. Start today on the forms you already use.

Works with your existing forms. Setup in minutes. No credit card required.

SmartDingo is a WordPress lead tracking plugin built for online marketers and WordPress developers who need accurate, cookieless attribution. It captures UTM parameters, traffic sources, landing pages, and full visitor journeys for every form submission, working seamlessly with Fluent Forms, Gravity Forms, Ninja Forms, WPForms, and other major WordPress form plugins. Whether you’re tracking leads from Google Ads, Meta, LinkedIn, or organic search, SmartDingo connects every lead to the marketing campaign that generated it.

Copyright 2026 SmartDingo