Published Nov 1, 2026
Singapore Bot Traffic in GA4: What Server Logs Revealed
A young publishing site investigated suspicious Singapore traffic in GA4. Server logs and a week-long blocking test showed why selected network restrictions made more sense than a country-wide ban.
Category: Analytics & Conversion Tracking · By Mikalai Sasau
A young publishing website kept seeing low-engagement traffic that Google Analytics 4 attributed to Singapore. An unusual device profile made the sessions easy to isolate, but the decisive evidence came from a different source: server logs. A week-long restriction on selected networks, followed by a planned rollback, showed what website-level protection could change and what it could not prove about the analytics data.
Practical takeaway: Singapore bot traffic in GA4 is a symptom to investigate, not a reason to block Singapore. This case separates a suspicious analytics group from actual HTTP requests, tests a limited intervention, and preserves the distinction between a working access rule and verified human traffic.
Contents
Executive summary
The investigation followed two related but separately measured groups: a GA4 profile combining Singapore, Chrome, Windows, 1280x1200 and en-us; and website requests from 15 candidate IPv4 networks. There was no shared identifier connecting each analytics session to an individual request.
During the main restriction, the selected networks generated 314 logged requests. Of these, 312 received 403 Forbidden, two received 301 redirects, and none received 200 OK. After the planned rollback, 30 requests from 29 addresses received 200. The first appeared about 32 minutes after the restriction ended.
Recorded GA4 checks also found that the original Singapore profile disappeared during the restriction while other website measurement continued. Together, these observations supported retaining a narrowly scoped network restriction. They did not identify an operator, authenticate every GA4 session, establish that all Singapore traffic was unwanted, or prove the absence of legitimate users in the blocked ranges.
About this case: the subject is an anonymized young, specialist publishing website. Exact incident dates, account identifiers, addresses and infrastructure names are withheld. The reported request counts are preserved. This is a case study, not a universal blocklist or an installation guide.

A Singapore pattern, not a verdict about Singapore
For a young content website, traffic growth should help answer useful questions: which articles attract readers, where those readers come from, and whether they continue exploring. A recurring group of sessions with almost no reported engagement makes those questions harder, even when its absolute volume is modest.
Here, Singapore stood out alongside a repeated technical profile and one-view sessions. The concern was not the country itself. It was the combination of a geographically concentrated group, unusually consistent device values, and weak engagement.
The practitioner supplying the case had noticed similar Singapore-related anomalies in informal checks of roughly ten other projects. That observation helps explain why the question deserves attention. It is not a representative survey, a measurement of search demand, or evidence that those projects shared the same traffic source.
Google describes Analytics location data as approximate geolocation. A country in a report is not the identity or confirmed physical location of the person operating a browser or script. The defensible question was therefore: what activity sits behind this particular Singapore-labelled group?
The GA4 group that prompted investigation
The recorded checks used country, browser, operating system, screen resolution and language together. The working signature was Singapore + Chrome + Windows + 1280x1200 + en-us. Sessions, engaged sessions and page or screen views provided the behavioral context.
None of those dimensions is a bot verdict. Chrome on Windows is ordinary, a language setting does not establish nationality, and an unusual resolution can still belong to a real visitor. Their value here was consistency: they defined a repeatable group to observe before and after an intervention.
| Reporting period | Matching sessions | Interpretation |
|---|---|---|
| Day before the main restriction began | 20 | The profile was present before the week-long intervention. |
| Activation day | 16 | The rule was enabled late in the day; this is not a full blocked-day total. |
| Seven subsequent calendar dates, ending on the rollback date | 0 on each date | The recorded checks found no matching Singapore sessions. The final date includes time after rollback. |
The matching sessions in the two pre-activation calendar rows had no engaged sessions and one reported view per session. That describes the received measurement, not a direct observation of a person's attention. Google's engagement definition depends on session duration, key events and view counts; short genuine visits can also fail to qualify.
The same device-and-language combination was checked in other countries. Three isolated matches appeared across three countries on the first date after activation, followed by one match in another country on the next date. These low-engagement observations were retained, but their small numbers did not establish relocation of the original stream.
The analytics dates and the server experiment were not identical windows. The rollback happened before midnight, and a completed calendar day is not necessarily fully processed GA4 data. Google's data-freshness guidance warns that processing can take 24-48 hours and reported values can change. The available checks therefore did not establish a mature, post-rollback return of the same GA4 signature.

