Tracking Setup for Startups: GA4, UTMs and Events Done Right

  1. Blog
  2. Measurement & Budget

By Saroj Jha · October 4, 2026 · 13 min read

Decide which questions your tracking must answer before you add a single tag. Then track a short list of events and tag every link the same way. The six steps below show how, with one example company from start to finish.

In three numbers

  • 14 months the longest a standard GA4 property keeps event and user-level data for explorations and funnel reports; the only other choice is 2 months[1]
  • 1,000 consenting daily users GA4 needs, on 7 of the previous 28 days, before it estimates what visitors who declined did[2]
  • 72 hours the furthest back a Measurement Protocol event can be dated, so send CRM stages to GA4 as they change[3]

Most startups install Google Analytics, leave the defaults and discover six months later that they cannot answer basic questions: which channel produced last quarter’s customers, whether the new landing page converts better, why paid traffic shows up as “unassigned”. Fixing tracking later means losing history.

The setup below takes a day or two and holds up as you grow. It uses Google Analytics 4 (GA4), Google’s current analytics product, and UTM parameters: short tags you add to the end of a link so GA4 knows where a visit came from.

Running case: Example Co. Fictional

Example Co. is a seed-stage B2B SaaS startup whose software automates the month-end close for finance teams at companies with 50 to 500 employees. The controller is the champion and daily user; the CFO or VP Finance signs; IT reviews security. The team of eight, including two founders and one account executive, wants 30 new customers in the next 12 months. Deals take about 45 days to close, so a form fill says little about what works. This quarter it is launching a free month-end close checklist, promoted with LinkedIn ads, a newsletter and a partner webinar. Example Co. and all its numbers are illustrative.

Step 1: Start from your questions, then list the events

Start with the decisions tracking has to support. For most startups they are: which channels bring customers, where people drop out of the funnel, and which pages and campaigns work. Then choose events for each step. An event is one action GA4 records, such as a page view or a form submission.

GA4 collects some events automatically and, with enhanced measurement, others such as form starts and submissions[4]. Beyond those, use Google’s recommended event names where they fit: Google says they produce more useful reports and work with features it adds later. For lead-based businesses, GA4 recommends a set of lead events that follow a lead from creation to close: generate_lead, qualify_lead, disqualify_lead, working_lead, close_convert_lead and close_unconvert_lead[5].

In practice, a first tracking plan has about ten events: sign-up or form submission, demo request, trial start, activation (the first valuable action in the product), purchase, and the lead-stage events. Write them down in a tracking plan before anyone adds a tag. The Tracking Plan and UTM Builder gives you the template.

Example Co., step 1 Fictional

The team writes three questions. Which channels produce qualified demos and signed contracts? How many checklist readers go on to ask for a demo? Do LinkedIn ads reach controllers, or only clicks? Those questions lead to a plan of eight events. Five of them follow the buyer from first visit to signed contract, shown below; the other three are the remaining lead stages. Example Co. sells through demos, with no free trial, so it has no trial event.

Figure 1 Example Co. tracks five buyer steps; only the three that mark progress toward a sale are key events
What the buyer does Event in GA4 Sent from Key event?
  1. 1 Visits from a campaign link page_view Collected automatically Sent from Website Tracked only
  2. 2 Downloads the close checklist generate_lead Google-recommended name Sent from Website Tracked only
  3. 3 Requests a demo demo_request Example Co.’s own name Sent from Website Key event
  4. The website’s part ends here; the CRM sends the later stages
  5. 4 Sales qualifies the lead qualify_lead Google-recommended name Sent from CRM Key event
  6. 5 Signs a contract close_convert_lead Google-recommended name Sent from CRM Key event

Also in the plan, sent from the CRM and tracked only: working_lead disqualify_lead close_unconvert_lead

Example Co.’s plan from Steps 1 and 2 of the running case; fictional. Event names are Google’s recommended lead events except page_view, which GA4 collects with enhanced measurement, and demo_request, Example Co.’s own.

Do this

