Singapore’s #1 SEO Agency
We Rank Every Business on Google

From F&B to fintech, clinics to law firms, startups to enterprise. If your customers search on Google, we make sure they find you first, not your competitors.

150+ Singapore businesses ranked
Industries we’ve worked with
🍽Restaurants & F&B🩺Medical Clinics⚖️Law Firms🏢Real Estate🏨Hotels & Hospitality💳Financial Services🛍Ecommerce & Retail🔧Contractors🎓Education🚗Car Dealers💆Beauty & Wellness🍽Restaurants & F&B🩺Medical Clinics⚖️Law Firms🏢Real Estate🏨Hotels & Hospitality💳Financial Services🛍Ecommerce & Retail🔧Contractors🎓Education🚗Car Dealers💆Beauty & Wellness
Why choose us
Why Singapore businesses choose Singapore SEO Agency

One specialist team, focused only on the organic rankings that put you in front of ready-to-buy Singapore customers.

🎯
SEO only. No distractions.
We do one thing at the highest level. No web design, no social, no ad buying. SEO is everything we do, every minute of every day.
🇸🇬
Built for Singapore SERPs
Singapore’s search landscape is unique: bilingual queries, GMB review velocity, district-level intent. We optimise for how Singapore actually searches.
📊
Transparent reporting, always
We report on the keywords that drive your revenue, not vanity metrics. Every month: where you rank, how it moved, and what we did.
Our process
How we rank your Singapore business in 4 steps

A clear, sequenced path from audit to rankings. You always know what we’re doing and why it matters for your leads.

1
SEO Audit & Keyword Research
A forensic audit of your technical health, content, and backlinks, benchmarked against your top 3–5 Singapore competitors to find the gap.
2
Strategy & Roadmap
A prioritised, sequenced plan for your domain and keyword targets: what we fix first, which pages to optimise, and in what order.
3
On-Page, Technical & Content
We build across every layer at once: technical fixes in your CMS, on-page optimisation, content, internal linking, and schema.
4
Reporting & Optimisation
Clear monthly reporting on rankings and work done. SEO compounds: month three shows movement, month six is where it shifts.
Featured SEO Guide SEO Tools & Analytics

Google Analytics Website Traffic: Why the Numbers Never Match

NT Natalie Tan·October 10, 2026·⏱ 20 min read
Laptop showing charts on a desk, used to review google analytics website traffic by channel

Quick answer: Google analytics website traffic is a consented, filtered sample of your visitors, not a head count. It will never match Search Console clicks, server logs or your hosting dashboard, because each tool counts something different. Read it for trends and channel mix, and reconcile it with Search Console rather than trusting any single number.

Sooner or later every Singapore business owner who checks their Google analytics website traffic hits the same moment of doubt. GA4 shows one figure for last month’s sessions. Search Console shows a different number of clicks from Google. The hosting dashboard says far more visits than either. Someone in the team asks which one is right, and nobody has a clear answer.

The honest answer is that none of them is a head count, and none of them is wrong. Each tool counts a different thing, in a different way, with different blind spots. Google Analytics 4 (GA4), Google’s current analytics product, only sees visitors whose browsers run its tracking code and who have not refused cookies. It then sorts those visits into channels using fixed rules that are easy to break with an untagged link.

This piece explains where your traffic comes from in GA4, why the totals never line up with other tools, what “Direct” and “Unassigned” usually hide, and how to tag WhatsApp, email and QR code campaigns so they show up properly. If you want to see where measurement fits into ongoing search work, our SEO services overview sets out the full scope.

Our conclusion: read GA4 for trends and channel mix, cross-check organic search against Search Console, and stop expecting any single number to be the truth.

Why Google Analytics Website Traffic Is a Sample, Not a Head Count

GA4 works by running a small piece of JavaScript (code that runs in the visitor’s browser) on each page. When that code runs, it sends events such as page views to Google. When it does not run, GA4 never learns the visit happened. That simple fact explains most of the gap between GA4 and every other tool.

Several common situations stop the code from running or limit what it can record:

  • Cookie consent banners. If your site asks visitors to accept analytics cookies and they decline, GA4 either records nothing or, with Google’s consent mode switched on, receives limited cookieless signals. Google Analytics Help notes that behavioural modelling, which estimates the missing visitors, needs the property to collect at least 1,000 events a day from visitors who declined, for at least seven days. Many small business sites never reach that level, so declined visits are simply missing.
  • Ad blockers and privacy browsers, which often block Google Analytics scripts entirely.
  • Browser privacy rules, such as Safari’s Intelligent Tracking Prevention, which can shorten how long analytics cookies last. A returning visitor may then be counted as a new user.
  • Visitors who leave before the page finishes loading, which is more common on slow mobile connections.

GA4 also removes data on purpose. It automatically excludes traffic from known bots and spiders, and you cannot see how much it removed. If you have set up an internal traffic filter, your own team’s visits are removed too.

So the number you see is a sample: the visitors who allowed tracking, whose browsers ran the code, and who passed the filters. That sample is usually large enough to show direction and proportion, which is exactly what you need it for. In our experience, the owners who get the most from GA4 are the ones who accept this early and stop treating a monthly total as an audited figure. A change from one month to the next tells you something. The absolute number on its own tells you very little.

Where Your Traffic Comes From: GA4’s Default Channel Groups

Every session in GA4 has a source (where the visitor came from, such as google or facebook.com) and a medium (the type of traffic, such as organic or referral). GA4 then applies fixed rules to put each session into a default channel group, which is the “Session default channel group” column you see in the Traffic acquisition report under Reports, then Acquisition.

The channels most Singapore service businesses will see are:

  • Organic Search: unpaid clicks from search engines such as Google and Bing.
  • Direct: sessions with no identifiable source, recorded as source “(direct)” with medium “(none)” or “(not set)”.
  • Referral: visits from links on other websites, such as a directory, a news site or a partner.
  • Organic Social: unpaid visits from social platforms such as Facebook, Instagram, LinkedIn or TikTok, or links tagged with a social medium.
  • Email: visits from links tagged with email as the source or medium.
  • Paid Search and Paid Social: only relevant if you run ads.
  • Unassigned: sessions GA4 could not fit into any channel.

GA4’s full list is longer and includes channels such as Organic Video, Display, Affiliates, Cross-network and SMS, but most small business sites only see a handful.

Two things matter about these channels. First, the rules are fixed by Google, not by what you intended. A newsletter link without email tagging does not land in Email just because it came from your newsletter. Second, the rules only work with the information the browser passes along. If a click arrives with no referrer and no tags, GA4 has nothing to classify and the visit usually becomes Direct.

That is why the most useful view is not the total, it is the channel mix over time. If Organic Search grows as a share of sessions month after month while total traffic is flat, your search work is doing its job even though the headline number has not moved. If Direct suddenly jumps, something has probably broken in your tagging, not in your marketing.

What “Direct” and “Unassigned” Usually Hide

Most owners read Direct as “people who typed our web address”. Some of it is. A large part of it, in our experience, is traffic GA4 could not identify. Common sources include:

  • WhatsApp and other messaging app clicks. When someone taps a link inside a mobile app, the app often does not pass referrer information to the browser, so the visit arrives with no source.
  • Links in documents and some email clients, such as a PDF quotation, a Word proposal or a desktop email program.
  • Links copied and pasted into a browser by hand.
  • Bookmarks and typed addresses, the part that genuinely is direct.
  • Visits from https pages to older http pages, where browsers drop the referrer.

For a Singapore business that shares links in WhatsApp groups, sends quotations as PDFs and gets referrals by word of mouth, it is normal for Direct to be one of the biggest channels. A large Direct share is not a problem on its own. It becomes a problem when it hides campaigns you want to measure.

Unassigned is different. According to Google Analytics Help, the Unassigned row appears when a traffic source does not fit the definition of any channel. That happens when someone uses a custom medium the rules do not recognise, such as “qr” or “whatsapp”, or when the source is “(not set)” because session information is missing. Google’s help page on tagging best practices points to tag setup problems as a common cause of (not set), for example events firing before the main Google tag has loaded.

