formbasedocs
Go to appApp

Available on the Free plan

This works on every plan, including Free. Compare plans →

Integrations

Axiom

Query raw form events in APL, build dashboards and monitors, and optionally send full submitted answers.


Connect Axiom

  1. 1

    Create a dataset

    Create or choose the Axiom dataset that should receive formbase records.

  2. 2

    Create an ingest token

    Create an API token with permission to ingest into that dataset.

  3. 3

    Connect in formbase

    Open Workspace → Integrations → Analytics, press Connect on Axiom, enter Dataset and API token, choose the Region, and press Connect.

  4. 4

    Send a test event

    Open any form → Settings → Integrations → Analytics streaming and click Send test event.

The two region choices are US East 1 (AWS) and EU Central 1 (AWS). Pick the one your Axiom organization lives in — formbase derives the ingest endpoint from it, and ingesting into the wrong region is rejected.

Analytics events

Connecting Axiom turns answer-free event forwarding on for every form in the workspace. Records use event names form_view, form_engaged, and form_submit, with the same parameters documented in Analytics streaming.

['your-dataset']
| where ['event'] in ('form_view', 'form_engaged', 'form_submit')
| summarize events=count() by ['event']

Each record flattens the event parameters to top level, so form_id, source, device and the rest are ordinary columns you can filter and summarize on.

Event forwarding is best-effort and not retried. Disable it for one form under Form settings → Integrations → Analytics streaming → Forward analytics events.

Respondent answers

Axiom can also receive one full record per completed submission. This stream is off by default and must be enabled separately for each form with Send respondent answers.

An answer record is the same event envelope a custom webhook receives, plus an Axiom _time field: the event id, type, createdAt, apiVersion and test, and under data the form, the submission (id, respondent email, submitted time, PDF link, language), an answers object keyed by field key and a display object with the same keys as readable text. Submissions that answered a request also carry a request block with your external id and metadata. The full shape is in the webhook reference.

Answers are streamed when a submission is completed and again when a respondent edits it. Abandoned drafts never reach Axiom this way — answer streaming has no idle window.

Answer delivery and failures

Answer records ride the submission delivery queue: up to 5 attempts with exponential backoff. After 20 consecutive failures the destination stops being queued, so a bad token or a rejected dataset cannot generate a failing delivery for every new submission. Saving a new API token clears the error and resumes delivery.

Event forwarding and answer streaming have independent switches. You can send answers without events, events without answers, both, or neither for each form.

Troubleshooting

ProblemCheck
Test rejectedDataset exists, token has ingest permission, and selected region matches your Axiom organization.
Events arrive but answers do notEnable Send respondent answers on that specific form.
Answers stopped20 deliveries in a row failed. Restore dataset access, then save a new API token.
Wrong forms appearFilter by form_id or disable event forwarding on forms that should stay out.

Next steps