Most SaaS startups have three attribution gaps. Here’s how to close them.

Attribution for a SaaS startup isn’t a single tool. It’s a stack of connected systems, and most early-stage companies are missing at least one critical link in the chain.

The first gap: GA4 is misconfigured. Default installation tracks pageviews. It doesn’t track trials, upgrades, MRR events, or the product actions that actually indicate intent.

The second gap: the CRM is disconnected from the website. When a lead becomes a customer, that conversion event lives in your CRM, not in GA4. Without connecting the two, you can’t trace revenue back to its acquisition source.

The third gap: ad platform data is siloed. Google Ads, Meta, and LinkedIn each report their own conversion numbers using their own models. Without a single source of truth, you’re comparing things that aren’t comparable.

This guide covers the exact stack we build for SaaS clients at the pre-Series-B stage, and the specific configuration steps for each component. It’s designed for startups spending ยฃ3k to ยฃ30k per month on paid with a standard CRM like HubSpot, Salesforce, or Pipedrive.


The four components, in the order you should build them

  1. GA4 and GTM as your website measurement layer
  2. CRM webhook back to GA4 to close the loop from lead to revenue
  3. UTM taxonomy as the consistent naming that makes everything readable
  4. Looker Studio revenue dashboard as your single source of truth

Step 1: Configure GA4 for SaaS measurement, not just traffic

A default GA4 install tells you how many people visited your site. A properly configured GA4 install tells you which marketing channel drove which trials, which trials converted to paid, and what each channel’s true CAC is.

Attribution settings (updated for the February 2026 changes):

Go to GA4 Admin, then Property Settings, then Attribution Settings:

One thing worth knowing about how GA4’s attribution model actually works: it only affects dimensions without “session” or “first user” prefixes. If you’re using Session Source or First User Source in your reports, you’re getting last-touch or first-touch attribution regardless of what your model setting says. Use the Source or Medium dimension under the conversion metric if you want model-aware reporting.

Key events to configure for SaaS:

In GA4 under Configure then Events, mark these as key events and implement them via GTM:

For each event, include these parameters in your data layer: user_id, plan_type, trial_length, and company_size if you collect it at signup. These dimensions let you slice conversion quality by user type rather than treating all conversions as equal.


Step 2: Connect your CRM to GA4 (the loop almost nobody closes)

This is the single highest-impact change you can make to your attribution setup. And it’s the one most startups never implement before they hire a specialist.

The goal: when a trial converts to a paying customer in your CRM, that event gets sent back to GA4, and also to Google Ads and Meta, so the algorithms can learn what a real customer looks like rather than just what a trial-starter looks like.

For HubSpot:

  1. Create a workflow in HubSpot triggered when a deal stage moves to Closed Won
  2. Add a webhook action pointing to your GA4 Measurement Protocol endpoint
  3. Pass the client_id (stored as a HubSpot contact property from your signup form) along with the conversion event name, which should be payment_complete
  4. In GA4 Admin, go to Data Streams then Measurement Protocol API Secrets, generate a secret, and add it to your webhook payload

For Salesforce: Use Process Builder or Flow to trigger an HTTP callout on Opportunity Close Won. The logic is identical to the HubSpot approach.

For Google Ads offline conversion import: Export your CRM “paid customer” events as a CSV with click IDs (GCLID) and import via Google Ads under Tools then Conversions then Import. Run this weekly. Automating it saves a lot of manual work. This is what feeds real buyer signals into Smart Bidding and is responsible for much of the CAC improvement we see in paid campaigns after a measurement rebuild.

For Meta offline events: Use Meta’s Conversions API or the Offline Events Manager. Upload your CRM paid customer data matched by email, phone, or Meta click ID (fbclid). Meta’s algorithm will start finding users who look like your actual customers rather than your trial-starters.


Step 3: UTM taxonomy (the unglamorous thing that holds everything together)

Inconsistent UTM naming is the silent killer of attribution. When half your team uses “google-ads” as utm_source and the other half uses “Google Ads,” GA4 sees them as two different channels. Your paid search data fragments. Reports become unreliable. Decisions get made on broken channel comparisons.

Here’s the naming convention we implement across all SaaS clients:

utm_source: Always lowercase, always the platform. Use google, meta, linkedin, email, or the relevant publication name.

utm_medium: The channel type. Use cpc for paid search, paidsocial for paid social, email, organic-social, or referral.

utm_campaign: A consistent format that includes objective, audience, and date. Something like trial-acquisition-saas-founders-q2-2026.

utm_content: The ad creative identifier, useful for creative testing. Something like static-cac-reduction-v2.

utm_term: The keyword, which you can auto-populate from Google Ads using the ValueTrack parameter {keyword}.

Build this into a shared UTM builder spreadsheet and make it the only way UTMs get created on your team. Enforce it in campaign setup checklists. Sounds boring. The clean reporting it produces is not.


Step 4: The Looker Studio revenue attribution dashboard

The whole point of this dashboard is to answer one question: which marketing channels are driving paying customers, and at what cost?

Connect three data sources in Looker Studio:

What to show on the first page:

This dashboard is your source of truth for business decisions. When there’s a disagreement between GA4 and an ad platform, this is the number you bring to leadership. Ad platform numbers inform your understanding. They don’t drive your strategy.


How long this realistically takes to build

From experience: GA4 audit and rebuild for a typical SaaS startup takes three to five days. CRM webhook setup is one to two days depending on CRM complexity. UTM taxonomy implementation is a day. The Looker Studio dashboard build is two to three days. Full stack, with proper testing: two to three weeks.

If you’d rather have this built than build it yourself, our Measurement service covers the full stack. We’ve done this for SaaS companies from pre-revenue through to Series B.

Book a free audit to talk through your setup.

Related: Marketing Measurement Service | Kredify Case Study

Tags: