Skip to content
Use case: SaaS

SaaS analytics tracking from first visit to paying account

SaaS analytics tracking with GA4 and GTM: sign-up tracking, User-ID across devices, trial and subscription events, and product analytics you can trust.

The short answer

SaaS analytics tracking connects three things that usually live apart: the marketing site where visitors arrive, the sign-up that creates an account, and the product where trials turn into paid plans. In GA4 that means a sign_up event fired on confirmed account creation, a non-personal User-ID set once people log in, and server-side events for billing outcomes that the browser never sees. Tracking Whisper audits and builds the GTM side, writes the dataLayer guide for your developers and alerts you when sign-ups stop or drift.

SaaS analytics tracking fails in a particular way: the marketing site, the sign-up flow and the product are built by different people, and each one tracks something slightly different. Marketing reports sign-ups from a form tag, product counts accounts in the database, finance counts paying customers in billing, and nobody can say which campaign brought the customers who stayed. This page explains how to connect those steps in GA4 and Google Tag Manager and what Tracking Whisper does at each one.

The SaaS funnel you need to measure

Write the funnel down before you build anything. A typical self-serve product has five stages, and each needs one event with one clear definition:

StageEventFired whenFired from
Visitpage_viewA page loadsBrowser, via GTM
Sign-upsign_upThe account is createdBrowser, after the app confirms
ActivationYour own event, for example project_createdThe user reaches the first moment of valueBrowser or backend
Trial to paidpurchase or your own subscription eventThe first payment succeedsBackend
Renewal, upgrade, cancellationYour own eventsBilling changesBackend

The marketing questions sit in the first two rows. The product questions sit in the third. The revenue questions sit in the last two, and those are the ones a browser-only setup never sees.

Sign-up tracking that counts accounts, not form clicks

GA4 has a recommended sign_up event with an optional method parameter, for example email or Google, and a matching login event. The rule that matters is when it fires. A tag on the sign-up button fires on validation errors, on duplicate email addresses and on bots. Fire sign_up from a dataLayer push the app makes after the account exists, and include the method and plan.

Single sign-on adds a trap: the visitor leaves for the identity provider and comes back on a new URL. If the sign-up event depends on the original page, it is lost. A push from the app after the redirect avoids that.

Mark sign_up as a key event in GA4 and send it to Google Ads as a conversion, so bidding learns from real accounts.

Product analytics with GA4

Once a person logs in, set the GA4 User-ID to your internal user or account ID. Google describes the User-ID as a unique, non-personally identifiable identifier you assign to signed-in users, so never use an email address. Set it with the config or set command so it applies to every later event on the page, not as a parameter on a single event. With the Blended reporting identity, GA4 then uses the User-ID where it is available and falls back to device ID and modelling where it is not, which joins sessions across devices.

From there, GA4 covers a useful part of product analytics:

  • Funnel explorations from sign-up to activation, split by acquisition channel.
  • Cohort explorations that show whether users who signed up in one week keep coming back.
  • The BigQuery export for questions the interface cannot answer, such as time from sign-up to first payment per campaign.

Keep the event list short. Ten well-defined product events with consistent parameters are worth more than a hundred auto-captured clicks.

Server-side events for revenue

Payments, renewals, upgrades and cancellations happen in your billing system, often with no browser session at all. Send them to GA4 from your backend with the Measurement Protocol, using the client ID and User-ID stored from the web session so they join the right user. Google's documentation is clear that the Measurement Protocol is meant to add to collection through gtag or Tag Manager, not to replace it. Keep the browser setup for acquisition and in-app behaviour, and use the backend for money.

Common SaaS analytics tracking problems

SaaS setups often share the same few faults, and each one is cheap to fix once it is found:

  • Two sign-up conversions. A form tag and an app event both count sign-ups, and Google Ads imports both, so each account is counted twice.
  • The app domain is not tracked. The marketing site has GTM, the app on a subdomain does not, and every logged-in session looks like a new visitor.
  • An email address in the User-ID. It breaks Google's rules for the User-ID and puts personal data into reports.
  • Internal traffic in the numbers. Staff and test accounts sign up and log in all day, which inflates activation in small products.

A GTM audit and a look at the GA4 property find most of these in one pass.

What Tracking Whisper does for a SaaS company

Tracking Whisper is an AI agent that works in Google Tag Manager, GA4, Google Ads, Meta, and reads Search Console and BigQuery.

  • Measurement plan. It writes the funnel table above for your product, with event names, parameters and the source of each value.
  • dataLayer guide. It writes the guide your developers need for the sign-up push, the User-ID and the activation events. It does not change your app's code.
  • Build after approval. It creates the tags, triggers and variables in its own GTM workspace and publishes a version only after a person approves. See tracking setup.
  • Browser checks. It checks the marketing site and sign-up pages in a real browser: dataLayer, hits sent and consent state.
  • Analysis. It answers questions across GA4, Google Ads, Search Console and Meta, and reads the GA4 export in BigQuery, for example sign-ups and paid conversions by campaign. See analysis.
  • Monitoring. It watches container versions, key pages and GA4 numbers, and alerts you when sign-ups stop or leave their usual range after a release. See monitoring.

Each client has an access level, Read, Read & write or Publish, so you decide whether it only reports or also builds.

Next step

Connect your Google Tag Manager container and GA4 property, ask Tracking Whisper for a measurement plan for your sign-up funnel, and hand the dataLayer guide to your developers.

Frequently asked questions

Which GA4 event should I use for sign-ups?

Use the recommended sign_up event, with the optional method parameter for how the person signed up, for example email or Google. Fire it when the account is actually created, not when the form is submitted. Use the recommended login event, also with method, for returning users.

What should I use as the GA4 User-ID?

Your own internal account or user ID, which Google describes as a unique, non-personally identifiable identifier for signed-in users. Never use an email address. Set it with the config or set command so it applies to all later events, rather than adding it as a parameter to single events.

How do I track trial-to-paid conversions in GA4?

The browser often never sees the payment, because renewals and upgrades happen in billing. Send those events from your backend with the Measurement Protocol, using the same client ID and User-ID as the web session. Google's documentation says the Measurement Protocol should add to tag-based collection, not replace it.

Is GA4 enough for product analytics?

For many teams at an early stage it is: funnels, cohort explorations and the BigQuery export answer most questions about activation and retention. Teams that need per-user event timelines at scale often add a dedicated product analytics tool later. Either way, the event plan is the part worth getting right first.

Can Tracking Whisper change our app's code?

No. It works in Google Tag Manager, GA4, Google Ads, Meta, Search Console and BigQuery. Where the app must push events or set the User-ID, it writes a dataLayer guide for your developers and then checks the result in a real browser.

Sources

  1. [GA4] Recommended events, Analytics Help
  2. Send user IDs, Google Analytics developers
  3. [GA4] Reporting identity, Analytics Help
  4. Measurement Protocol, Google Analytics developers
  5. [GA4] Cohort exploration, Analytics Help

Last updated by Dimitris.

More use cases

Give Whisper its first job.

The free plan covers one site. Start with a setup, an audit or a question about your numbers. No card needed.