How to connect Google Analytics 4 the right way (the 6-step setup that everyone gets wrong)
Most GA4 setups are silently broken. Tracking codes fire but key events aren't configured, or admins forget to verify data is flowing. Here's the 6-step setup that gets you to a real, useful GA4 — in about 25 minutes.
Most GA4 installations look fine on the surface and are quietly broken underneath. The tag fires, the dashboard shows numbers, everything seems OK — but key events aren't configured, the wrong domain is being tracked, or the install is double-counting visits. By the time you realize the data has been wrong for six months, you've already made decisions based on it.
This is the 6-step setup that actually gets you to a useful GA4 — one where the numbers you see are the numbers you should trust. It takes about 25 minutes if your site is on a normal platform (WordPress, Shopify, Webflow, Squarespace, or a custom-built site with GTM). We'll cover the steps in order so each one is verifiable before you move on.
Before you start: gather these 3 things
- Admin access to your Google account. Personal Gmail or a Google Workspace account that owns or has Edit access to whatever GA property already exists. If you've been using GA in the past you probably already have this.
- Admin access to your website. WordPress admin login, Shopify owner, Webflow account holder, or wherever your site is hosted. You need the ability to add code to the site's <head>.
- A list of 2-3 things you actually want to track. Write these down before you start. Examples: "contact form submitted," "newsletter signup," "pricing page viewed," "primary CTA clicked." If you can't list at least two specific events, you're going to set up GA and immediately have nothing meaningful to measure.
Step 1: Create the GA4 property (3 minutes)
Go to analytics.google.com and click Admin (the gear icon in the bottom left). Click "+ Create" → "Property." Name your property after your business ("Plainly" not "Plainly's GA4"). Pick your reporting timezone — get this right; changing it later splits your historical data in a way that looks ugly forever.
Pick your reporting currency if you sell anything (it controls how revenue is displayed). Click through the business questions on the next screen — they don't actually affect anything, just give them honest answers.
Step 2: Add a Web data stream (1 minute)
After creating the property, GA4 asks you what kind of data stream you want. Choose Web. Enter your full URL with https:// (e.g. https://myplainly.com) — get this exactly right. If you have both www and non-www versions of your site, set up redirects on your host so only one canonical URL is used, then enter that one here. Don't set up two streams.
Give the stream a descriptive name ("myplainly.com Web"), accept the Enhanced Measurement defaults (these automatically track scrolls, outbound clicks, downloads — almost always what you want), and click Create.
GA4 will now display your Measurement ID — a string like G-XXXXXXXXXX. Copy this; you'll paste it in step 3.
Step 3: Install the tracking code (5 minutes)
This is the step everyone does and then assumes is done. It's not done until you verify it's done — see step 4. Installation depends on your platform:
- WordPress. Install a plugin like Site Kit by Google (official) or GA4 Google Analytics. Site Kit will walk you through linking your Google account; the plugin handles tag insertion. Don't paste the gtag.js code manually if you're using a plugin — that creates duplicate tracking.
- Shopify. Admin → Online Store → Preferences → Google Analytics → Enter your Measurement ID. Shopify handles the rest. If you have a Shopify theme that includes its own GA snippet, remove that — Shopify's built-in tag is enough.
- Webflow. Project Settings → Integrations → Google Analytics → paste your Measurement ID. Webflow inserts the tag site-wide. Don't ALSO paste a custom code snippet.
- Squarespace. Settings → Advanced → External API Keys → Google Analytics → paste your Measurement ID. Same warning about not doubling up.
- Custom site with Google Tag Manager. GTM is the recommended path for any custom site. In GTM, create a new tag of type "Google tag" (formerly GA4 Configuration), set the trigger to "All Pages," and publish. GTM is also where you'll set up custom events in step 5.
- Custom site without GTM. Paste the gtag.js snippet GA4 gave you directly into the <head> of every page. Easiest with a shared layout file (HTML include, React shared layout, server-rendered template).
Step 4: Verify it's actually working (2 minutes)
This is the step nobody does and then everyone regrets. The fastest way to verify GA4 is firing:
- Open your site in an incognito tab. So your installation can't get fooled by cached login state or extensions.
- Open DevTools. F12 on most browsers. Go to the Network tab.
- Filter for "collect". Reload the page. You should see a request to https://www.google-analytics.com/g/collect... (or sometimes https://analytics.google.com/g/collect). If you see one — GA4 is firing. If you don't see one, your install is broken regardless of what GA4's dashboard says.
- Open GA4 → Reports → Realtime. Within 30 seconds of loading your site, you should appear as 1 active user in the Realtime view. If not, something between your site and GA4 is blocking the request — ad blocker in your browser, server-side firewall, CSP, or a broken Measurement ID.
Step 5: Configure your key events (10 minutes)
This is where 90% of GA4 setups fall apart. Without key events configured, GA4 is just measuring traffic — not measuring whether anything good happens because of that traffic.
Go back to Admin → Events. You'll see automatic events GA4 tracks for free: page_view, session_start, first_visit, scroll, outbound clicks. These are useful but they're not unique to your business.
The events you write down in the pre-flight checklist are the ones to add now. The setup path depends on how you're tagging:
- Form submissions via GTM. Create a GTM tag of type "GA4 Event" with an event name like form_submit_contact. Trigger it on a Form Submission listener matching your form's ID or URL. Test in GTM's Preview mode before publishing.
- Form submissions on a custom site. In your form's success handler, call gtag('event', 'form_submit_contact'). Push it after the form is actually submitted (not when the button is clicked, which could be a click-then-validation-error).
- Button or link clicks. Either GTM with a Click Listener trigger filtered to specific selectors, or in custom code: gtag('event', 'cta_clicked_pricing') in your onClick handler.
- Page views of a specific URL. Go to Admin → Events → Create Event. Match the event name page_view with parameter page_location containing the URL you care about. Save with a custom name like viewed_pricing_page.
After you create each event, also mark it as a "Key Event" by toggling the switch in the Events table. Without that toggle, GA4 tracks the event but doesn't include it in conversion reports.
Trigger each event from your incognito tab and verify it appears in Reports → Realtime → Events. If it doesn't show up within a minute, the tag isn't firing — go back to GTM Preview or your console.log to debug before moving on.
Step 6: Connect Search Console (3 minutes)
This step is technically optional but unlocks one of the most useful views in GA4: which Google search queries actually drove your traffic.
Admin → Property → Search Console Links → Link → choose the Search Console property for your domain (you should already have this set up; if not, go verify your site at search.google.com/search-console first). Pick your web data stream. Confirm.
Once linked, you'll see a new section in GA4: Reports → Acquisition → Google organic search traffic. This is where you can finally answer questions like "which keywords are sending me organic traffic that converts?" — without this link, GA4 only shows you "organic search" as one undifferentiated lump.
The post-setup audit checklist
Wait 48 hours for data to populate, then verify each of these. If any fail, fix before relying on the data:
- Realtime shows users. Sanity check that the tag is firing.
- Reports → Engagement → Events shows your custom events. If page_view is there but your form_submit_contact isn't, the custom event wiring is broken.
- Reports → Acquisition shows multiple channels. If 100% of your traffic is showing as "Direct," your tag is misconfigured (very common with tag-blocking redirects).
- Cross-check against another source. If your CRM logs 10 form submissions yesterday and GA4 shows 0 form_submit events, something is broken in the event wiring.
- No internal traffic in your numbers. Admin → Data Streams → click your stream → More Tagging Settings → Define Internal Traffic. Add your office IP so you don't pollute your own data.
Common setup mistakes (in order of how often we see them)
- No key events configured. By a mile, the most common mistake. People install the tag, see pretty numbers, and never set up the events that would actually tell them whether the site is working.
- Duplicate tags. Site has GA4 installed via WordPress plugin AND a manually-pasted snippet. Result: every visit is counted twice. Look at Realtime and add yourself as 1 user; if you appear as 2, you have duplicates.
- Wrong canonical URL. GA4 stream URL is www.myplainly.com but the site actually serves myplainly.com (no www). The tag still fires but Acquisition reports get weird.
- Internal traffic not filtered. You and your team's daily visits become 30% of your data. Realtime numbers especially get polluted.
- Enhanced Measurement disabled. Someone unchecked the box during setup. Now scroll depth, outbound clicks, file downloads, etc. aren't tracked. Re-enable in Admin → Data Streams → your stream → Enhanced Measurement.
A GA4 setup that 'looks fine' usually isn't. Always verify with the Network tab and Realtime, always set up key events before celebrating, always wait 48 hours and audit again.
What to do after the setup is right
Once the data is trustworthy, the next problem is making sense of it weekly. That's exactly what Plainly solves — connect the GA4 you just configured, and we'll send you a plain-English read-out every Monday morning. The free demo on the homepage shows what the report looks like.
Read your GA4 in two paragraphs, not two hours.
We do exactly what this post describes — automatically, every Monday morning. Try the demo for free, no credit card.
Try the demo