How-to guide

Set up Google Analytics 4 for a B2B SaaS site

Google Analytics 4 is the default analytics stack for most B2B SaaS marketing teams, but a default install captures almost none of the signal that actually matters for pipeline. This guide walks you through a 2-3 hour build that creates the property, installs tagging through Google Tag Manager or gtag, defines the key events a SaaS funnel actually cares about (demo_request, signup, purchase), promotes them to conversions, links Google Ads and Search Console, builds the audiences marketing will target, and wires a BigQuery export so you can finally join analytics data to your CRM.

Before you start

What you need.

Time: 2-3 hours initial setup

  • A Google account with admin rights to create a GA4 property, plus access to the Google Ads and Search Console accounts you plan to link.
  • Access to install the site tag directly on the site or, preferably, admin access to a Google Tag Manager container that already fires on every page.
  • An agreed event taxonomy with product and marketing: event names, required parameters, and which events count as conversions.
  • A cookie consent plan that satisfies the privacy regime you operate under (GDPR, CPRA, or Google Consent Mode v2 at minimum) before any tag fires.
  • A CRM integration plan: a stable user_id, a lead or opportunity model, and a decision on whether CRM joins happen in BigQuery or in your warehouse.
Set up Google Analytics 4 for a B2B SaaS site

Step by step.

  1. 1

    1. Create the GA4 property and web data stream

    Start in Google Analytics admin and create a new GA4 property under the right account. Pick the correct reporting time zone and currency up front because changing them later rewrites downstream reports. Create a Web data stream for the production site, name it so it is obvious which environment it tracks, and copy the Measurement ID (G-XXXXXXXXXX) into a safe place. In the stream settings, turn on Enhanced Measurement so GA4 auto-collects scrolls, outbound clicks, site search, video engagement, and file downloads, but review each toggle because site search and form interactions may need parameter overrides to match how your SaaS site is actually built. Create a second stream for the staging environment so test traffic never pollutes production reports.

    • Pick a reporting time zone and currency that match how finance closes the books.
    • Create separate Web data streams for production and staging, and tag them clearly.
    • Record the Measurement ID in a shared doc so GTM, gtag, and server-side taggers all reference the same value.
    • Review every Enhanced Measurement toggle and disable anything that duplicates a custom event you plan to send.
    Tip: If you have multiple product subdomains or a separate marketing site, decide now whether they share one property or run as separate streams. Cross-domain tracking is far cheaper to configure on day one than to backfill later.
  2. 2

    2. Install GA4 through Google Tag Manager (or gtag.js)

    For most B2B SaaS sites, Google Tag Manager is the right install path because it keeps analytics, ads, and consent logic out of your production build and lets marketing ship changes without a code deploy. Create a GTM container if you do not have one, drop the container snippet in the <head> of every page template, and add a Google Tag (GA4 configuration) that fires on All Pages using the Measurement ID from step 1. If you cannot use GTM, install gtag.js directly with the same Measurement ID and keep the snippet as close to the opening <head> tag as possible so it loads before user interactions begin. Verify the install with GA4 DebugView and the GTM Preview mode before you push live, and watch for duplicate page_view events, which are the most common install bug.

    • Add the GTM container snippet to every page template, not just the homepage.
    • Create a GA4 Configuration tag that fires on All Pages with the Measurement ID.
    • Verify page_view fires exactly once per route in GA4 DebugView.
    • If using a single-page application, suppress the auto page_view and send route-change events manually.
    Tip: Single-page apps break page_view by default. Turn off automatic page views in the GA4 Configuration tag and fire a page_view event from your router on every route change so Reports reflect reality.
  3. 3

    3. Define key events for the B2B SaaS funnel

    GA4 ships with a thin set of recommended events, but a B2B SaaS funnel needs explicit events for the moments that matter to pipeline. At minimum, instrument demo_request (prospect submits the demo form), signup (free trial or free account created), purchase (paid conversion for self-serve), and the supporting events around them: form_start, form_submit, trial_activated, and plan_upgraded. Agree the exact event name, the parameters each one sends, and which parameters are required before any developer writes a dataLayer push. Keep names in snake_case, keep parameters stable, and avoid overloading one event with branching logic. Document the taxonomy in a shared sheet so marketing, product, and analytics speak the same language, and fire every event from GTM where possible so changes do not require a release.

    • Instrument demo_request with lead_source, utm parameters, and a form_id parameter.
    • Instrument signup with method (email, Google, SSO) and plan_tier.
    • Instrument purchase with transaction_id, value, currency, and items for self-serve checkout.
    • Agree a short list of custom user properties (plan_tier, company_size, lifecycle_stage) before shipping events.
    Tip: Give every important event a transaction_id or event_id parameter even when the event is not a purchase. It is the single simplest trick for deduplicating when you later join GA4 data to CRM records in BigQuery.
  4. 4

    4. Mark events as conversions (key events) and configure attribution

    In GA4, the events that drive your business must be marked as key events (the setting Google renamed from Conversions in 2024). Go to Admin, open Events, and toggle the key event switch on demo_request, signup, purchase, and any paid-conversion events you want in Ads reporting. Then open Attribution settings and pick a model: data-driven is the default and is appropriate for most SaaS sites with sufficient conversion volume, but if volume is low pick position-based or first-click so the model does not collapse to last-click under the hood. Set the lookback window deliberately: 90 days for acquisition is a sensible default for B2B SaaS with multi-week sales cycles, while 30 days works for self-serve. Document which events are key events, which model you chose, and why, so a future audit does not have to reverse-engineer the choice.

    Tip: Attribution model changes are not retroactive in standard reports. If you plan to A/B two models, snapshot the first model's numbers in a dated export before you switch, or use the Advertising section's model comparison report.
  5. 5

    5. Link Google Ads and Search Console

    A GA4 property that is not linked to Google Ads and Search Console is leaving half of its value on the table. In Admin under Product Links, link the Google Ads account that runs your paid campaigns so GA4 conversions flow to Ads for bidding and so Ads auto-tagged (gclid) traffic shows up with campaign, ad group, and keyword in GA4 reports. Then link Search Console so organic queries, landing pages, and impressions appear inside GA4's Acquisition reports. Both links require admin on both sides and the Search Console link requires that the GA4 property URL match the Search Console verified property. Once linked, enable Google signals only if your consent plan allows it: signals unlocks remarketing audiences and cross-device, but it introduces thresholding on small cohorts and must be reflected in your privacy policy.

    • Link Google Ads with admin rights on both sides so auto-tagging flows end-to-end.
    • Link Search Console to a Web data stream whose URL exactly matches the verified property.
    • Decide on Google signals based on your consent plan, not on default settings.
    • Verify that Google Ads cost data appears in the GA4 Advertising reports within 24 hours.
  6. 6

    6. Build audiences for marketing and remarketing

    Audiences are how GA4 feeds Google Ads and how you segment reports for marketing analysis. Build the small set of audiences marketing will actually use: engaged visitors (pages per session or scroll threshold), demo_request submitters, signup completers, trial-active users, paid customers, and the inverse audiences for suppression (do not re-market demo submitters as cold prospects). Build each audience from the events and user properties defined in step 3, not from one-off session filters, so the audience logic stays consistent across remarketing, reporting, and BigQuery. Keep the list short at first: five to seven audiences cover almost every B2B SaaS use case and are far easier to audit than twenty-plus overlapping ones. Give each audience a clear name, an owner, and a documented purpose so audiences do not accumulate as GTM-era zombies.

    • Build an engaged-visitor audience from scroll depth or session duration thresholds.
    • Build conversion audiences for demo_request, signup, and purchase for remarketing and suppression.
    • Build a paid-customer audience from a user property to suppress ads to existing customers.
    • Review the audience list quarterly and retire anything no campaign is targeting.
    Tip: Suppression audiences are usually more valuable than targeting audiences for B2B SaaS. The fastest way to improve paid efficiency is to stop paying to re-reach demo submitters and existing customers.
  7. 7

    7. Wire the BigQuery export for CRM joining

    The single most important configuration step for a B2B SaaS marketing analytics stack is the BigQuery export, because that is where GA4 data meets your CRM, product, and billing data. In Admin under Product Links, link the GA4 property to a Google Cloud project, enable daily export (and streaming export if you need near-real-time), and pick the dataset location that matches where your warehouse already lives. GA4 writes one events table per day with every event, parameter, and user property, which is a flat row-per-event schema that your warehouse can join to a CRM lead or opportunity on user_id or a hashed email. Build the join through a stable identifier you set on both sides: pass user_id into GA4 (set it the moment a user is identified by email, trial signup, or login) and store the same user_id in your CRM. Without a shared key, the join is probabilistic and the analysis will leak.

    • Create or reuse a Google Cloud project in the same region as your warehouse to minimize egress.
    • Enable daily export plus streaming export if your SLA on fresh data is under 24 hours.
    • Set a stable user_id in GA4 the moment a user is identifiable, and store the same id in CRM.
    • Build a nightly dbt or scheduled query model that joins GA4 events to CRM leads and opportunities.
    Tip: The BigQuery export has a free tier but can scale costs quickly on high-traffic sites. Partition and cluster the derived CRM-join table by event_date and user_id so analyst queries do not scan months of raw data by accident.
  8. 8

    8. Instrument UTM governance

    UTM parameters are the labels that make every other report readable, and the fastest way to break GA4 is to let every marketer invent their own naming. Publish a UTM governance doc that fixes the five standard parameters (utm_source, utm_medium, utm_campaign, utm_content, utm_term) with explicit allowlists for source and medium, a snake_case convention for campaign, and a required format for content and term. Build or buy a UTM link builder that enforces the rules so marketers cannot ship a link with uppercase campaign names or free-text medium values. Audit incoming traffic monthly in the GA4 Traffic acquisition report and look for low-volume source/medium combinations that are usually typos (googlee / cpcc / email_newsletter) and fold them back into the canonical values with a channel group override. UTM governance pays for itself the first time a leadership deck does not have to apologize for a 20% other bucket.

    • Publish allowlisted values for utm_source and utm_medium, with an exceptions process.
    • Enforce snake_case for utm_campaign and prohibit spaces, quotes, and emojis.
    • Deploy a shared link builder so no marketer hand-codes UTMs for paid campaigns.
    • Audit the Traffic acquisition report monthly for low-volume typos and merge them into channel groups.
    Tip: GA4 is case-sensitive on UTM values. Email and Email are two different sources in Reports, and only governance plus a link builder stops that from fracturing the data within a quarter.
