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.
| Form type | How the lead is captured | Reliability |
|---|---|---|
| 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 submission | Reliable |
| Supported plugin, redirect / non-AJAX confirmation | sendBeacon on page navigation (beforeunload), fired before server-side validation completes | Best-effort |
| Unknown / other plugin, custom HTML form | Generic 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.
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.phpendpoint. 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.
.wpcf7-form class (or contains a .wpcf7-form-control).wpcf7mailsent (a native DOM event on the form).id starts with gform_, or the form is inside a .gform_wrapper.gform_confirmation_loaded..wpforms-form class.wpformsAjaxSubmitSuccess (fired on the form element)..frm-fluent-form class or a data-form_id attribute.fluentform_submission_success.{ form, config, response } object). Both versions are supported..elementor-form class.submit_success.submit_success event fires only after a successful AJAXid starts with wsf-, or the form has the .wsf-form class.wsf-submit-success (a jQuery custom event on document; the success-only.frm-show-form class.frmFormComplete..nf-form-cont container.submit:response message on Ninja Forms’ nfRadio forms channel.nfRadio (both loaded by Ninja Forms itself), notIf 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.
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.
Every stored lead records how it was captured in its tracking data, under capture_method:
capture_method value | Meaning |
|---|---|
ajax | Captured via a plugin success event (reliable) or the generic fallback. This is the default. |
beacon-best-effort | Captured 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
ajaxrather thanbeacon-best-effort. If you rely on custom forms, verify a real submission
rather than trusting thecapture_methodlabel alone.
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.
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.