Write your three to five questions at the top of the tracking plan, and do not add an event that does not help answer one of them.

What Google’s own documentation shows: why the plan should live outside the tool

A written plan matters because tools change. Google’s help page states: “Google Analytics 4 is our next-generation measurement solution, and it has replaced Universal Analytics.” It sets out what happened to the older product. From July 1, 2023, “Standard Universal Analytics properties stopped processing hits.” From the week of July 1, 2024, users lost access to current and historical Universal Analytics data, and Google warns that unless the data was saved through the methods it describes, “your data will be permanently deleted by Google and won’t be recoverable”[6].

This is what Google’s documentation says, not an account of how any company handled the change. In my view, the lesson is simple: tags and reports tied to one tool can disappear with it. A team with a written list of its events, names and key events can rebuild them in a new tool in days; a team with only tags has to work out what it was tracking.

Figure 2 Google stopped Universal Analytics in July 2023 and deleted its data a year later
July 1, 2023 Standard properties stop processing hits Week of July 1, 2024 No access to current or historical data Jan 2023 Jul 2023 Jan 2024 Jul 2024 Jan 2025
  • Until July 1, 2023: sites send hits to Universal Analytics, the older product
  • For about a year: no new hits; earlier reports can still be read and exported
  • From the week of July 1, 2024: data not saved elsewhere is “permanently deleted” and “won’t be recoverable”

My takeaway Tags tied to one tool vanish with it. A written tracking plan survives the switch.

Show the numbers as a table
Date What Google’s help page says happened
July 1, 2023 Standard Universal Analytics properties stopped processing hits
Week of July 1, 2024 No access to any current or historical Universal Analytics data; data not saved is permanently deleted

Google Analytics Help, “Google Analytics 4 has replaced Universal Analytics”[6]. Standard properties; 360 properties with a current order had a one-time extension to July 1, 2024. Drawn to scale by month; the takeaway is mine.

Do this

Keep the tracking plan in a shared document or sheet, not only inside GA4 or your tag manager.

Step 2: Name events consistently and mark only a few key events

A key event is “an event that measures an action that’s particularly important to the success of your business”[7]. Key events used to be called conversions; Google’s API documentation records the change in May 2024[8]. You mark an event as a key event with the star in Admin, under Data display, Events[9], and a standard property allows up to 30[10].

Mark only the events that represent business progress: a demo request, a qualified lead, a purchase. Marking every click as a key event makes the reports meaningless.

Name events consistently, and within GA4’s limits. Event names can be up to 40 characters, each event can carry up to 25 parameters (extra details sent with the event, such as the form’s name), and a standard property allows 50 event-scoped custom dimensions[10],[11]. Parameters only appear in standard reports once you register them as custom dimensions.

In practice: use lowercase with underscores (demo_request, not Demo Request), reuse Google’s recommended names, name events for the action rather than the page, and record every event and parameter in the tracking plan. GA4’s own rules back this up: names must start with a letter, use only letters, numbers and underscores, and are case sensitive, so demo_request and Demo_Request count as two events[12].

Example Co., step 2 Fictional

Example Co. marks three key events: demo_request, qualify_lead and close_convert_lead. Checklist downloads are tracked with generate_lead but not marked, because a download shows interest, not progress toward a sale. Its longest event name, close_unconvert_lead, is 20 characters, half the limit. It registers two parameters as custom dimensions: form_id, to tell the checklist form from the demo form, and company_size, because its ideal customer has 50 to 500 employees. All choices are fictional.

Do this

Start with three to five key events. Add one only when someone will make a decision from it.

Step 3: Set a UTM convention that matches GA4’s channel rules

Tag every link you control outside your own website: ads, emails, social posts, partner links. Google says you “should always use utm_source, utm_medium, and utm_campaign”, and that parameter values are case sensitive[13]. “LinkedIn” and “linkedin” show up as two different sources. GA4 also reads utm_id, utm_term, utm_content and utm_source_platform; utm_creative_format and utm_marketing_tactic are not currently reported[13].

The values you choose decide which channel GA4 assigns the traffic to. For manually tagged links, GA4 counts traffic as paid social only when the source is a recognized social site (such as linkedin or facebook) and the medium matches a paid pattern: cpc, ppc, retargeting, anything containing cp or anything starting with paid. Paid search works the same way with a search engine as the source, email is recognized when the source or medium is email, and organic social uses mediums such as social[14]. Medium values outside these rules are why traffic ends up “unassigned”. Google’s own definition: “Unassigned is the value Analytics uses when there are no other channel rules that match the event data”[14].

A subtler mistake does not show up as unassigned at all. Organic social also includes any visit whose source is a recognized social site, so a LinkedIn ad tagged with a medium such as sponsored, which does not match the paid pattern, is counted as organic social. The paid clicks look free.

A simple convention that fits GA4’s rules:

Table 1. A UTM convention that fits GA4’s channel rules, and the channel each link lands in
Link type utm_source utm_medium utm_campaign GA4 channel
LinkedIn paid ad linkedin paid_social 2026q4_guide_launch Paid Social
Meta paid ad facebook or instagram paid_social 2026q4_guide_launch Paid Social
Google Ads google cpc brand_search Paid Search
Newsletter newsletter email 2026_10_issue Email
Founder’s LinkedIn post linkedin social guide_launch Organic Social
Partner link partner_name referral co_webinar_oct Referral

Google Ads tags its own links: auto-tagging is on by default for new accounts, and GA4 gives it priority over any UTMs on the same link[15], so you don’t need UTMs there. The Tracking Plan and UTM Builder builds tagged links from your convention and keeps a log.

Example Co., step 3 Fictional

Example Co. adopts the convention above. Before launch, it checks its first draft of links against GA4’s rules and finds two problems: the LinkedIn ads were tagged utm_medium=sponsored, and the newsletter links utm_medium=newsletter. The first would have counted paid clicks as Organic Social; the second would have landed in Unassigned. Both are fixed before a single visit is recorded. The links are fictional; the rules are Google’s.

Figure 3 One word in utm_medium decides the channel: Example Co.’s draft tags would have hidden paid clicks and lost the newsletter

Example Co.’s fixed LinkedIn ad link

https://example.com/checklist? The page utm_source=linkedin Who sent the visit & utm_medium=paid_social How it came: decides the channel & utm_campaign=2026q4_guide_launch Which campaign

Google says always use these three. GA4 also reads utm_id, utm_term, utm_content and utm_source_platform. Not currently reported in GA4: utm_creative_format, utm_marketing_tactic.

LinkedIn ads

Draft utm_source=linkedin utm_medium=sponsored Organic Social Social site, but the medium is not a paid one: paid clicks look free Fixed utm_source=linkedin utm_medium=paid_social Paid Social Social site plus a paid medium

Newsletter links

Draft utm_source=newsletter utm_medium=newsletter Unassigned No channel rule matches, so the visit gets no channel Fixed utm_source=newsletter utm_medium=email Email The medium is email

Parameters: Google Analytics Help, URL builders[13]. Channels: GA4’s default channel group[14], where a paid medium is cpc, ppc, retargeting, anything containing cp or anything starting with paid. Example Co.’s links are from Step 3 of the running case and are fictional; example.com is a domain reserved for examples.

Do this

Fix your list of allowed mediums in writing (for example paid_social, cpc, email, social, referral) and build every link from it.

Free template

Build every tagged link from one list

The free Tracking Plan and UTM Builder keeps your questions, events, key events and allowed mediums in one sheet, builds tagged links from your convention and logs each one, with Example Co.’s plan filled in.

Get the builder

Step 4: Change four settings on day one

Four settings to change before the first campaign:

  • Data retention. Standard properties can keep event data and user-level data for 2 or 14 months. Set both to 14. The setting only affects explorations and funnel reports, but those are the ones you will want[1].
  • Cross-domain measurement, if your site, app and checkout sit on different domains, so one visitor isn’t counted as two[16].
  • BigQuery export. Standard properties can export raw event data to BigQuery, up to 1 million events a day for daily export, and can start in the free BigQuery sandbox[17], where tables expire after 60 days[18]. With billing enabled, the export keeps your raw events beyond GA4’s retention limit.
  • Internal traffic. Exclude your own team’s visits so they don’t inflate results: mark your office IP addresses as internal traffic, then set the internal-traffic data filter to Active. A filter in Testing removes nothing, and an active one removes data for good[19].
Figure 4 Four settings to change before the first campaign, because none of them can be fixed for data already collected

GA4 property settings Example Co., the week before launch Fictional

Data retention

Event data and user-level data

Event data 2 months 14 months User data 2 months 14 months

Only explorations and funnel reports use it; standard reports are not affected.

Example Co. Both set to 14 months

Cross-domain measurement

Web stream, tag settings, Configure your domains

example.com app.example.com

A _gl link parameter carries one ID across, so one visitor is not counted as two.

Example Co. The website and the app’s demo booking page

BigQuery export

Daily export of raw events

Daily export on Up to 1 million events a day

The free sandbox deletes tables after 60 days; with billing on, raw events outlast GA4’s retention.

Example Co. Sandbox now, billing on before day 60

Internal traffic

Rule by IP address, then a data filter

Filter state Testing Active

A filter in Testing removes nothing; an active one removes the team’s visits for good.

Example Co. Office IP addresses marked as internal

Google Analytics Help: data retention[1], cross-domain measurement[16], BigQuery Export[17] and internal traffic[19]; Google Cloud, BigQuery sandbox[18]. A generic settings view, not Google’s screens. Example Co.’s choices are from Step 4 and are fictional.

Example Co., step 4 Fictional

Example Co. changes all four settings in the week before launch. Its product runs on a separate app domain from its website, so cross-domain measurement matters: without it, a prospect who moves from the pricing page to the demo booking page in the app would count as two visitors. It starts BigQuery in the sandbox, where tables expire after 60 days, so it switches billing on and updates the expiry before the first tables reach that age. Fictional choices.

Do this

Open Admin today and set both retention settings to 14 months. Data that has already expired is deleted, so a later change cannot bring it back.

Step 5: Set up consent and plan for lost signals

Set up consent before you launch campaigns. This is orientation, not legal advice.

Google consent mode passes the visitor’s choice to Google tags through four settings: ad_storage, analytics_storage, ad_user_data and ad_personalization. In basic mode, tags wait for consent; in advanced mode, tags send limited data without cookies so Google can model conversions[20]. GA4 makes those estimates only once a property has at least 1,000 consenting daily users on 7 of the previous 28 days and 1,000 events a day from visitors who declined; below that, declined visits are simply not reported[2]. Google requires consent for users in the European Economic Area, and since early March 2024, audiences for linked advertising products include only users outside the EEA unless consent signals are sent[21].

Figure 5 Advanced consent mode still measures visitors who decline, without cookies; basic mode sends nothing until they accept
Before the visitor chooses The visitor declines The visitor accepts

Basic Tags wait for a choice

Nothing sent

Google tags do not load until the visitor uses the banner

Nothing sent

Google tags are blocked; reports use a general model at best

Full measurement

Tags load and use cookies

Advanced Tags load at once, set to denied

Cookieless pings

Tags load with consent denied and send measurements without cookies

Cookieless pings

Google uses them to estimate what consented data cannot show

Full measurement

Tags load and use cookies

  • Nothing sent
  • Measurements without cookies
  • Full measurement

But GA4 estimates declined visits only for larger sites Daily users, drawn to scale

GA4’s thresholdConsenting daily users needed on at least 7 of the last 28 days 1,000 Example Co.All its visitors on a typical day 150 Fictional

GA4 also needs at least 1,000 events a day from visitors who declined, for at least 7 days. Below the thresholds, declined visits are not reported at all.

Show the numbers as a table
Measure Daily users
Consenting daily users GA4 needs before it estimates declined visits (on 7 of the previous 28 days) 1,000
Example Co.’s visitors on a typical day (fictional) About 150

