form_submit

A form was submitted. The identity of the form, and nothing that was in it.

FieldValue
Nameform_submit
Severity9 (INFO)
Written byBrowser tag.
Turned off bydata-auto-forms="false"

When it fires

On a submit event reaching the document, in the capture phase. Every form on the page counts, including one a framework handles entirely in JavaScript, because the browser fires the event either way.

Capture phase means we see the submit before the page's own handler has had a chance to cancel it. A form that fails validation therefore looks the same as one that went through, and that is a limit of the automatic measurement rather than a setting.

Attributes

AttributeTypeWhat it holds
firstrun.form.idstringThe form's id attribute. Absent when it has none.
firstrun.form.namestringThe form's name attribute. Absent when it has none.

Every entry also carries the resource its client sends once per batch: session.id, user.id once you have called user(), and the rest of the list on the overview. Anything you pass yourself lands in the same map, and your key wins on a collision.

What it never carries

No field, no value, no label, and not even a count of fields. The two attributes above are read off the form element itself, and there is no setting that makes anything else be read.

It does not say whether the submission succeeded. For that, write your own event once the request comes back: a signup having been created is a different question from a form having been submitted, and it is one only your code can answer.

Questions it answers

A widget is a filter, a group by, an aggregate, a time bucket and a limit. These are those five parts written out, and every one of them is something you can build yourself.

QuestionThe query
Which forms get usedName is form_submit . group by firstrun.form.id . count of entries
Submissions over timeName is form_submit . count of entries . bucket by day
How many people submit anythingName is form_submit . count of uniques

See also