When we audited sites where Unassigned had grown month after month, the cause was nearly always one of two things: campaign links tagged with made-up mediums, or a tag installed in a way that fired out of order. Neither is a traffic problem. Both are measurement problems that a technical SEO review of how pages and tags load would normally catch.

GA4 Sessions vs Search Console Clicks: Different Definitions

The comparison that confuses owners most is GA4’s Organic Search sessions against Search Console clicks. Search Console is Google’s free tool that shows how your site appears in Google Search, including clicks, impressions (how often your pages were shown) and the searches that triggered them.

Google’s own documentation is clear that the two tools use different metrics and systems, so the data will not match. A Search Console click is counted when someone clicks a link to your site in a Google Search result. A GA4 session is a period of activity on your site, and it only exists if the tracking code ran.

The main reasons they differ:

  • Consent and blocking. Search Console counts the click in Google’s own systems, whether or not the visitor later accepts cookies. GA4 only counts visitors it can see.
  • Search engines. Search Console covers Google Search only. GA4’s Organic Search also includes Bing, Yahoo and others.
  • Time zones. Search Console reports in Pacific Time, which is 15 or 16 hours behind Singapore depending on daylight saving. GA4 uses the time zone set on your property. Daily figures will never line up, and month ends will drift slightly.
  • URLs. Search Console reports the canonical URL (the version of a page Google treats as the main one). GA4 reports whatever URL the visitor loaded, including versions with tracking parameters.
  • Bots. GA4 automatically excludes known bots. Search Console does not necessarily filter them the same way.
  • One click, several sessions. A visitor who clicks once, leaves the tab idle and comes back later can create more than one session, and returning visits can be credited to the original search.

Google’s guidance on using the two tools together makes the practical point: the totals will not match, but the trends should follow the same pattern. That is the reconciliation test we recommend. If Search Console clicks rise by a meaningful amount and GA4 Organic Search sessions move in the same direction, both tools agree. If they move in opposite directions, something has changed in your tracking, and that is worth investigating before you report anything.

Which Traffic Number to Trust for What

Every tool on your desk is answering a slightly different question. The table below sets out the numbers Singapore business owners most often see, why each one differs from GA4, and what it is genuinely useful for.

Number you seeWhy it differs from GA4What to trust it for
GA4 sessions (all channels)Excludes visitors who declined cookies or blocked scripts, and known botsMonth-on-month trends and channel mix
GA4 Organic Search sessionsIncludes all search engines, credited by GA4’s own attribution, only for tracked visitorsDirection of organic growth and which landing pages earn it
Search Console clicksCounts clicks in Google Search only, in Pacific Time, regardless of consentThe most complete view of Google search demand, queries and pages
Search Console impressionsCounts how often your pages were shown, not visitedVisibility trends before clicks follow
Hosting or cPanel visit countsCounts server requests, including bots, crawlers and repeat file loadsServer load and uptime, not marketing decisions
Server log filesRecords every request the server received, human or notChecking how search engine crawlers behave on the site
Google Business Profile performanceCounts actions on your profile in Google Search and Maps, many without a website visitCalls, direction requests and profile views from local searches
Enquiries in your inbox or WhatsAppReal people who contacted you, whatever tool saw them firstThe business outcome every other number should explain

Read the table from the bottom up. Enquiries are the only figure that is not an estimate, so every traffic number is useful only to the extent it helps explain them. GA4 is strongest in the middle of the table, as the only tool that compares all channels side by side and shows how visitors behave once they arrive.

Google Business Profile deserves a special note for local businesses. A customer who sees your profile in Maps and taps “Call” may never visit your website, so that enquiry never appears in GA4 at all. If calls from Maps matter to you, our local SEO page explains how profile actions and website tracking fit together.

Keeping Bots, Spam and Your Own Team Out of the Count

GA4 already removes known bots, but two other sources of noise are worth controlling yourself: spam traffic and your own staff.

Spam and unusual bot traffic usually shows up as a sudden spike from one unfamiliar referral source, often a domain you have never heard of, or as a burst of sessions from one city with almost no engagement. Because GA4’s automatic filtering relies on lists of known bots, new ones can slip through. GA4 does not let you remove past data, so the practical response is to note the spike, exclude it in your own analysis by filtering out the source, and avoid reading it as real growth. A one-week spike with no matching rise in Search Console clicks or enquiries is a strong sign it is not people.

