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
Create a dataset
Create or choose the Axiom dataset that should receive formbase records.
- 2
Create an ingest token
Create an API token with permission to ingest into that dataset.
- 3
Connect in formbase
Open Workspace → Integrations → Analytics, press Connect on Axiom, enter Dataset and API token, choose the Region, and press Connect.
- 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 records contain personal data
A full submission can contain names, emails, free text, files, signatures, and other sensitive answers. Use a restricted dataset, keep token scope narrow, and set retention/access rules before enabling this stream.
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
| Problem | Check |
|---|---|
| Test rejected | Dataset exists, token has ingest permission, and selected region matches your Axiom organization. |
| Events arrive but answers do not | Enable Send respondent answers on that specific form. |
| Answers stopped | 20 deliveries in a row failed. Restore dataset access, then save a new API token. |
| Wrong forms appear | Filter by form_id or disable event forwarding on forms that should stay out. |