Insights · Analytics · 7 min read
GA4 setup guide for
South African businesses.
Most GA4 installations are wrong. Not broken — just measuring the wrong things, missing conversions, and producing data that looks complete but is not. This guide shows you how to set it up correctly from the start.
Google Analytics 4 replaced Universal Analytics in July 2023. If you were using GA3 (Universal Analytics) and someone migrated you to GA4, there is a reasonable chance the migration was done quickly, incorrectly, or both. The most common outcome: GA4 is installed, it appears to be tracking, but key conversion events are missing, internal traffic is inflating your numbers, and you are making decisions on data you cannot trust.
This guide covers how to set up GA4 correctly for a South African business — step by step, without jargon.
Before you start: the right way to install GA4 on WordPress is via Google Tag Manager (GTM), not via a plugin that hard-codes the tracking code. GTM gives you full control over what fires, when, and how. It takes twenty extra minutes to set up. It saves you hours of debugging later.
This guide assumes you are using GTM. If you are not, install it first.
Step 1: Create your GA4 property
Go to analytics.google.com
Admin → Create Property. Name it clearly — use your business name and the year (e.g. “nogravy 2026”). Select South Africa as the reporting country and ZAR as the currency.
Create a Data Stream for your website
In the new property → Data Streams → Add Stream → Web. Enter your domain. Enable Enhanced Measurement — this automatically tracks scrolls, outbound clicks, site search, video engagement, and file downloads without extra configuration.
Copy your Measurement ID
It looks like G-XXXXXXXXXX. You will need this when configuring GTM.
Step 2: Install via Google Tag Manager
Create a GTM account if you do not have one
tagmanager.google.com. Create an Account for your business, then a Container for your website. Install the GTM code on your WordPress site — the easiest method is the GTM4WP plugin which handles correct placement of both code snippets automatically.
Create a GA4 Configuration Tag in GTM
New Tag → Google Analytics: GA4 Configuration. Enter your Measurement ID (G-XXXXXXXXXX). Set the trigger to All Pages. Name it clearly: “GA4 — Configuration”. Publish.
Verify it is firing
In GTM, click Preview. Open your website in the preview window. Check that the GA4 Configuration tag fires on every page. In GA4, go to Reports → Realtime and confirm you can see your own visit appearing.
Step 3: Set up conversion events
This is the step most people skip. Pageviews alone tell you nothing useful. You need to track the actions that matter to your business.
Contact form submissions
The most important conversion for most South African service businesses. There are two ways to track this. The simplest: configure your contact form to redirect to a thank-you page after submission, then create a GA4 event that fires when that URL is visited. If your form does not redirect, you will need a GTM trigger based on form submission.
Phone number clicks
In GTM: create a Click trigger that fires when the click URL contains your phone number (tel:+27…). Create a GA4 Event tag that fires on this trigger with event name “phone_click”. In GA4, mark this as a conversion.
WhatsApp clicks
Same approach as phone clicks. Create a Click trigger that fires when the click URL contains “wa.me” or “api.whatsapp.com”. For many South African businesses this is the primary conversion action — track it properly.
Email link clicks
Click trigger firing when click URL contains “mailto:”. GA4 Event tag with event name “email_click”. Mark as conversion.
Once you have set up these events, go to GA4 → Admin → Events and toggle each one to “Mark as conversion.” Now your GA4 Conversions report shows you which traffic sources are actually generating enquiries — not just which ones are sending the most traffic.
This is the difference between data that looks good and data that is useful.
Step 4: Exclude internal traffic
If you are visiting your own site regularly — checking pages, testing forms, doing content updates — you are inflating your own traffic numbers. This makes your data less reliable and can skew conversion rate calculations significantly for smaller sites.
Define internal traffic by IP address
GA4 → Admin → Data Streams → your stream → Configure Tag Settings → Define Internal Traffic. Add your office IP address. Find your IP at whatismyip.com. If you work from multiple locations, add all of them.
Create a filter to exclude internal traffic
GA4 → Admin → Data Filters → Create Filter → Internal Traffic. Set to Active. This removes your own visits from all reports going forward. Note: this does not remove historical data — only affects data collected after the filter is enabled.
Step 5: Connect Google Search Console
Linking GSC to GA4 brings your organic search data into GA4 — which queries are driving clicks, which landing pages are receiving organic traffic, and how organic visitors behave compared to paid or direct traffic.
Link in GA4 Admin
GA4 → Admin → Search Console Links → Link. Select your GSC property. The data appears in GA4 under Reports → Acquisition → Search Console within 48 hours.
Step 6: The five things most SA businesses get wrong in GA4
How to tell if your GA4 is set up correctly
Run through this quick check:
- Go to GA4 → Reports → Realtime. Visit your own website. Do you see yourself appearing? If yes, internal traffic is not being excluded.
- Go to GA4 → Reports → Conversions. Are any conversions listed? If this is empty, you have no conversion tracking.
- Go to GA4 → Reports → Acquisition → Search Console. Is there data here? If not, GSC is not linked.
- Go to GA4 → Reports → Acquisition → Traffic Acquisition. Is “Organic Search” appearing as a channel? If everything shows as “Direct” or “Unassigned,” there is a tracking issue.
If your GA4 fails any of these checks, you are making decisions on incomplete or misleading data. A nogravy Site Audit includes a full GA4 health check as standard — we verify what is tracking, what is not, and fix the setup before any other growth work begins.
