Why Setup Matters More Than You Think
Most GA4 issues - missing data, duplicate events, incorrect conversions - trace back to setup errors.
Getting the foundation right takes 30 minutes. Fixing a broken setup months later takes significantly longer.
This article walks through the correct way to set up GA4 from property creation through to a verified, live implementation via Google Tag Manager.
What You Need Before You Start
- A Google account with access to Google Analytics
- A Google Tag Manager container already installed on your website
- Admin access to the website (to verify the setup is working)
If GTM is not yet installed, do that first. GTM is the recommended way to deploy GA4.
Step 1: Create a GA4 Property
- Go to analytics.google.com
- Click Admin (bottom left gear icon)
- Under Account, make sure you are in the correct account
- Under Property, click Create Property
- Enter your property name (e.g. “YourBrand - GA4”)
- Select your reporting time zone and currency
- Click Next, fill in business details, then click Create
Important: One property per website. Do not create multiple properties for the same site unless you have a specific reason (e.g. staging vs production).
Step 2: Create a Data Stream
After creating the property, GA4 will prompt you to create a data stream.
- Select Web
- Enter your website URL (including
https://) - Enter a stream name (e.g. “Main Website”)
- Leave Enhanced Measurement enabled - this auto-collects scrolls, outbound clicks, site search, video engagement, and file downloads
- Click Create stream
After creation, you will see your Measurement ID - it looks like G-XXXXXXXXXX. Copy this. You will need it for the GTM tag.
Step 3: Deploy GA4 via Google Tag Manager
Do not add the GA4 snippet directly to your site’s code if you are using GTM. Use GTM to deploy it instead.
3a. Create a GA4 Configuration Tag
- Open your GTM container
- Click Tags → New
- Click Tag Configuration
- Select Google Tag (this is the current tag type for GA4, replacing the old “GA4 Configuration” tag)
- Enter your Measurement ID (
G-XXXXXXXXXX) - Set the trigger to All Pages (Initialization - All Pages is even better, as it ensures GA4 loads before other tags fire)
- Name the tag: “Google Tag - GA4”
- Save
3b. Publish the Container
- Click Submit in the top right of GTM
- Add a version name: “Add GA4”
- Click Publish
Step 4: Verify the Tag Is Firing
Before you trust the data, confirm the tag is working.
Option 1: GTM Preview Mode
- In GTM, click Preview
- Enter your website URL
- Navigate around the site
- In the Tag Assistant window, confirm the Google Tag fires on each page
Option 2: GA4 Real-Time Report
- Open GA4
- Go to Reports → Realtime
- Visit your website in a separate tab
- You should see yourself appear as an active user within 30 - 60 seconds
Option 3: Browser DevTools (Network Tab)
- Open Chrome DevTools (F12)
- Go to the Network tab
- Filter by
collectorg/collect - Refresh the page
- You should see requests being sent to
google-analytics.com
Step 5: Configure Basic Settings in GA4
Once the tag is verified, configure a few settings before you start relying on the data.
Internal Traffic Filter
Exclude your own visits from reports so they do not skew the data.
- GA4 → Admin → Data Streams → your stream → Configure tag settings
- Define internal traffic → Add your IP address(es)
- GA4 → Admin → Data Filters → Create filter → Internal Traffic → set to Active
Unwanted Referrals
If you use a payment gateway or booking system on a separate domain, add it to the referral exclusion list so it does not create false referral sessions.
GA4 → Admin → Data Streams → your stream → Configure tag settings → List unwanted referrals
Link Google Ads
If you run Google Ads, link the accounts immediately.
GA4 → Admin → Product Links → Google Ads Links → Link
This enables:
- Importing GA4 Key Events as Google Ads conversions
- GA4 audience sharing to Google Ads
- Auto-tagging data to flow back into GA4
Link Search Console (if applicable)
GA4 → Admin → Product Links → Search Console Links
This enables organic search query data inside GA4.
Step 6: Confirm Enhanced Measurement Is Working
Navigate your site and check that Enhanced Measurement events are appearing in the Realtime report:
- Scroll 90% down a long page →
scrollevent should appear - Click a link to an external site →
clickevent should appear - If you have a site search, use it →
view_search_resultsshould appear
If these events are not showing, check that Enhanced Measurement is enabled in your data stream settings.
Common Setup Mistakes to Avoid
Firing the Google Tag on all pages AND having another GA4 event tag also on all pages. This creates duplicate pageviews. One Google Tag (Base Configuration) is enough. All events fire through it.
Using the wrong Measurement ID.
Copy the ID directly from the data stream screen. It always starts with G-.
Not filtering internal traffic. Your own development and QA visits will contaminate the data from day one if you skip this step.
Creating a property in the wrong Google account. Make sure the property is created in the client’s account, not yours, if you are an agency. Use Google Analytics account access to grant yourself access instead.
Not verifying before going live. Always check Realtime reports and GTM Preview mode before considering the setup complete.
What a Correct Setup Looks Like
When done correctly, you should have:
- One GA4 property with one web data stream
- One Google Tag in GTM firing on all pages (Initialization trigger preferred)
- Internal traffic filtered out
- Google Ads linked
- Enhanced Measurement enabled
- Real-time data appearing in GA4
This is the baseline. From here, you add conversion tracking, custom events, and audience configuration.
Final Thoughts
GA4 setup is not complicated, but every step matters.
A clean baseline setup means cleaner data, more accurate reporting, and fewer debugging sessions down the line.
In the next article of this series, we will cover:
GA4 conversions vs key events - how to set them up and what to actually track.
Related Posts
GA4 Enhanced Ecommerce Tracking - What the Data Layer Needs to Look Like
10 min read
Tracking a Next.js SPA in GTM: History Navigation, Invisible Carts, and Full E-Commerce Setup
GA4 vs Universal Analytics - What Actually Changed and Why It Matters
7 min read
Need Help With Your Google Ads?
I help e-commerce brands scale profitably with data-driven PPC strategies.
Get In Touch