15 min read · CRO · Last updated July 2026
Quick answer: GA4 setup has three critical phases: create the property and web data stream, install the GA4 tag (via GTM or gtag.js), and configure conversion events. Miss any of these and your data will be incomplete — and analytics decisions made on incomplete data are worse than no decisions at all.
Introduction
GA4 has been the mandatory Google Analytics standard since Universal Analytics was fully sunset in July 2023. In 2026, most sites have GA4 installed — but a significant proportion have it installed incorrectly. Missing conversion events, default 2-month data retention, unconfigured enhanced measurement, and no Google Ads connection are the most common gaps we find in client audits at Ignited Nepal.
This guide walks through a complete, production-ready GA4 setup from scratch. We cover every configuration decision, why each matters, and what breaks if you skip it.
What you’ll learn:
– GA4’s event-based data model (why it’s different from UA sessions)
– Complete property and data stream setup steps
– Which enhanced measurement events to keep vs disable
– How to mark events as conversions and verify they fire correctly
Table of Contents
- Understanding GA4’s Event-Based Data Model
- Creating a GA4 Property
- Data Stream Setup: Web and App
- Installing GA4: gtag.js vs Google Tag Manager
- Enhanced Measurement: What Each Event Tracks
- The GA4 Interface: Reports, Explore, and Advertising
- Setting Up Conversion Events
- Custom Events: GTM and GA4 Interface Methods
- Data Retention: The 2-Month Default You Must Change
- Testing with GA4 DebugView
- GA4 Setup Checklist Widget
- Enhanced Measurement Event Selector
- FAQ
- Conclusion
1. Understanding GA4’s Event-Based Data Model
Universal Analytics (UA) organized data around sessions and pageviews. A session was a container that held pageviews, events, and transactions. Every metric derived from sessions.
GA4 fundamentally changes this. Everything in GA4 is an event. A pageview is an event (page_view). A purchase is an event (purchase). A scroll is an event (scroll). There are no sessions in the traditional sense — GA4 creates sessions as a derived dimension, grouping events within a 30-minute inactivity window.
Why this matters for setup:
In UA, you configured goals. In GA4, you configure conversion events. In UA, you tracked ecommerce transactions with a transaction hit. In GA4, you send a purchase event with specific parameters. The conceptual shift is: stop thinking about “what page did they visit” and start thinking “what did they do.”
Key GA4 concepts:
– Event: Any user interaction (page_view, click, form_submit, purchase)
– Parameter: Additional data attached to an event (page_location, item_name, value)
– User Property: Attributes that persist across sessions (user_type, plan_level)
– Conversion: Any event you mark as a business-critical action
– Audience: User segments you define for remarketing or analysis
2. Creating a GA4 Property
Step 1: Access Google Analytics Admin
Go to analytics.google.com → click Admin (gear icon, bottom left).
Step 2: Create Account (if needed)
If this is a new Google Analytics setup: Admin → Create Account → enter Account Name → set data sharing preferences → Continue.
Step 3: Create Property
Admin → Create Property → enter Property Name → select your Reporting Time Zone → select Currency → click Next.
Property naming best practice: Use the format “Brand Name – Website” (e.g., “Ignited Nepal – ignitednepal.com”). This becomes important when managing multiple properties.
Step 4: Business Information
Select industry category and business size. This personalizes GA4’s recommended reports but does not affect data collection.
Step 5: Business Objectives
GA4 asks what you want to measure. Select all that apply — this configures your default report collection. You can change this later under Admin → Property → Reporting Identity.
Step 6: Data Stream
GA4 immediately prompts you to create a data stream. Select “Web” for websites.
3. Data Stream Setup: Web and App
A data stream is the source from which GA4 collects data. Each property can have multiple data streams (one web, multiple app streams for iOS and Android).
Web Data Stream Setup:
– Enter your website URL (include https://)
– Enter a stream name (e.g., “Ignited Nepal Website”)
– Enhanced Measurement: leave enabled (we configure specifics in section 5)
– Click Create Stream
After creation, record:
– Measurement ID: Format is G-XXXXXXXXXX. This is what you install on your site.
– Stream ID: Numeric, used in API integrations
– Tagging Instructions: Shows you the gtag.js snippet
App Streams:
If you have a mobile app, create separate iOS and Android data streams. App streams require Firebase SDK integration and are outside the scope of this guide — they are configured in your Firebase console and linked to your GA4 property.
Cross-Domain Tracking:
If your site spans multiple domains (e.g., main site + checkout on a subdomain or separate domain), configure cross-domain tracking:
Admin → Data Streams → Web stream → Configure tag settings → Configure your domains. Enter all domains that should be treated as the same session. Without this, users crossing domains appear as new users, inflating session counts and breaking conversion attribution.
4. Installing GA4: gtag.js vs Google Tag Manager
You have two installation methods. The right choice depends on your site and team.
Method 1: gtag.js (Direct Installation)
GA4 provides a global site tag snippet. Paste it into the <head> of every page, immediately after the opening <head> tag:
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
Replace G-XXXXXXXXXX with your actual Measurement ID.
Pros: Simple, no additional tools required, direct control.
Cons: Requires developer access for any future tracking changes. No version control. Harder to add custom events.
Method 2: Google Tag Manager (Recommended)
Install GTM once, then manage all tags (including GA4) from GTM’s interface without touching code again.
- Create a GTM account at tagmanager.google.com
- Create a Container for your website
- Install the GTM container snippet (a
<head>snippet and a<body>snippet) - In GTM, create a GA4 Configuration Tag with your Measurement ID
- Set the trigger to “All Pages”
- Publish
We cover GTM setup in detail in our Google Tag Manager guide.
Platform-Specific Installation:
- WordPress: Use the “Site Kit by Google” plugin (official, maintained by Google) or the “GTM4WP” plugin if using GTM
- Shopify: Admin → Online Store → Preferences → Google Analytics field (paste Measurement ID), or use the Google & YouTube app from Shopify App Store for full GA4 ecommerce
- Squarespace: Settings → Advanced → Code Injection → paste gtag.js in
<head> - Webflow: Project Settings → Custom Code → Head Code → paste gtag.js
5. Enhanced Measurement: What Each Event Tracks
Enhanced measurement automatically tracks several interactions without any additional code. Access it at Admin → Data Streams → Web stream → Enhanced measurement.
| Event Name | What It Tracks | Keep or Disable? |
|---|---|---|
page_view |
Every page load or history state change | Always keep |
scroll |
Fires when user reaches 90% page depth | Keep — useful for content engagement |
outbound_click |
Clicks on links leaving your domain | Keep — shows external link behavior |
site_search |
Search queries when URL contains ?q= or ?s= |
Keep if you have site search |
video_start |
YouTube embedded video play starts | Keep if you have YouTube embeds |
video_progress |
10%, 25%, 50%, 75% video completion | Keep — shows engagement depth |
video_complete |
YouTube video reaches 100% | Keep |
file_download |
Clicks on PDFs, docs, zips, etc. | Keep — shows document engagement |
form_interaction |
Form field interactions | Keep for basic form analysis |
When to disable specific enhanced events:
- Disable
scrollif your site is a single-page app where 90% scroll fires immediately - Disable
site_searchif your search parameter is non-standard and GA4 is not detecting it correctly (configure the parameter instead) - Disable
video_progressif you have autoplaying videos that skew engagement data
Critical issue — duplicate pageviews with SPAs:
If your site is a Single Page Application (React, Vue, Angular, Next.js), enhanced measurement’s page_view event may fire duplicate pageviews when the URL changes via the history API. Either disable enhanced measurement’s page_view and fire it manually via GTM, or use the GA4 config option send_page_view: false and handle page_view in your routing layer.
6. The GA4 Interface: Reports, Explore, and Advertising
GA4 has three main sections:
Reports (left navigation → Reports)
Predefined report collections including Life Cycle (acquisition, engagement, monetization, retention) and User (demographics, tech). The Overview reports give quick health metrics. Customize using the “Customize reports” option.
Explore (left navigation → Explore)
Free-form analysis using a drag-and-drop interface. Build funnels, path analyses, user cohorts, and segment overlaps. This is where serious analysis happens — the predefined Reports are dashboards, but Explore is where you ask specific business questions.
Advertising (left navigation → Advertising)
Attribution reports, conversion paths, and the model comparison tool. Requires Google Ads linking to see full attribution data.
7. Setting Up Conversion Events
In GA4, any event can be a conversion. Unlike UA where you configured “Goals,” in GA4 you simply toggle any event as a conversion.
Method 1: Mark an existing event as a conversion
Admin → Events → find the event (e.g., form_submit) → toggle “Mark as conversion” to on.
Method 2: Create a new event from an existing one
Admin → Events → Create event → enter a new event name → define conditions based on existing event parameters. Example: create newsletter_signup that fires when form_submit occurs with form_id equals “newsletter-form.”
Standard conversions to configure for most businesses:
| Business Type | Conversion Events |
|---|---|
| Lead generation | form_submit, phone_call_click, calendar_booking |
| E-commerce | purchase (required), add_to_cart (optional micro-conversion) |
| SaaS | sign_up, trial_start, upgrade |
| Content/Media | newsletter_signup, content_download |
| Service business | quote_request, contact_form, phone_click |
Conversion deduplication:
GA4 uses transaction_id to deduplicate purchase events. For other conversions, each event fires counts as a conversion by default. If a user submits two forms, both count. To count only the first conversion per user per session, use the “Once per event” setting in conversion configuration.
8. Custom Events: GTM and GA4 Interface Methods
Via GTM (recommended for most custom events):
1. Create a GA4 Event tag in GTM
2. Select your GA4 Configuration tag
3. Enter the event name (e.g., video_cta_click)
4. Add parameters (e.g., video_title = {{Click Text}})
5. Set the trigger (e.g., Click → All Elements → Click URL contains “youtube.com”)
6. Publish
Via GA4 Admin Interface (for simple event modifications only):
Admin → Events → Create event. This only lets you create new events from existing ones by modifying parameters — you cannot define new events triggered by arbitrary user actions. For true custom events, GTM or direct gtag.js code is required.
Naming conventions for custom events:
Use snake_case. Use descriptive names that would make sense to anyone reading the data six months later. Avoid abbreviations. GA4 has a 40-character limit on event names and a 100-character limit on parameter values.
Good: contact_form_submit, pricing_page_view, live_chat_opened
Bad: evt1, frm_sb, click_btn_3
9. Data Retention: The 2-Month Default You Must Change
This is the most commonly missed GA4 configuration. By default, GA4 retains user-level and event-level data for 2 months. After 2 months, this data is deleted and cannot be retrieved.
Why this matters: Explore reports (funnels, path analysis, user segments) only work with data within the retention window. If you keep the default 2-month setting, any exploration more than 2 months old returns empty results.
How to change it:
Admin → Data Settings → Data Retention → Change “Event data retention” to 14 months → Save.
14 months is the maximum available on the standard (free) GA4 property. This gives you 13 complete months of data for year-over-year comparisons.
Note: Aggregated reports (the standard Reports section) retain data indefinitely — this setting only affects Explore and the BigQuery export of raw events.
10. Testing with GA4 DebugView
Before declaring your GA4 implementation live, verify every event fires correctly.
Enabling DebugView:
Option 1 (GTM): In GTM Preview mode, DebugView automatically activates for your session.
Option 2 (Chrome Extension): Install “Google Analytics Debugger” Chrome extension → enable it → visit your site → Admin → DebugView in GA4.
Option 3 (URL parameter): Add ?_ga4debugger=true to any page URL (use with Tag Assistant).
What to verify in DebugView:
– page_view fires on every page load (and only once per page)
– Conversion events fire when the corresponding action is taken
– Parameters appear with correct values (not undefined, not empty string)
– No duplicate events (same event firing 2+ times per single action)
– purchase event includes transaction_id, value, and currency parameters
DebugView pro tip: DebugView shows events in real-time with all parameters. Click any event to see every parameter it sent. If a parameter shows as “(not set),” your variable is not populating — debug the data layer push or GTM variable.
11. GA4 Setup Checklist Widget
GA4 Setup Checklist
Track your GA4 implementation progress — 28 critical steps
12. Enhanced Measurement Event Selector
Enhanced Measurement Event Selector
Answer questions about your site to get a customized recommendation
FAQ
Q1: Do I need GTM if I already have GA4 via gtag.js?
Not strictly, but GTM makes future tracking changes significantly faster and safer. Without GTM, adding a custom event (like “clicked phone number”) requires a developer to edit site code. With GTM, a marketer can add and test the event in an afternoon without a developer. Most serious implementations use GTM.
Q2: How long does it take for GA4 data to appear after installation?
Standard reports update within 24–48 hours. Realtime reports show data within 30 seconds. DebugView shows data immediately. If your standard reports show nothing after 48 hours, check that your Measurement ID in the tag matches the Measurement ID in GA4 Admin → Data Streams exactly.
Q3: Can I have multiple GA4 properties for one website?
Yes, and there are legitimate reasons to do so (separate property for development vs production, separate property for different regional brands). However, a single property with appropriate data filters (internal traffic exclusion, developer traffic exclusion) is simpler to maintain for most businesses.
Q4: What is the difference between GA4 and Google Tag Manager?
GA4 is the analytics platform that stores and reports on your data. GTM is a tag management system that deploys tracking code (including GA4) on your website. You can use GA4 without GTM (via direct gtag.js installation). You can use GTM without GA4 (to deploy other tags). Most production setups use both: GTM to deploy the GA4 tag, then additional GTM tags to fire custom GA4 events.
Q5: Does GA4 track across sessions automatically?
GA4 uses a combination of cookies (client_id, stored in _ga cookie for 2 years) and Google Signals (for signed-in Google users) to track across sessions. For logged-in users of your site, you can pass a user_id parameter to stitch cross-device sessions. Without user_id, cross-device attribution is probabilistic via Google Signals.
Conclusion
A properly configured GA4 property is the foundation of every data-driven CRO decision you will make. The steps most commonly skipped — changing data retention to 14 months, configuring conversion events, linking to Google Ads, filtering internal traffic — are exactly the ones that determine whether your analytics data is trustworthy or misleading.
The implementation checklist in this post covers every step. Use the DebugView verification before declaring any implementation complete. A GA4 setup that takes 3 hours to do properly will pay dividends for the next 3 years of business decisions.
Need a GA4 audit or setup done right? The Ignited Nepal analytics team implements GA4, GTM, and conversion tracking for growth-stage businesses. Get your free analytics audit at ignitednepal.com/cro/
Written by the Ignited Nepal team. ignitednepal.com