Internal traffic is the more common distortion for small teams. If your staff open the website every day to check prices, copy the address for customers or test the contact form, those visits inflate sessions and can make engagement look better than it is. GA4 lets you define internal traffic by IP address under Admin, then Data streams, then your web stream, then Configure tag settings, then Define internal traffic. You then activate the internal traffic data filter under Admin, then Data filters.

Three practical points matter here:

  1. Filters are not retroactive. They only apply from the moment they are active, so record the date you switched them on.
  2. Check the filter state. A data filter can sit in a testing state, where it labels traffic but does not remove it. Make sure it is active.
  3. IP addresses change. Many Singapore office and home broadband connections do not have fixed IP addresses, and staff on mobile data will not match at all. Treat the filter as a reduction in noise, not a guarantee.

Also check the list of unwanted referrals if visitors leave your site to make a payment or book through a third-party system and then return. Otherwise the payment page can appear as a referral source and take credit for your own customers.

UTM Tagging for WhatsApp, Email and QR Codes in Singapore Campaigns

The single most useful habit for cleaner channel data is UTM tagging. UTM parameters are short labels added to the end of a link (utm_source, utm_medium and utm_campaign) that tell GA4 exactly where a click came from. Without them, many of the ways Singapore businesses actually reach customers end up in Direct.

A tagged link looks like this: yoursite.sg/promo/?utm_source=whatsapp&utm_medium=social&utm_campaign=cny_promo. Google’s free Campaign URL Builder will put it together for you.

How to tag the channels that matter most here:

  • WhatsApp broadcasts, groups and Business catalogue links. Use utm_source=whatsapp and utm_medium=social. Because “social” matches GA4’s Organic Social rules, these visits leave Direct and appear where you expect them.
  • Email newsletters and EDMs. Use utm_medium=email and a source such as your mailing tool or “newsletter”. Email is one of the mediums GA4’s Email channel recognises.
  • QR codes on flyers, shopfront posters, event booths or HDB letterbox drops. Use a clear source such as utm_source=roadshow_flyer. There is no default channel for offline print, so whatever medium you choose may land in Unassigned or another channel. That is acceptable as long as you read QR results in the Session source / medium report, or create a custom channel group so they have a home.
  • Social media bios and posts, where the platform already passes some information but a tag lets you separate one campaign from another.

Most agencies will tell you to tag everything, including links between pages on your own site so you can see which banner was clicked. That frequently backfires, because a UTM tag on an internal link can restart attribution mid-visit, overwriting the real source of the session with your own campaign label. Never put UTM tags on links within your own website.

Keep a simple shared sheet of every tagged link, in lower case, with consistent spelling. “WhatsApp”, “whatsapp” and “wa” become three different sources in GA4. If you run campaigns without a marketer on staff, our small business SEO page explains how measurement is usually handled for teams in that position.

Case Study: Reading Organic Growth at a Buona Vista Property Agency

Our real estate SEO case study documents an 8-month engagement with an independent property agency of 6 agents in Buona Vista, Singapore. The page reports the results as a trend in one channel and a count of leads, which is exactly how this piece argues traffic should be read.

MetricBaseline (Month 0)Month 8Change
Monthly Organic Visitors290990+241%
Keywords Ranking Page 13 (brand only)24+700%
Monthly Organic Leads327+800%
GBP Reviews438+850%
Domain Authority921+12

The starting position. The agency’s site had no agent profile pages, no district-specific content and no blog. It was receiving 290 monthly organic visitors and 3 organic leads a month, all from brand name searches. Its Google Business Profile (GBP, the free listing that appears in Google Maps) had 4 reviews, and its Domain Authority, a third-party score estimating a site’s link strength, was 9.

What the programme did. The page sets out five phases: agent profile page architecture in months 1 to 2, a district content strategy covering eight districts in months 2 to 5, property type content in months 3 to 6, technical SEO and schema in months 1 to 3, and a GBP and review programme in months 4 to 8.