Why this was not simply another ghost-spam case
In our earlier fake referral traffic investigation, the central discrepancy was reported page views without nearby page requests in the checked logs. Google support described that particular evidence as Direct Hit Injection. The conclusion did not identify the sender.
This case had a different, directly observable component: the selected networks really were requesting the website. Their HTTP responses changed when a server-side restriction was applied and removed. That made website access controls relevant, without proving that every suspicious analytics event came through those requests.
The distinction matters when someone asks how to stop Singapore bot traffic in GA4. A website rule can act on requests reaching that website. It cannot, by itself, inspect events sent directly to Google's collection infrastructure. Conversely, hiding a group in a report does not stop its requests from reaching the site.
These are related diagnostic problems, not evidence of a common sender. Nothing in the supplied record connects the Singapore-labelled activity to the promotional platform discussed in the earlier article.
Investigation logic: define the suspicious reporting group → establish which website or edge requests are observable → compare the available evidence → test a proportionate response → evaluate analytics and HTTP outcomes separately. Missing evidence keeps the mechanism open.

What server logs could actually establish
The server investigation used a candidate list of 15 IPv4 /24 networks. A /24 contains 256 addresses, so the restriction covered 3,840 possible addresses, not 3,840 observed visitors. The record preserves the candidate list and its test results; it does not provide an event-by-event link from GA4 sessions to those networks.
Current and rotated monitoring logs contained timestamps with UTC offsets, the recorded client and connection-peer addresses, hostnames, request methods, grouped paths, response statuses and User-Agent strings. The analysis selected the main website and its www alias, then counted requests whose logged client address fell in the candidate ranges.
The supplied parsing run reported no malformed JSON lines. This supports readability of the files, not completeness of every possible delivery path. Nginx supports conditional logging and location-dependent request logging; an origin log is not automatically a complete record of activity served elsewhere.
Across the analyzed phases, the selected requests used GET and browser-like User-Agent strings advertising Chrome on Windows. Versions varied, and the addresses changed frequently. That pattern was consistent with a distributed automated process, but the User-Agent was a claim made by the requester, not verified software identification.
One tempting conclusion was deliberately left open. Cloudflare-related fields were empty for these requests, although peer addresses were recorded. The displayed analysis did not compare each peer against a trusted proxy chain. Nginx's real-IP processing depends on trusted senders and the configured header. Empty Cloudflare fields alone did not prove a CDN bypass or independently locate the sources in Singapore.
The logs also did not record the screen resolution or language used in the GA4 signature. The two datasets supplied complementary evidence, not a one-to-one join.
A week-long restriction and a planned rollback
The main experiment restricted the candidate networks for approximately one week, on the publishing website rather than across every hosted domain. It included a scheduled rollback and retained request monitoring. The operational question was whether the selected sources would continue requesting content, and how the server would respond.
A shorter restriction had already taken place during the earlier observation period. That history matters: the first row below is not a clean, untreated baseline. The main experiment's activation and rollback records, including the change in UTC offset, were used to separate the phases.
| Observed phase | Requests | Distinct IPs | Response breakdown |
|---|---|---|---|
| Before the main restriction | 297 | 269 | 200: 232; 403: 64; 301: 1 |
| During the main restriction | 314 | 287 | 200: 0; 403: 312; 301: 2 |
| After the scheduled rollback | 30 | 29 | 200: 30; 403: 0; 301: 0 |
Read the table as response evidence, not a traffic-reduction chart. The phases differ in length, and the post-rollback observation was incomplete. Distinct-address counts are calculated separately for each phase and must not be added as if they represented different people.
During the main restriction, 312 of 314 requests received 403, or approximately 99.4%. That is the share of selected logged requests receiving that status. It is not a 99.4% bot-detection accuracy score or a claim that 99.4% of all suspicious GA4 sessions were removed.
All 15 candidate networks remained represented during the restriction. Most selected requests targeted the publications section: 302 of 314. The block changed the responses rather than making the request attempts disappear. Two redirects remained in the results, so it would also be inaccurate to describe every recorded request as rejected.
The GA4 checks provided a parallel observation: the original Singapore profile was absent while other site measurement continued. That was consistent with the intervention helping, but there was no randomized control group and no authenticated session-to-request match.
What returned after the restriction ended
The rollback was verified through its execution record, not inferred from a quieter analytics chart. The record showed the temporary rule being disabled, a successful configuration test and a successful Nginx reload.
The first subsequent request from the selected networks received 200 about 32 minutes later. The available post-rollback sample contained 30 successful responses from 29 distinct addresses across 12 of the original 15 networks. Three requests occurred on the rollback date and 27 on the following date.