Google for Developers, consent mode overview[20]; Google Analytics Help, behavioral modeling for consent mode[2]. Simplified; not legal advice. Example Co.’s traffic is from Step 5 of the running case and is fictional; bars drawn to scale.

  • European Union. The EU’s data protection regulators say tracking pixels and tracking information added to links fall under the ePrivacy rule that requires consent unless an exemption applies[22], and that scrolling or swiping through a page is not valid consent[23].
  • California. Businesses covered by the CCPA must treat opt-out signals such as Global Privacy Control as a request to opt out of the sale or sharing of personal information. The law covers businesses above certain thresholds, such as annual revenue of $26.625 million or more from January 1, 2025[24].

Do you need server-side tagging? Not at first. Server-side tagging processes data “on a server you control, rather than in the user’s browser”, which gives more control over what is sent to vendors. Google recommends at least two server instances, each costing about $45 a month[25],[26]. In practice, consider it once you run significant paid media or need tighter control of data sent to ad platforms.

What Apple’s documentation and Meta’s filings show

Consent rules are one reason your numbers will be incomplete. Platform changes are another. Apple’s developer guidance says: “In iOS 14.5, iPadOS 14.5, and tvOS 14.5 or later, you need to receive the user’s permission through the App Tracking Transparency (ATT) framework in order to track them or access their device’s advertising identifier.” Apple defines tracking as “the act of linking user or device data collected from your app with user or device data collected from other companies’ apps, websites, or offline properties for targeted advertising or advertising measurement purposes”[27].

Meta, one of the largest sellers of ads, described the effect in its annual reports to the SEC. Its 10-K for 2021 says: “In 2021, Apple made certain changes to its products and data use policies in connection with changes to its iOS operating system that reduce our and other iOS developers’ ability to target and measure advertising.” It adds: “our advertising revenue in the second half of 2021 was negatively impacted by marketer reaction to targeting and measurement challenges associated with iOS changes”[28]. Its 10-K for 2022, after describing Apple’s changes and its own privacy-related product changes, says: “These developments have limited our ability to target and measure the effectiveness of ads on our platform and negatively impacted our advertising revenue”[29].

These are what the documents say, not an account of how either company made its choices internally. For a startup, I read them this way: the conversions an ad platform reports will be fewer than the ones that happened, and that gap will not close by itself. The answer is data you own: events collected with consent, and CRM stages you send back yourself (Step 6).

Figure 6 Apple’s permission rule cut what ad platforms can measure, and Meta said so in two annual reports

1 Apple, iOS 14.5 and later

“you need to receive the user’s permission through the App Tracking Transparency (ATT) framework in order to track them or access their device’s advertising identifier”

2 Meta, 10-K for 2021

“our advertising revenue in the second half of 2021 was negatively impacted by marketer reaction to targeting and measurement challenges associated with iOS changes”

3 Meta, 10-K for 2022

“These developments have limited our ability to target and measure the effectiveness of ads on our platform and negatively impacted our advertising revenue”

My takeaway Platforms will report fewer conversions than happened. Build on data you own: consented events and CRM stages (Step 6).

Quoted from Apple’s “User Privacy and Data Use” page[27] and Meta’s Form 10-K filings for 2021[28] and 2022[29]. What the documents say, not an account of how either company made its choices internally.

Example Co., step 5 Fictional

Example Co. sells mainly in the US but gets visitors from Europe, so it adds a consent banner connected to consent mode before launch and chooses to honor Global Privacy Control signals. With about 150 visitors a day, it is far below the 1,000 consenting daily users GA4 needs before it estimates anything, so visits from people who decline simply go uncounted. It postpones server-side tagging until paid media is a larger share of its budget. When it compares LinkedIn’s reported conversions with its own CRM, it treats the CRM as the record. Fictional choices; not legal advice.

Do this

Set up consent before the first campaign goes live, and decide now which system is your record of truth for leads and customers. For most B2B startups, that is the CRM.