How the numbers moved. By months 3 to 5, first district terms reached page 1 and organic leads moved from 3 to 11 a month. By month 8, monthly organic visitors had grown from 290 to 990, keywords on page 1 from 3 to 24, and monthly organic leads from 3 to 27. The agency reached the top 5 for 3 district terms, and the page states that the organic channel became its primary lead source. These results came from the whole programme across all five phases, not from any single change.

What matters for reading traffic is how the page measures leads. Its FAQ explains that organic leads are tracked with GA4 on contact form submissions and phone call click events, with organic channel attribution, and that form and call conversions are tracked separately. The visitor figure shows direction. The lead figure shows whether that direction mattered. Property agencies weighing a similar approach can see how the work is scoped on our real estate SEO page.

A Monthly Routine for Reading Traffic Trends

Once tagging and filters are in place, a short monthly routine gives you everything the numbers can honestly tell you. Use the same date range each time, ideally the full previous month compared with the month before and the same month last year.

Step 1: Check the measurement first. Open the Realtime report and visit your site from your phone to confirm the tag is firing. Look for sudden jumps in Direct or Unassigned. A tracking break looks exactly like a traffic change, so rule it out before reading anything else.

Step 2: Read the channel mix, not the total. In Reports, then Acquisition, then Traffic acquisition, note each channel’s share of sessions. Ask whether Organic Search is growing as a share, and whether any channel has moved sharply.

Step 3: Reconcile organic with Search Console. Compare the direction of GA4 Organic Search sessions with Search Console clicks for the same month. Same direction means the trend is real. Opposite directions mean something in your tracking has changed.

Step 4: Look at landing pages. In the Landing page report, check which pages gained or lost organic sessions, and cross-check those pages in Search Console to see which searches drove the change.

Step 5: Check campaign tags. In the Session source / medium report, confirm that this month’s WhatsApp, email and QR code links appear with the labels in your tagging sheet.

Step 6: Tie it to enquiries. Compare key events (the actions you have marked as important, such as form submissions, phone taps and WhatsApp clicks) with the enquiries your team actually received. Enquiries are the reality check for every traffic number above them. Our case studies show how Singapore businesses in different sectors read progress through leads rather than visits.

Step 7: Write down what changed. Note any site changes, campaigns, filter updates or tag fixes and their dates, so next month’s numbers can be read against them. If you want to see how ongoing support for this kind of review is usually structured, our pricing page is public.

Field notes: In our real estate case study, an independent property agency of 6 agents in Buona Vista, progress over the 8 months was read through two figures, not one. Monthly organic visitors went from 290 to 990, while monthly organic leads went from 3 to 27, having moved from 3 to 11 a month by months 3 to 5. The page explains that organic leads are tracked through GA4 on contact form submissions and phone call click events with organic channel attribution. The visitor trend showed direction; the leads confirmed it was real business.

Our Take

Google Analytics website traffic is a consented, filtered sample of your visitors, not a head count. Visitors who decline cookies, block scripts or use privacy-focused browsers are partly or fully invisible, known bots are removed, and channel labels depend on rules that untagged WhatsApp and QR code links quietly break. That is why GA4 will never match Search Console clicks, server logs or your hosting dashboard.

Use GA4 for what it does well: month-on-month trends, channel mix and landing page behaviour. Reconcile organic search against Search Console by direction rather than total, tag your own campaigns consistently, and judge every traffic number against the enquiries your team actually receives. If you want to know how we approach measurement alongside search work, our about page explains how we work with Singapore businesses.

Frequently Asked Questions

Why does Google Analytics show less traffic than my hosting dashboard?

Hosting dashboards and server statistics count every request to your server, including bots, crawlers, monitoring tools and repeat file loads. GA4 only counts visitors whose browsers run its tracking code, who have not declined analytics cookies or blocked scripts, and it automatically excludes known bots. The hosting figure will almost always be higher. Use it for server load and uptime, and use GA4 for marketing trends and channel mix.

Why don’t GA4 organic sessions match Search Console clicks?

They measure different things. A Search Console click is counted in Google’s systems when someone clicks your result, whether or not they accept cookies. A GA4 session only exists if the tracking code ran. Search Console also covers Google only, reports in Pacific Time and uses canonical URLs, while GA4 includes other search engines and your property’s time zone. Google says the totals will not match but the trends should.