Eleven requests were grouped under publications; the remaining 19 were grouped as other paths. Browser-like Windows/Chrome identifiers remained visible, but those details did not establish the purpose of every request or prove that all responses contained the intended article.
The supported conclusion was specific: the selected network sources were still making website requests, and successful responses resumed after access was restored. It was not a demonstrated return of 30 GA4 sessions, a verified set of 29 people, or proof that the same operator controlled every address.
Why selected networks, not an entire country
The publisher decided to retain a standing restriction on the same 15 networks. The rationale combined repeated requests during the trial, substantial address rotation within the selected ranges, the return of successful responses after rollback, and the parallel disappearance of the original GA4 profile.
Blocking only the last observed address would have been a fragile response to that rotation. However, a network restriction creates a real trade-off: it also excludes addresses within the range that were never observed behaving suspiciously. The record does not prove that every address was unwanted or that no valuable crawler or legitimate reader could be affected.
This was therefore a scoped operational decision, not a universal blacklist. The ranges are not reproduced as rules for other publishers to copy. Another site may have customers, partners, monitoring services or useful crawlers in networks that this publisher chose to restrict.
Country-wide blocking would make an even broader decision from a weaker signal. The country helped define the reporting symptom; the network evidence informed the access decision. Those are different roles.
The numbers also did not establish a high-volume denial-of-service incident. The case concerned measurement quality and unwanted distributed requests. It did not quantify lost revenue, prove content theft, or establish the sender's motive.
What changed on the server, and what stayed unchanged in GA4
A standing rule with a review boundary
The final setup retained the original 15 networks in a separate Nginx include, using the existing domain-specific customization. No additional country or network ranges were added. The retired experiment timers were disabled, and the final checks showed a valid configuration, a successful reload, an active service and a public homepage response of 200.
The implementation used the hosting panel's customization mechanism rather than relying only on edits to generated files. DirectAdmin's Nginx documentation explains those customization paths. Their relevance is maintainability, not a guarantee that every future configuration change preserves the intended scope.
Scope still matters inside Nginx. Its address-based access rules have inheritance conditions: a more specific location with its own access rules can behave differently. A configuration test alone does not prove rejection on every path, and an origin rule does not necessarily govern responses served entirely from an edge cache.
At the case cutoff, a new blocked-source 403 sample after final reactivation had not been separately captured. The trial supplied earlier behavioral evidence; the final checks supplied deployment evidence. Neither a homepage check nor a successful reload established the absence of collateral effects.
A review every 30 days was recommended, but no such follow-up results were available at the case cutoff. In this context, permanent meant a standing rule without the trial's automatic expiry, not a rule that should never be reconsidered.
Reporting exclusions are not network protection
There was no basis for deleting all Singapore activity or treating every similar device as fake. The safer reporting approach was to preserve the original data and use clearly labelled comparisons for the investigated profile, with an unfiltered view alongside them.
Google documents automatic exclusion of known bots and spiders. That qualification matters: data remaining in GA4 is not thereby authenticated as human activity.
It also distinguishes report-level filtering from data filters. Active exclusion filters can permanently discard incoming data and do not repair historical records. The documented filter types are not a general-purpose rule engine for this arbitrary country-and-device combination.
An analytical exclusion would therefore be a reporting definition, not proof that every excluded session was automated. It also would not stop new website requests. Conversely, successful website protection would not prove that unrelated fabricated events could no longer reach Analytics. No new GA4 exclusion or saved Exploration is represented as deployed by this case.
What another site should take from this case
The useful result was not a smaller Singapore row. It was a better-supported decision about a particular stream of requests, with its limits recorded.
For another publisher, the same questions matter more than the same addresses: is the unusual group consistently defined; do the available logs cover the relevant delivery route; are the periods comparable; and does a narrow intervention change the behavior it was meant to change? A matching country or browser value does not answer those questions.
Future monitoring should also allow for a changed signature. Checking the same device profile across countries can reveal possible relocation, but isolated lookalikes are not enough. New network activity, legitimate access complaints, and sustained changes in engagement deserve review rather than automatic expansion of the blocklist.
When the difficulty is reconciling these sources, Google Analytics Traffic Anomaly Investigation is the relevant service for assessing the evidence and possible next actions. Its investigation scope is distinct from repairs, a separately saved Exploration, or ongoing monitoring. Those require their own agreement; identifying every sender or delivering permanently bot-free data is not a defensible promise.
The general lesson is to investigate the mechanism before choosing the remedy. Singapore was a useful clue in this case. It was never a sufficient reason to exclude a country.

