How to set up Google Analytics 4 properly for a small site

TL;DR

You can have Google Analytics 4 collecting accurate data on your site in about 30 to 45 minutes. You need a Google account, access to your site’s code or CMS dashboard, and a clear idea of what counts as a conversion for your business. Get the setup right once and you will have a reliable foundation for every traffic and content decision you make going forward.

What You Need Before You Start

  • a Google account (the same one you use for Google Search Console is ideal)
  • admin access to your website, whether that is FTP, your WordPress dashboard, Shopify admin, Squarespace editor, or direct access to your codebase
  • Google Tag Manager already installed, or willingness to paste a code snippet into your site’s <head> HTML directly (GTM is cleaner long-term and free)
  • your live site URL and a clear list of what counts as a conversion: newsletter signup, purchase, contact form submission, phone number click
  • about 30 to 45 minutes of uninterrupted time

Optional but useful: a staging version of your site for testing, and a separate browser profile so your own visits do not pollute your early data.

Step 1: Create Your GA4 Property

Go to analytics.google.com and sign in. If you have old Universal Analytics properties in your account, ignore them. UA stopped collecting data in July 2023, and you are starting fresh with GA4.

Click Admin (the gear icon at the bottom left of the screen). In the Account column, either select an existing account or click Create Account and name it after your business. Then in the Property column, click Create Property.

Name the property after your website (for example, “My Bakery Website”). Set your reporting time zone to wherever your customers are located, not necessarily where you are. This matters for day-parting reports. Set the currency to match your business.

On the next screen, fill in your industry category and business size. These answers only personalise the suggested reports in your dashboard. They do not affect how data is collected.

You should now see your new GA4 property listed in Admin with a numeric Measurement ID in the format G-XXXXXXXXXX. Copy that ID somewhere handy. You will need it in the next step.

Step 2: Add a Web Data Stream

Still in Admin, find the Property column and click Data Streams. Click Add stream and choose Web.

Enter your full website URL including https:// and give the stream a descriptive name, usually just your domain. Leave Enhanced Measurement toggled on. This automatically tracks scrolls, outbound link clicks, file downloads, video plays on YouTube embeds, and site search without any extra code on your end.

Click Create stream.

You will land on the stream details page. At the top you will see your Measurement ID beginning with G-. This is the identifier that connects your site’s tracking to your GA4 property.

You should now see the stream listed under Data Streams with a status indicator showing it is active. No data will appear yet because the tracking code is not on your site yet.

Step 3: Install the Tracking Code

You have two routes here, and the right choice depends on how you manage your site.

Option A: Direct snippet install

Copy the full gtag.js snippet from the stream details page. It looks like this:

<!-- 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>

Paste this into the <head> section of every page on your site, as close to the opening <head> tag as possible. In WordPress, use the Site Editor or a lightweight plugin like Insert Headers and Footers. In Shopify, go to Online Store > Themes > Edit Code > theme.liquid and paste before the closing </head>.

Option B: Via Google Tag Manager (recommended for most small sites)

If you have Google Tag Manager installed, create a new tag inside your GTM container. Choose Google Tag as the tag type. Enter your Measurement ID. Set the trigger to All Pages. Click Submit to publish the container.

You should now be able to open your site’s page source in a browser (right-click > View Page Source) and find your G-XXXXXXXXXX Measurement ID confirming the tag is live.

Step 4: Verify Data Is Flowing

Go back to GA4 and click Reports > Realtime in the left nav. Open your website in a separate browser tab or on your phone. You should see at least one active user appear in the Realtime overview within 30 seconds.

If you see zero users after a minute, check these in order:

  • your browser has an adblocker active (disable it temporarily for this test)
  • the snippet is placed in the <body> instead of <head>, or is missing from some page templates
  • the Measurement ID contains a typo

For more detailed debugging, install the Google Analytics Debugger Chrome extension. Enable it, then go to Admin > DebugView in GA4. Reload your site and watch events stream in with full parameter details.

You should now see events like page_view, session_start, and first_visit appearing in DebugView in real time.

Step 5: Configure Your Conversions

GA4 tracks dozens of events automatically, but you have to mark which ones actually matter to your business. Those become your conversions.

For a contact form that redirects users to a /thank-you page after submission, go to Admin > Events and click Create event. Name the new event contact_form_complete and set these matching conditions:

Event name equals page_view
AND page_location contains /thank-you

Save the event. Then go to Admin > Conversions, find contact_form_complete in the list, and toggle Mark as conversion to on.

For Shopify stores, enable the Google and YouTube channel in your Shopify admin. It automatically fires the standard purchase event with revenue data attached.

Be selective here. Mark only the events that represent genuine business value. Marking scroll depth or button clicks as conversions will make your conversion rate meaningless.

You should now see your conversion events listed in the Conversions report with green toggle switches indicating they are active.

Step 6: Connect Google Search Console

This step gets skipped constantly, and that is a mistake. Connecting Google Search Console pulls real search query data into GA4 so you can see which keywords bring traffic that actually converts, not just traffic that bounces.

In GA4, go to Admin > Property Settings > Search Console Links. Click Link and follow the prompts to connect the Search Console property for your domain. You need to be verified as an owner in Search Console for this to work, not just a viewer.

Once linked, a Search Console collection appears in your Reports left nav within 24 to 48 hours. It shows landing page performance and the organic queries driving visits to each page side by side.

You should now see the Search Console reports collection appear in your left navigation panel. If you do not see it after 48 hours, check that the link status in Admin shows as Healthy.

Step 7: Build Two Custom Explorations You Will Actually Use

