Skip to content

Guide 148 · Events · GA4 + Tag Manager

Track sign-ups with the recommended sign_up event: method, the GA4 Event tag, and the thank-you page trap

Checked 11 November 2026 · Verification: container fragment validated structurally (format 2, unique IDs, trigger resolves, variable references exist); worked example recomputed · Steps traced to Analytics Help and Tag Manager Help, opened 11 November 2026 · 6-minute read

A sign-up is a recommended event for every property, and it is the one most often counted wrong: the tag fires on the form instead of the success, or the method is missing, and the report counts attempts as accounts. This guide builds sign_up as a GA4 Event tag that fires only when the account exists, carrying method as Google or email.

Expected signal

After the tag is published, a test sign-up shows in DebugView as a sign_up event with method set to Google or email, and the Realtime report lists it under Event count by Event name within minutes.

Download the container fragment: the sign_up event container fragment (JSON) (2296 bytes, MD5 d830301aaf0f1929a13a88b95c73fbb3). It holds one GA4 Event tag named GA4 - sign_up, the Custom Event trigger that fires when the data layer event equals sign_up, and the data layer variable for method. The Measurement ID is left as G-XXXXXXXXXX for you to replace. Import it from Admin, then Import Container, choosing Merge if the container already has tags.

What you need

  • The Google tag already installed through Tag Manager. This guide adds one event tag beside it; it does not touch the Google tag.
  • A sign-up success you can signal. The push runs when the account is created — the confirmation page or the success callback — never on the form submit.
  • The method the visitor used. Google's prescribed parameter for sign_up is method: the value is the sign-up method, such as Google or email.

The worked example

The test below is five sign-ups in one afternoon, three with Google and two with email. The count that decides whether the setup is right is the total: five sign-ups must mean five accounts created, not five forms submitted.

Sign-upMethod
First sign-upGoogle
Second sign-upGoogle
Third sign-upGoogle
Fourth sign-upemail
Fifth sign-upemail
Total sign-ups5
Google share3 of 5 (60.00%)

That split was recomputed here before publication: 3 divided by 5 is 0.6, so Google accounts for 60.00% of the five sign-ups, and email for 40.00%. The data layer push that carries one of those sign-ups is the standard form:

dataLayer.push({
  event: "sign_up",
  method: "email"
});

The trace

  1. Push the sign-up to the data layer on success. When the account is created, run dataLayer.push({ event: "sign_up", method: "email" }), with the method value set to the method actually used. The event name is sign_up, exactly as Google spells it, and the parameter name is method.
  2. Create the data layer variable. In Tag Manager, go to Variables, then in User-Defined Variables click New, choose Data Layer Variable, set the Data Layer Variable Name to method, and name the variable DLV - method. The tag reads the method from this variable.
  3. Add the GA4 Event tag. Go to Tags, then click New. Name it GA4 - sign_up. In Tag Configuration, choose tag type Google Analytics: GA4 Event. Enter your Measurement ID. In Event Name, enter sign_up. Under Event Parameters, add a row with Parameter Name method and Value {{DLV - method}}.
  4. Set the trigger. In Triggering, click the trigger box and choose New, then choose trigger type Custom Event. Set Event Name to sign_up and choose All Custom Events. Click Save, then Save the tag.
  5. Check it in Preview and DebugView. Click Preview, enter the site URL, and click Connect. Create a test account with email. In Tag Assistant, the sign_up event must appear in the left panel with the tag under Tags Fired. Then open DebugView (Admin, then Data display, then DebugView) and confirm the sign_up event shows with method set to email.
  6. Publish it as a version. Click Submit at the top right, select Publish and Create Version, name the version, and click Publish. Visitors get the new tag only after this step.

Dead ends

DEAD END — THE TAG FIRES ON THE FORM SUBMIT. A submit that fails validation — a taken email, a weak password — is not a sign-up. If the trigger is the form submit instead of the account-creation success, the report overstates sign-ups by every failed attempt.

DEAD END — SIGN_UP AND LOGIN ON THE SAME TRIGGER. The two events look alike and share the method parameter, but they measure different things: a new account versus a return visit. One tag per event, one trigger per event; a shared trigger sends one login as both.

DEAD END — THE THANK-YOU PAGE IS ALSO THE LOGIN PAGE. If the confirmation page can be reached by a returning visitor — a bookmark, a back button — a page-view trigger on that URL counts logins as sign-ups. The data layer push on the success callback is the only trigger that knows the difference.

End state

One tag, one trigger, one parameter. A sign-up shows in DebugView within a minute of the test, in Realtime within minutes of publishing, and in the Events report within 24 hours, with the method split visible per row. Mark it as a key event only if a new account is one of the few actions that matter to the business — the key event guide covers that step.

Sources

Checked 11 November 2026. The click paths above are the ones in Google's help and developer pages, opened 11 November 2026. No step in this guide was run inside a live Analytics property or a live Tag Manager container, because both need a Google sign-in and this site does not sign in as anyone. What was run: the container fragment was validated structurally in Python 3.12.3 — export format version 2, unique IDs, the tag's firing trigger resolves to the Custom Event trigger in the file, and the {{DLV - method}} reference exists as a variable — and the method split was recomputed: 3 of 5 sign-ups by Google is 60.00%, 2 of 5 by email is 40.00%. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map.