# Analytics (GA4 and Axiom)

Send form views, starts and submissions to Google Analytics 4 or Axiom, and, with Axiom, the answers of each submission too. Connect once for the workspace, then choose per form.

This works on every plan, including Free. [Compare plans](https://formstep.io/pricing/)

## What is sent

Formstep sends three events: when someone opens a form, when they first answer a question, and when they submit.

Each event says which form it is, whether it came through a share link or a request, and, when Formstep knows them, the country, device, browser, UTM tags and referring site. A submit event also has how long the person took. Events carry a random visitor ID and never include answers, emails or question text.

| Event | Sent when | Also carries |
| - | - | - |
| form\_view | Someone opens the form | form\_id, form\_name, source (link or request) |
| form\_engaged | They first answer a question | The same |
| form\_submit | They submit | The same, plus duration\_seconds |

When known, every event also has country, device, browser, traffic\_source, traffic\_source\_name, traffic\_medium, traffic\_campaign and referrer\_host. Look for these names when you build a report in Google Analytics or query Axiom.

Axiom can also receive the full answers of each submission. That stays off until you turn it on for a form. Google Analytics never gets answers.

Events are sent once. If the destination does not respond, the event is dropped, and the person filling in the form never notices. Answers sent to Axiom are retried like any other integration.

## Choose per form

Once a destination is connected, every form in the workspace sends events. To change that for one form, open it and click **Integrations** (plug icon) in its top bar. Under **Analytics streaming**, pick Google Analytics or Axiom:

- Turn off **Forward analytics events** to stop events from this form.

- Turn on **Send respondent answers** to send each submission’s answers to Axiom.

- Click **Send test event** to check the connection without live traffic.

## Google Analytics (GA4)

You need a GA4 property with a Web data stream. Only the workspace owner can connect it.

1. **Copy the Measurement ID**

   In Google Analytics, go to **Admin › Data streams**, open your Web stream and copy its ID, which looks like G-XXXXXXXXXX.

2. **Create an API secret**

   On the same stream, open **Measurement Protocol API secrets**, create a secret and copy its value.

3. **Connect in Formstep**

   Open **Integrations** in the workspace sidebar. Under **Analytics**, click **Connect** on Google Analytics, enter both values and click **Connect**.

4. **Send a test event**

   Open any form, click **Integrations**, pick Google Analytics and click **Send test event**.

In GA4:

- The test shows under **Reports › Realtime**. The events are named `form_view`, `form_engaged` and `form_submit`.

- To report on a detail such as the form or the device, register it as a custom dimension.

- Mark `form_submit` as a key event if a submission is a conversion for you.

If the test is rejected, check that the Measurement ID and the API secret belong to the same Web stream. If nothing arrives, check your GA filters and internal-traffic rules.

## Axiom

Only the workspace owner can connect Axiom.

1. **Create a dataset and a token**

   In Axiom, create or pick a dataset for Formstep, then create an API token that can ingest into it.

2. **Connect in Formstep**

   Open **Integrations** in the workspace sidebar. Under **Analytics**, click **Connect** on Axiom. Enter the dataset and the token, pick the region of your Axiom organization (US East 1 or EU Central 1), and click **Connect**.

3. **Send a test event**

   Open any form, click **Integrations**, pick Axiom and click **Send test event**.

Each detail of an event arrives as its own field, so you can filter and group by form, source or device in your queries and dashboards.

With **Send respondent answers** on, Axiom gets one record when someone submits and another when they edit their submission. Each record has the answers under each question’s [field key](https://formstep.io/docs/requests/field-keys/). Unfinished drafts are never sent.

If the answers keep failing, Formstep stops sending them. Fix access to the dataset and save a new API token to start again. If the test is rejected, check the dataset name, that the token can ingest, and that the region matches your organization.

Developers: the record format is the one in the [webhooks reference](https://formstep.io/docs/developers/webhooks-reference/#payload).

## Privacy and consent

Analytics events have no answers, but their visitor ID and traffic details still count as personal data in many places. Tell respondents you use third-party analytics, ask for consent where the law requires it, and set how long GA4 or Axiom keeps the data.

> **Answers in Axiom**
>
> Answer records can hold names, emails, free text, files and signatures. Before you turn them on, use a dataset only your team can read, give the token the least access it needs, set retention in Axiom, and make sure your privacy notice covers the transfer.

## Next steps

[Analytics & insights](https://formstep.io/docs/submissions-analytics/analytics-insights/) — Views, starts and submissions inside Formstep

[Health and monitoring](https://formstep.io/docs/integrations/health-monitoring/) — Retries and pausing for answer delivery
