This is a complete, in-order walkthrough for setting up GA4 from scratch. If you're dealing with a specific problem instead — like GA4 not showing conversions — jump straight to diagnosing the common causes.
Step 1 — Create a GA4 property
A property is GA4's basic "container" for one website or app's data.
- Go to analytics.google.com
- Admin → Create Property
- Enter a name (typically the business or site name), your time zone, and currency
- Pick an industry category — this only affects suggested reports, nothing critical
Step 2 — Create a web data stream
A stream is a specific data source — in this case, your website.
- Inside the new property: Data Streams → Add stream → Web
- Enter the site URL and a stream name
- GA4 generates a Measurement ID in the format
G-XXXXXXX— you'll need this in the next step
Step 3 — Add the tracking code to your site
You have two paths:
Direct gtag code — simpler, but every future tracking change means touching the site's code directly:
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXX');
</script>
Through Google Tag Manager (recommended) — one extra step up front, but every future tracking change happens without touching the site's code again. Worth it for most businesses planning to expand their tracking over time.
Step 4 — Confirm tracking is actually working
Before moving on, verify data is actually coming in:
- GA4 → Reports → Realtime
- Visit your own site in a separate browser window
- Your visit should show up within about 30 seconds
If nothing shows up, double-check the code matches the Measurement ID from step 2, and try an incognito window — ad blockers occasionally block GA4 itself.
Step 5 — Set up key events (conversions)
GA4 tracks a lot automatically, but you have to tell it which actions actually matter for your business.
- Admin → Key Events
- Mark an existing event as a key event (e.g.
form_submit,purchase,generate_lead) - If the event you need isn't tracked automatically yet, you'll need to configure it manually first (via GTM or directly in code)
This is the step people skip most often — and then wonder why GA4 isn't showing conversions in Google Ads.
Step 6 — Link to Google Ads
Without this step, GA4 and Google Ads simply don't talk to each other — they're separate systems by default.
- Admin → Product Links → Google Ads
- Link → select the Google Ads account
- Enable conversion import and ads personalization
The first data import typically takes 3-24 hours.
Common mistakes worth avoiding from the start
Before you repeat this process for another client or site, it's worth knowing the three most common mistakes we see in newly set-up accounts — it saves you from debugging the same issues repeatedly.
What this costs if you outsource it
If you're weighing doing this yourself versus paying for it, we've broken down real market pricing — a complete GA4 + GTM setup typically runs a few hundred to a couple thousand dollars as a one-time fee, depending on complexity.
We're automating this exact workflow — setup and common-mistake detection — inside MARLY. Setup takes minutes instead of a week of back-and-forth with an agency. Join the waitlist.