Step 6: Connect website tracking to your CRM

Two connections let you measure pipeline and revenue by source, not only form fills:

  • Capture the source on the form. Store UTM values and the Google click ID in hidden form fields, and save them to the lead record in your CRM. This is common practice, not a Google rule.
  • Send CRM stages back. GA4’s Measurement Protocol records “server-to-server and offline interactions” such as a lead becoming qualified; Google says it is meant to augment, not replace, tag-based collection[30]. For Google Ads, enhanced conversions for leads uses hashed customer data to match later outcomes to ad clicks[31].
Figure 7 Send CRM stages back, and reports show which sources bring qualified demos and contracts, not only form fills

1 The form captures it

Book a demo

Work email

Company

Hidden fields

  • utm_source linkedin
  • utm_medium paid_social
  • utm_campaign 2026q4_guide_launch
  • gclid (empty: not a Google Ads click)
  • client_id 123456.7654321

2 The CRM keeps it

Lead record

  • First-touch source linkedin / paid_social
  • Campaign 2026q4_guide_launch
  • GA4 client ID 123456.7654321

3 Sales moves the stage

New Qualified Won

4 GA4

Measurement Protocol

The CRM’s server sends qualify_lead, then close_convert_lead

4 Google Ads, if you run it

Enhanced conversions for leads

Hashed customer data from the form matches the outcome to the ad click

What the CRM sends when a lead is qualified One request, from the server

POST /mp/collect?1 measurement_id=G-XXXXXXXXXX &api_secret=API_SECRET HTTP/1.1
Host: www.google-analytics.com
Content-Type: application/json

{
  "client_id": 2 "123456.7654321",
  "events": [
    { "name": 3 "qualify_lead" }
  ]
}
  1. 1 The measurement ID and API secret go in the URL. Keep the secret on the server, never in browser code.
  2. 2 The client ID saved from the hidden form field, so GA4 can match the event to the visitor.
  3. 3 A Google-recommended lead event. Send it when the stage changes: events can be dated at most 72 hours back.

5 Report by source: qualified demos and signed contracts per channel, not downloads.

Example Co.’s loop from Step 6; fictional, and the client ID is Google’s own example value. Request format: Google for Developers, Measurement Protocol[3]; enhanced conversions for leads: Google Ads Help[31]. Capturing the source in hidden fields is common practice, not a Google requirement.

The Lead Management Playbook covers the stages to send.

Example Co., step 6 Fictional

Every demo form stores the UTM values and click ID in the CRM. When the account executive marks a lead qualified, and again when a contract is signed, the CRM sends qualify_lead or close_convert_lead to GA4. After one quarter the team can compare channels by qualified demos and signed contracts, not downloads. Suppose LinkedIn ads bring most checklist downloads but the partner webinar brings more qualified demos per visit: that is the kind of answer form fills alone would hide. The numbers and outcome are illustrative.

Do this

Add hidden UTM fields to every form this week, even if you send nothing back to GA4 yet. Sources you do not capture now cannot be added later.

How do I connect website forms to my CRM, step by step?

To connect a startup website to its CRM so every lead keeps its source, capture each visitor’s source when they land, pass it through hidden form fields into the CRM, then send CRM stage changes back to Google Analytics 4 (GA4).

  1. Capture the source on arrival. A small script reads the UTM parameters and the Google click ID (gclid) from the page URL. Store first-touch values once and never overwrite them; overwrite last-touch values on every new tagged visit. Store them only where your consent settings allow (general information, not legal advice).
  2. Add hidden fields to every form. Include utm_source, utm_medium, utm_campaign, gclid, landing page, first-touch source and the GA4 client ID. Google’s tag API reads the client ID with the get command, for example gtag('get', 'G-XXXXXXXXXX', 'client_id', callback), and can also return session_id [32].
  3. Map fields to CRM properties. Create a matching property for each hidden field. Set first-touch properties to write only when empty. Copy the source onto the deal when it is created, so you can report pipeline and revenue by source.
  4. Send stage changes back. When a lead is qualified or a deal is won, a CRM workflow or small server function (never browser code) sends a Google-recommended lead event such as qualify_lead or close_convert_lead[5] to GA4’s Measurement Protocol. Google says “the client_id should match the ID generated by the Google Analytics tag on your website”, the measurement ID goes in the request URL, and the API secret “is used to authenticate your requests”[3]. Events can be backdated only up to 72 hours[3], so send each event when the stage changes, not in monthly batches. Google plans no deprecation of the protocol but recommends its Data Manager API for new server-to-server integrations[3]. Figure 7 shows the request.
  5. Check it works. Submit a test form from a tagged link and confirm every field reached the CRM. Test events on Google’s validation server first: the production endpoint “does not return HTTP error codes, even if an event is malformed”, and validation events “don’t show up in reports”[33].

