> For the complete documentation index, see [llms.txt](https://kb.craftformswp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kb.craftformswp.com/documentation/form-building/create-form/form-settings-post-context/analytics.md).

# Track Submissions

Track Form Submissions in Google Analytics 4 (GA4) and Google Tag Manager

CraftForms can tell Google Analytics every time someone successfully sends one of your forms. You'll see how many enquiries, bookings or orders each form brings in, which pages and ads they came from, and you can count them as **conversions** (GA4 calls them *key events*).

There's nothing to install. If Google Analytics is already on your site, most forms start reporting on their own.

### What you need <a href="#what-you-need" id="what-you-need"></a>

* **CraftForms (free)** — form tracking is included in the free version.
* **Google Analytics 4** on your website, added in *one* of these ways:
  * with **Site Kit by Google** or another plugin that adds the "Google tag" (gtag.js), or
  * with **Google Tag Manager (GTM)**.
* Nothing else. No extra plugin, no code.

### How it works (in plain words) <a href="#how-it-works-in-plain-words" id="how-it-works-in-plain-words"></a>

When a visitor sends a form and it goes through successfully, CraftForms sends a small message called an **event** to Google. By default the event is called `craftforms_submit`, and it carries a few details:

| Detail                 | What it is                                                                                                                                    |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `form_id`              | The number of the form in WordPress.                                                                                                          |
| `form_name`            | The form's title, e.g. "Wedding enquiry".                                                                                                     |
| `form_key`             | The form's internal key (useful if two forms share a title).                                                                                  |
| `submission_id`        | The number of the saved submission, if your form saves submissions. Handy for matching a report line to an entry in CraftForms → Submissions. |
| `value` and `currency` | Only for forms with a price (orders, bookings, deposits): the total and the currency, e.g. 149.00 EUR. This lets GA4 show revenue per form.   |

It **doesn't** send what people typed (names, emails, messages). Google doesn't allow personal information in Analytics, and CraftForms keeps it out unless you deliberately switch it on (see below).

If a submission fails, for example the payment was declined or a required answer was missing on the server, CraftForms sends `craftforms_submit_error` to Google Tag Manager instead, so you can spot forms that frustrate visitors.

Forms that send visitors to another page after submitting, like a thank-you page or a payment page, are tracked too. The event is sent before the visitor leaves.

### Turn it on or change it for one form <a href="#turn-it-on-or-change-it-for-one-form" id="turn-it-on-or-change-it-for-one-form"></a>

Tracking is **on by default** for every form. To check or change it:

1. Open the form in the editor (**CraftForms → Forms → Edit**).
2. In the right-hand sidebar, open the **Form** tab and find the **Analytics** panel.
3. Adjust the settings below and click **Save**.

<figure><img src="https://97821998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FM2yV1foUgoGHBC66VBDw%2Fuploads%2F5WiCK3jlDXFzLq9Yrzrt%2FSCR-20261002-phya.png?alt=media&amp;token=00ef0a8d-0b0e-4e45-acae-0f0bde94a76e" alt=""><figcaption><p>Analytics settings for a CraftForms form in the WordPress editor</p></figcaption></figure>

| Setting                                          | What it does                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Track submissions (Google Tag Manager / GA4)** | The main switch. Turn it off to stop sending anything for this form.                                                                                                                                                                                                                                                                                                                                                        |
| **Event name**                                   | The name Google receives. Leave it empty to use `craftforms_submit`. You can use any name made of letters, numbers and underscores that starts with a letter, for example `booking_request`, GA4's recommended lead event `generate_lead`, or `form_submit`. If you choose `form_submit`, switch off GA4's own **Form interactions** tracking (Admin → Data streams → Enhanced measurement), because it uses the same name. |
| **Also send directly to GA4 via gtag()**         | On by default. Sends the event straight to Google Analytics when the Google tag is on your page (for example through Site Kit). Turn it **off** if you use Google Tag Manager *and* you create a GA4 tag for this event there, otherwise each submission is counted twice.                                                                                                                                                  |
| **Include field values in the dataLayer event**  | Off by default. Adds the visitor's answers to the message for Google Tag Manager. Only turn this on if you know exactly why you need it: names, emails and phone numbers are personal data, and sending them to Google Analytics breaks Google's rules. Answers are never sent through the direct GA4 route, even when this is on.                                                                                          |

{% hint style="info" %}
**Tip:** Give each form a meaningful event name only if you want *separate* events. Most sites keep one event name for all forms and tell them apart with `form_name` (see "See which form it was" below).
{% endhint %}

### Setup A: Google Analytics through Site Kit (or another Google tag plugin) <a href="#setup-a-google-analytics-through-site-kit-or-another-google-tag-plugin" id="setup-a-google-analytics-through-site-kit-or-another-google-tag-plugin"></a>

This is the simplest setup, and in most cases there's nothing to do.

1. Make sure Google Analytics 4 is connected in **Site Kit** (or your analytics plugin).
2. Open one of your forms on the live site and send a test submission.
3. In Google Analytics, go to **Reports → Realtime**. Within a minute you'll see `craftforms_submit` in the list of events.

**Count it as a conversion (key event):**

1. In Google Analytics, go to **Admin → Data display → Events**.
2. Find `craftforms_submit` (it appears after the first submission; sometimes it takes a few hours).
3. Click the star, or switch on **Mark as key event**.

From now on, form submissions show up as conversions in your reports. If Google Ads is linked to Analytics, you can import them as Ads conversions too.

### Setup B: Google Tag Manager <a href="#setup-b-google-tag-manager" id="setup-b-google-tag-manager"></a>

If your site uses Google Tag Manager, CraftForms places the event in GTM's "data layer". You then tell GTM to forward it to GA4. It takes about five minutes.

1. **In CraftForms**, open your form's **Analytics** panel and **untick** *Also send directly to GA4 via gtag()*. This avoids double counting if the Google tag is also on your site.
2. **Create a trigger in GTM:** go to **Triggers → New → Custom Event**. For *Event name* enter `craftforms_submit` (or your own event name). Name the trigger "CraftForms – form submitted" and save.
3. **Create variables for the details** (optional, but recommended): **Variables → User-Defined Variables → New → Data Layer Variable**. Create one each for `form_name`, `form_id`, `value` and `currency`.
4. **Create the GA4 tag:** **Tags → New → Google Analytics: GA4 Event**. Enter your Measurement ID (starts with `G-`), set *Event name* to `craftforms_submit` (or `generate_lead`), and under **Event Parameters** add `form_name`, `form_id`, `value`, `currency` using the variables from step 3. Choose the trigger from step 2 and save.
5. Click **Preview**, send a test submission on your site, and check that the tag fired. Then **Submit / Publish** the container.

**Other tags work the same way:** use the same trigger for a Google Ads conversion tag, a Meta (Facebook) Pixel "Lead" event, a LinkedIn Insight conversion, and so on.

### See which form it was <a href="#see-which-form-it-was" id="see-which-form-it-was"></a>

GA4 receives `form_name` with every event, but only shows it in standard reports once you register it:

1. In Google Analytics, go to **Admin → Data display → Custom definitions → Create custom dimension**.
2. Name: "Form name". Scope: **Event**. Event parameter: `form_name`. Save.
3. Do the same for `form_id` if you like.

After that (reports can take up to 24–48 hours to fill in), open **Reports → Engagement → Events → craftforms\_submit** and add "Form name" as a dimension to see submissions per form.

### Good examples <a href="#good-examples" id="good-examples"></a>

* **A salon or clinic** tracks booking requests per service form and marks them as key events, so it can see which Google Ads campaign actually fills appointments.
* **A shop with a product configurator** sees the value of each configured order (`value` + `currency`), not just the number of submissions.
* **A B2B company** uses the event name `generate_lead`, GA4's recommended lead event, so leads line up with Google's built-in lead reports.
* **A multi-language site** keeps one event for all translations of a form and compares them with the "Form name" dimension.

### Tips & troubleshooting <a href="#tips--troubleshooting" id="tips--troubleshooting"></a>

* **I don't see anything in GA4.** Check Realtime first, as standard reports lag by up to 48 hours. Make sure the submission actually succeeded (a confirmation message or redirect). Ad blockers and "reject cookies" choices can block Google Analytics for some visitors; that's normal.
* **Every submission is counted twice.** You're sending the event both directly and through a GTM tag. Untick *Also send directly to GA4 via gtag()* in the form's Analytics panel, or remove the GTM tag.
* **Nothing reaches GTM.** Open GTM **Preview** mode and submit the form: you should see `craftforms_submit` in the left-hand event list. If you renamed the event, the trigger must use the same name, spelled exactly the same.
* **I don't want tracking on one form** (for example an internal staff form). Switch off **Track submissions** in that form's Analytics panel.
* **Cookie consent.** CraftForms sends the event through your existing Google setup, so your consent banner and Google's Consent Mode settings apply as usual.
* **Forms embedded on another website** send the event to the Google Analytics of the page they're shown on.

### FAQ <a href="#faq" id="faq"></a>

**Do I need Google Tag Manager?** No. If Google Analytics is added with Site Kit or another Google tag plugin, submissions are sent automatically. GTM is only needed if you already use it or want to send the event to other tools.

**Does it work with GA4's "form interactions" enhanced measurement?** They're separate. Enhanced measurement guesses form submissions from the page and often misses forms that send without reloading the page, which is how CraftForms works. The CraftForms event is sent only when the submission really succeeds, so it's the one to use for conversions. You can turn off GA4's "Form interactions" to avoid confusion.

**Can I use a different event name for each form?** Yes, set it in each form's Analytics panel. Most sites keep one name and use `form_name` to tell forms apart.

**Is any personal information sent to Google?** No, not unless you switch on *Include field values in the dataLayer event*, and even then only to Google Tag Manager, never directly to GA4.

**Is this a paid feature?** No, it's included in the free version of CraftForms.