The default GA4 reports are cluttered and often show you metrics without context. Two simple Explorations will answer 80% of what a small site owner needs to know.

Go to Explore > Blank to open the Exploration canvas.

Traffic source report: drag Session source / medium into Rows. Drag Sessions, Conversions, and Session conversion rate into Values. This gives you a clean channel-level view of where your converting traffic comes from.

Landing page report: same structure, but drag Landing page + query string into Rows instead. Add a filter to exclude rows containing your admin or staging URLs.

Save both explorations. You can return to them from the Explore section at any time.

You should now see both saved explorations in your Explore library with data populating within 24 hours of your first tracked sessions.

Step 8: Filter Out Your Own Internal Traffic

On a small site getting 200 visits a month, your own 30 visits represent 15% of all sessions. That skews every metric you look at.

Go to Admin > Data Streams > your stream > Configure tag settings > Define internal traffic. Add a rule with your office IP address. Search “what is my IP” in Google to find it. Name the rule something like office.

Then go to Admin > Data Filters and click Create filter. Choose Internal Traffic and name it “Internal team.” Set the state to Testing first. In DebugView, visits from your IP should now show a traffic_type = internal parameter.

Once confirmed, switch the filter state to Active. From that point forward, internal hits are excluded from all your standard reports.

You should now see the filter listed as Active in Data Filters. Verify by loading your site from your office connection and confirming Realtime shows zero users (since internal traffic is excluded).

Step 9: Extend Data Retention to 14 Months

By default, GA4 stores event-level data for only two months. That means when you try to do a year-over-year comparison in Explorations, the data simply will not be there.

Go to Admin > Data Settings > Data Retention. Change Event data retention from 2 months to 14 months. Click Save.

This setting only affects the raw event data used in Explorations. Standard Reports use aggregated data that is kept indefinitely. But Explorations are where you do real analysis, so the setting matters more than it looks.

You should now see 14 months confirmed on the Data Retention settings page. The change applies going forward. Data already purged cannot be recovered.

Common Mistakes To Avoid

  • Skipping the internal traffic filter. On small sites, your own visits can represent 10 to 20% of total sessions. The earlier you filter them, the cleaner your baseline data.
  • Marking every event as a conversion. GA4 flags a session as converted the moment any conversion event fires. Tag only the events that reflect genuine business value or your conversion rate becomes a number you cannot trust.
  • Comparing partial weeks to full weeks. GA4 defaults to the last 28 days, but if you installed the tag on a Wednesday, your first “week” only has five days. Explicitly set date ranges when making comparisons.
  • Double-counting purchases. Some CMS plugins AND native integrations both fire purchase events independently. Run a test transaction and check DebugView before going live with ecommerce tracking.
  • Not checking the tag after a site update. A theme switch or plugin update can silently remove your GA4 snippet. Set a monthly calendar reminder to open DebugView and confirm events are still flowing.
  • Forgetting the 14-month retention change. This is the most common silent mistake. By the time you want year-over-year data, it is gone with no recovery option.

When To Level Up

GA4 works well for sites under roughly 100,000 monthly sessions. Past that scale, or when you need to combine GA4 data with CRM records, paid ad spend, or product usage data, the tool starts showing its limits.

The main friction points are data sampling on large Exploration date ranges, the inability to join session data with your customer database, and the 14-month ceiling on event-level history even with the extended retention setting.

At that point you are looking at a proper analytics stack: GA4 for data collection, BigQuery for storage (GA4 has a free native export that makes this practical), and a BI layer like Looker Studio or Metabase on top. For user-level product analytics without GA4’s report-building constraints, tools like Mixpanel or PostHog are worth evaluating.

See the tools reviewed in /category/growth/ to find options matched to your current scale. The articles there compare GA4 against alternatives across price, data ownership, and reporting depth. For a specific next step, read how to connect GA4 to BigQuery for free and best free analytics tools for small business sites.

Frequently Asked Questions

Do I need Google Tag Manager to use GA4?

No. You can paste the gtag.js snippet directly into your site’s <head> and it works fine. GTM is worth the extra setup if you plan to add other tags later (ad pixels, heatmaps, consent tools) or if you want to update tracking without touching code every time.

How long before I see data in GA4 reports?

Realtime data appears within seconds of installing the tag. Standard Reports populate within 24 to 48 hours. If you see “No data available” after 48 hours, start with DebugView to check whether events are arriving at all.

Will GA4 slow down my website?

The gtag.js script loads asynchronously so it does not block your page render. The performance impact is negligible for most small sites. If Core Web Vitals are a priority, load GA4 through GTM with a window-loaded trigger to push the script execution slightly later in the load sequence.

Is GA4 free to use?

Yes. The standard GA4 property has no official session or hit limits and costs nothing. Google Analytics 360 is the paid enterprise tier with guaranteed SLAs and unsampled reporting at high volumes. Small sites will not need it.

Can I still access my old Universal Analytics data?

You can view historical UA data in the old interface until Google removes it, but no new data flows into UA properties. There is no migration of historical UA data into GA4. If you need to preserve UA historical data, export it to a spreadsheet or BigQuery before Google removes access.

Bottom Line

A proper GA4 setup comes down to nine focused steps: create the property, add a web data stream, install the tracking tag, verify data with DebugView, mark your actual conversions, link Search Console, build two useful Explorations, filter your own traffic, and extend data retention to 14 months. None of these steps require paid tools or technical expertise beyond basic CMS access. Do this once, verify it works monthly, and you will have clean reliable data to back every growth decision you make. When your site outgrows what GA4 can tell you, the tools and comparisons at /category/growth/ will point you toward what comes next.