Common mistakes: overwriting first-touch data, and forms embedded from another tool in an iframe, which cannot read your page’s URL unless you pass the values in. Each month, check the share of new leads with a blank source; if it rises, something broke.

At Seed, the first three of these steps are enough. Add the fourth, sending stages back, once deals close often enough to compare channels.

What changes by stage?

  • Pre-seed — GA4 with enhanced measurement, three to five key events, a UTM convention, 14-month retention and a consent banner.
  • Seed — A written tracking plan, lead events, UTMs captured in the CRM, BigQuery export and a monthly check that tracking still works.
  • Series A–B — CRM stages sent back to GA4 and ad platforms, server-side tagging if paid media is significant, and an owner for data quality.

What mistakes should I avoid?

  • Tagging before planning. You end up with events no one uses.
  • Mixed-case or invented UTM values. Traffic splits or lands in “unassigned”.
  • A non-paid medium on paid ads. Paid clicks are counted as organic social.
  • Keeping retention at 2 months. You lose history in explorations and funnel reports.
  • Every click as a key event. Reports stop meaning anything.
  • No consent setup. Legal risk, and lost audiences in the EEA.
  • Stopping at the form fill. Without CRM stages you can’t see which sources bring customers.

Related on AAJ

Articles

Playbooks

Templates and tools

References

The superscript numbers in the article match this list.