What does Direct traffic mean in GA4?

Direct means GA4 could not identify a source for the session, so it was recorded as source “(direct)” with no medium. It includes typed addresses and bookmarks, but also many clicks from WhatsApp and other apps, links in PDFs and some email programs, and untagged campaign links. A large Direct share is normal for businesses that share links in messaging apps, but tagging your own campaigns will shrink it.

What does Unassigned mean in GA4?

Unassigned appears when a session’s source or medium does not match the rules of any default channel. Common causes are campaign links with custom mediums such as “qr” or “whatsapp”, and sessions where the source is (not set) because session information is missing, which Google links to tag setup problems. Check your UTM mediums against GA4’s channel rules and ask whoever installed your tags to confirm the Google tag loads before other events.

Do cookie banners reduce Google Analytics website traffic?

Yes, usually. If visitors decline analytics cookies, GA4 either records nothing or, with consent mode, receives limited cookieless signals. Google can model some of the missing behaviour, but only for properties that meet its eligibility thresholds, including at least 1,000 events a day from visitors who declined, for at least seven days. Many small business sites do not reach that, so declined visits simply do not appear in reports.

How do I track WhatsApp clicks to my website in GA4?

Add UTM parameters to every link you share on WhatsApp, for example utm_source=whatsapp and utm_medium=social, plus a campaign name. Because “social” matches GA4’s Organic Social rules, those visits will appear in that channel instead of Direct. Use the same lower-case spelling every time. Separately, track taps on your site’s WhatsApp button as a key event so enquiries are counted.

How should I tag QR codes on flyers and posters?

Point each QR code to a tagged link with a distinct utm_source, such as the event or flyer name, a utm_medium and a utm_campaign. There is no default GA4 channel for offline print, so these sessions may land in Unassigned or another channel depending on the medium. Read them in the Session source / medium report, or set up a custom channel group, and keep one QR code per placement so you can compare them.

How do I stop my own staff visits from counting?

Define internal traffic by IP address in your web stream’s tag settings, then make sure the internal traffic data filter is set to active, not testing. Filters only apply from the day they are active and cannot clean past data. Because many office and home connections in Singapore do not have fixed IP addresses, and mobile data never matches, treat the filter as noise reduction rather than a perfect fix.

Is a sudden traffic spike in GA4 good news?

Not necessarily. Check where it came from first. A spike from one unfamiliar referral domain, one city, or sessions with almost no engagement often points to spam or bot traffic that slipped past GA4’s automatic filtering. Compare it with Search Console clicks and your actual enquiries for the same period. If neither moved, treat the spike as noise and exclude that source in your analysis.

Which traffic number should I report to my team or board?

Report trends rather than a single total. A sensible monthly view is GA4 sessions by channel compared with the previous month and the same month last year, Search Console clicks for Google search, and the enquiries your team actually received. Explain that each tool counts differently and that the direction matters more than any one figure. Enquiries are the number every traffic metric should help explain.

If you are not sure whether your traffic reports reflect real visitors or broken tagging, we are happy to take a look. A free SEO audit reviews how your site performs in Google search and flags the pages that attract searchers but do not turn them into enquiries. If you would rather talk it through first, you can get in touch with the team.

N
Natalie Tan
SEO Lead · Singapore SEO Agency

Natalie leads SEO strategy at Singapore SEO Agency, helping local and regional businesses build organic search programmes that drive qualified leads. She specialises in technical SEO and content-led authority building for Singapore SMEs.

Free · No obligation

Ready to find out what SEO can do for your business?

Get a free SEO audit for your Singapore website — we'll show you exactly where you stand, what's holding you back, and what it would take to rank on page 1.

Get Your Free SEO Audit →

More SEO Guides

In This Article
    Talk to us

    Get a free SEO audit

    Fast, no obligation. We reply within 24 hrs.

    Your name
    WhatsApp / email
    Send — get my audit
    — or —
    +65 8933 3760
    Share this article

    © 2026 Singapore SEO Agency. All rights reserved.