Methodology and sources
This retrospective uses the supplied investigation record: recorded Windsor.ai GA4 query summaries, server-side analysis outputs, log-format and archive inventories, experiment activation records, rollback execution logs, and final configuration checks. The server tables reproduce those aggregate outputs; they are not presented as a new independent reprocessing of raw logs. The GA4 figures reproduce the recorded checks, not a newly queried property export.
The selected population was requests recorded for the main hostname or its www alias with a logged client address in 15 predefined networks. The list was a diagnostic selection, not a random sample of Singapore traffic. Screen resolution and language were unavailable in the request logs, and no shared identifier joined requests to sessions.
The phases were separated using activation and rollback timestamps with their UTC offsets, including the seasonal time change. GA4 dates used the property's documented reporting time zone. The earlier observation period included another short restriction; the main trial lasted approximately one week; and the post-rollback window extended into the next, incomplete day. Absolute request totals are not normalized rates, and repeated observations do not establish statistically independent visitors.
For anonymity, the website, account identifiers, addresses, exact incident dates and operational filenames are withheld. Phase counts and the approximate rollback-to-first-request interval are preserved. Private logs and account material are not published as raw downloads.
Public technical guidance was checked on 31 October 2026. Official Google Analytics, Nginx and DirectAdmin documentation is linked beside the relevant explanations. The earlier metricfixer case supplies a contrasting investigation, not independent confirmation of this incident. The supplied service-page screenshot defines the service boundary. Interpretations, remaining uncertainty and the proportionality of the chosen response are distinguished from the recorded observations.
This article provides technical and operational information, not a universal bot-detection rule, a reusable IP blacklist, or a guarantee of security or traffic quality. metricfixer is independent of Google, Nginx, DirectAdmin and Cloudflare. The evidence does not identify the traffic operator or establish that traffic attributed to Singapore is inherently unwanted. Validate any access or measurement change against legitimate usage, the actual delivery architecture and applicable consent requirements. Product behavior and documentation can change.