All Google help pages and developer documents were checked on October 14, 2026; GA4 changes often, so check the current page before relying on a limit.

  1. Google Analytics Help. “[GA4] Data retention.” Event and user-level data kept for 2 or 14 months outside Analytics 360; the setting affects only explorations and funnel reports. support.google.com
  2. Google Analytics Help. “[GA4] Behavioral modeling for consent mode.” Prerequisites: at least 1,000 events a day with analytics_storage denied for at least 7 days, and at least 1,000 daily users with analytics_storage granted on at least 7 of the previous 28 days. support.google.com
  3. Google for Developers. “Send Measurement Protocol events to Google Analytics.” client_id and api_secret, backdating up to 72 hours, and the Data Manager API recommendation. developers.google.com
  4. Google Analytics Help. “[GA4] Enhanced measurement events.” Includes form_start and form_submit for form interactions. support.google.com
  5. Google Analytics Help. “[GA4] Recommended events.” The six lead generation events, from generate_lead to close_unconvert_lead. support.google.com
  6. Google Analytics Help. “Google Analytics 4 has replaced Universal Analytics.” Standard properties stopped processing hits on July 1, 2023; from the week of July 1, 2024, no access to current or historical Universal Analytics data. support.google.com
  7. Google Analytics Help. “About key events.” Definition of a key event. support.google.com
  8. Google for Developers. “Google Analytics Data API changelog.” Entry of May 6, 2024: key event dimensions and metrics replace the conversion ones. developers.google.com
  9. Google Analytics Help. “Mark events as key events.” Admin, Data display, Events; up to 30 key events in a standard property and 50 in Analytics 360. support.google.com
  10. Google Analytics Help. “[GA4] Configuration limits.” Standard property: 30 key events, 50 event-scoped and 25 user-scoped custom dimensions, data retention up to 14 months. support.google.com
  11. Google Analytics Help. “Event collection limits.” Event names up to 40 characters; 25 parameters per event; parameter values up to 100 characters. support.google.com
  12. Google Analytics Help. “Event naming rules.” Names start with a letter, use only letters, numbers and underscores, and are case sensitive. support.google.com
  13. Google Analytics Help. “URL builders: Collect campaign data with custom URLs.” Always use utm_source, utm_medium and utm_campaign; values are case sensitive; utm_creative_format and utm_marketing_tactic are not currently reported. support.google.com
  14. Google Analytics Help. “[GA4] Default channel group.” Channel rules for manually tagged traffic, the paid-medium pattern and the definition of Unassigned. support.google.com
  15. Google Ads Help. “About auto-tagging.” On by default for new accounts; in GA4, auto-tagging takes priority over manual tagging. support.google.com
  16. Google Analytics Help. “[GA4] Set up cross-domain measurement.” The _gl link parameter keeps one ID across domains. support.google.com
  17. Google Analytics Help. “[GA4] BigQuery Export.” Daily export limit of 1 million events for standard properties; export to a free BigQuery sandbox is possible. support.google.com
  18. Google Cloud. “Try BigQuery using the sandbox.” 10 GiB of lifetime storage, 1 TiB of queries a month, and tables, views and partitions that expire after 60 days. docs.cloud.google.com
  19. Google Analytics Help. “[GA4] Filter out internal traffic.” Internal traffic rules by IP address; data filters in Testing, Active or Inactive state; an active filter’s effect is permanent. support.google.com
  20. Google for Developers. “Consent mode overview.” The four consent types, and basic and advanced consent mode. developers.google.com
  21. Google Analytics Help. “[GA4] Verify and update consent settings in Google Analytics.” From early March 2024, without consent signals only users outside the EEA are included in audiences for linked advertising products. support.google.com
  22. European Data Protection Board (2024). Guidelines 2/2023 on the technical scope of Art. 5(3) of the ePrivacy Directive, version 2.0, adopted October 7, 2024: tracking pixels and tracking links, paragraphs 50 and 51. edpb.europa.eu
  23. European Data Protection Board (2020). Guidelines 05/2020 on consent under Regulation 2016/679, version 1.1, adopted May 4, 2020: scrolling or swiping, paragraph 86. edpb.europa.eu
  24. California Privacy Protection Agency. Frequently asked questions: the CCPA thresholds, including gross annual revenue of $26.625 million or more from January 1, 2025, and opt-out preference signals such as Global Privacy Control. cppa.ca.gov
  25. Google for Developers. Server-side tagging introduction: processing data “on a server you control, rather than in the user’s browser”. developers.google.com
  26. Google for Developers. Server-side tagging, Cloud Run setup guide: a minimum of 2 instances recommended, each costing about $45 a month (USD). developers.google.com
  27. Apple Developer. “User Privacy and Data Use.” ATT permission in iOS 14.5, iPadOS 14.5 and tvOS 14.5 or later, and Apple’s definition of tracking. developer.apple.com
  28. Meta Platforms, Inc. (2022). Annual report on Form 10-K for the fiscal year ended December 31, 2021. US Securities and Exchange Commission. sec.gov
  29. Meta Platforms, Inc. (2023). Annual report on Form 10-K for the fiscal year ended December 31, 2022. US Securities and Exchange Commission. sec.gov
  30. Google for Developers. “Measurement Protocol” (Google Analytics 4): records server-to-server and offline interactions, to augment automatic collection, not to replace it. developers.google.com
  31. Google Ads Help. “About enhanced conversions for leads.” Hashed user-provided data from site forms, matched to imported conversions. support.google.com
  32. Google for Developers. gtag.js API reference: the get command returns client_id, session_id and session_number. developers.google.com
  33. Google for Developers. Measurement Protocol, validating events: the validation server, and why the production endpoint returns no error codes. developers.google.com

More in Analytics, Experiments & Budget

Part of the Analytics, Experiments & Budget hub - see all 26 resources on this topic.