Avoid

Common mistakes.

  • Shipping GA4 without a documented event taxonomy and letting every developer name events in their own convention, which turns Reports into a cleanup project within a quarter.
  • Leaving automatic page_view enabled on a single-page application, which fires once at load and never again as the user navigates, so engagement looks dead on day one.
  • Linking Google Ads but not setting the Ads account's conversions to the GA4 key events, so bidding keeps optimizing for the wrong signal while GA4 reports look fine.
  • Skipping the BigQuery export because the sampled standard reports look good enough, then losing the ability to join GA4 to CRM when the first attribution question arrives.
  • Firing tags before consent is captured, which creates a privacy violation under GDPR and under Consent Mode v2 and quietly inflates traffic numbers from users who should have been excluded.
FAQ

Frequently asked questions.

How long does a proper GA4 setup take for a B2B SaaS site?

Plan 2-3 hours for the initial configuration if you already have GTM, a documented event taxonomy, and admin access to Google Ads and Search Console. Add another day or two if you need to build the event taxonomy from scratch, add the UTM governance, and wire the BigQuery export and the first CRM-join model.

Should we install GA4 through gtag.js or Google Tag Manager?

Google Tag Manager is the right default for B2B SaaS. It lets marketing ship analytics and ads changes without a code deploy, keeps third-party tags out of the production bundle, and makes consent orchestration far cleaner. Use gtag.js only when a strict CSP or infra constraint rules GTM out.

