PPactDocs
Administration

Form detail

The per-form workspace: submissions inbox, per-field fill rates, view-to-submission conversion, source and UTM attribution, and consent-grant rate.

Form detail

The form detail view is where you work a single form after it goes live — reading submissions and reading the analytics that tell you whether the form is converting. Both are served from the form's own endpoints under /v1/forms.

Submissions

code
GET /v1/forms/{form_id}/submissions?limit=50&offset=0

Returns stored submissions newest-first from form_submissions, with a total count for pagination. Each row carries the submitted data, the source_url, captured utm_params, whether consent was recorded, and any processing_error raised while dispatching the submission's action. Results are strictly tenant-scoped and 404 if the form does not belong to your tenant.

Analytics

code
GET /v1/forms/{form_id}/analytics?days=30

A single read-only aggregate over form_submissions and form_views — no client-side telemetry pipeline. The payload includes:

  • Volumetotal_all_time, total_in_range, and a continuous submissions_per_day series (empty days filled with zero).
  • Per-field fill rates — for every non-hidden field, the fill_count and fill_rate over in-range submissions. Fill-testing is type-aware: a checkbox or consent field only counts when true, and numeric 0 counts as a real answer (it is a valid NPS/CSAT/CES score).
  • Attributiontop_sources, top_utm_sources, and top_utm_campaigns.
  • Consentconsent_granted_count and consent_grant_rate.
  • Health — a processing_errors count so you can spot forms whose submissions are failing to create leads or update contacts.

Views and conversion

When a form is served through public hosting, page views are recorded in form_views (alembic 0222). The analytics payload folds these in so you get true funnel metrics:

  • total_views_all_time / total_views_in_range and a views_per_day series
  • conversion_rate = in-range submissions ÷ in-range views
  • geo and device mix: top_countries, device_breakdown, top_hosts

Bot views are excluded

Views recorded with device = 'bot' are filtered out of the totals and the conversion math, so your rates reflect real human traffic rather than crawlers.

Reading fill rates

A required field with a fill rate well below 1.0 usually means submissions are failing validation elsewhere or the field is confusing — a strong signal to simplify. An optional field with a very low fill rate is a candidate to drop entirely to reduce friction.