Which GA4 events should a B2B SaaS site treat as key events (conversions)?

At minimum demo_request, signup, and purchase. Many teams also mark trial_activated and plan_upgraded as key events so Google Ads can optimize for mid-funnel conversions in addition to the top-of-funnel form submit. Keep the list short so bidding stays focused on what actually drives revenue.

Do we need the BigQuery export, or are the standard reports enough?

Standard reports are enough to monitor acquisition and engagement, but they are sampled above certain thresholds and cannot be joined to CRM. If you plan to measure pipeline-weighted attribution, build cohort retention from product data, or train an ML model on first-touch to closed-won, enable the BigQuery export on day one.

How does GA4 handle attribution for long B2B sales cycles?

GA4 defaults to a data-driven model with a 90-day acquisition lookback, which fits most B2B SaaS motions. For deals that take six months or more, extend the lookback and complement GA4 with CRM-side multi-touch attribution modeled in your warehouse against the BigQuery export, because GA4 alone cannot see post-opportunity touches.

What is Google Consent Mode v2 and do we need it?

Consent Mode v2 is Google's framework for passing user consent state to GA4 and Ads tags. If you serve EEA, UK, or Swiss users and run Google Ads, you need it to keep conversion modeling and remarketing audiences legal and functional. Even outside those regions, implementing it now future-proofs the stack against the next privacy regime.

See it in Strkr

Related product surfaces.

Strkr Marketing Platform features

Join GA4 to pipeline in one platform

Strkr brings marketing analytics, CRM, and campaign attribution into one platform so the signals you capture in GA4 line up with the revenue you close.

Try it free. Bring your team next week.

No sales call, no migration consultant, no four-month implementation. Enter your card, get 14 days of the full Pro tier, cancel any time before day 14 with zero charge. Spin up a workspace, import your CSV, and have something useful before lunch.