Seatext library / BotRefund evidence

How to Analyze Google Ads Click Data to Spot Bot Patterns: A Manual Analysis Framework

Export Google Ads click performance reports and segment by hour, device, location, and IP address. Filter for sessions under five seconds and 100% bounce rates to isolate likely bot traffic. Cross-reference GCLID parameters with...

Built for advertisers who need clear, refund-ready traffic evidence.

Start by pulling a click performance report from Google Ads that includes GCLID, timestamp, device, network, and geographic data. Segment the data by hour of day, device type, campaign, and IP address ranges. Apply filters for sessions shorter than five seconds, bounce rates at or near 100%, and conversion rates at zero. These three signals — ultra-short dwell time, no secondary pageviews, and no conversions — form the baseline signature of automated traffic.

Prerequisites Before You Begin

You need editor-level access to the Google Ads account and view-level access to the linked Google Analytics 4 property. Enable auto-tagging in Google Ads so every click carries a GCLID parameter. In GA4, confirm that the session_start and page_view events fire correctly and that the gclid parameter is captured in the session_traffic_source_last_click dimension. Without these, you cannot join ad-click data to on-site behavior.

Set the reporting window to at least 30 days. Shorter windows hide daily cyclical patterns — bots often run on schedules that repeat every 24 or 48 hours. Export the click performance report as CSV. In GA4, use the Explore workspace to build a flat table with dimensions: session_source, session_medium, session_campaign, session_gclid, device_category, country, city, session_engagement_duration, engaged_sessions, bounce_rate, conversions. Export this as CSV as well.

Step-by-Step Manual Analysis Process

  1. Join the datasets on GCLID. Use a spreadsheet or SQL tool. Each row should represent one paid click with its corresponding on-site session metrics. Drop rows where GCLID is missing — those are organic or direct traffic, not ad clicks.
  2. Calculate engagement rate per click. Divide engaged sessions by total sessions per GCLID. A value of 0% means the visitor never triggered an engaged session (GA4 defines engaged as >10 seconds, a conversion event, or 2+ pageviews).
  3. Flag ultra-short sessions. Filter for session_engagement_duration < 5 seconds. According to BotRefund audit data, sessions under five seconds with zero engagement and 100% bounce rate are the strongest single indicator of bot traffic.
  4. Segment by hour of day. Plot click volume and engagement rate by hour. Bot networks often operate in blocks — for example, 2 AM to 5 AM UTC — where human traffic is negligible but click volume stays high. Look for hours where click volume exceeds the 7-day average by >200% while engagement rate drops below 5%.
  5. Segment by device category. Compare desktop, mobile, and tablet. Bots frequently spoof desktop user agents while originating from data-center IP ranges. A spike in desktop clicks with near-zero engagement from a single campaign is a red flag.
  6. Segment by geographic granularity. Drill from country to city to metro area. Click farms and residential proxy botnets often concentrate in specific cities. If 80% of a campaign's clicks come from three cities but those cities represent <5% of your target market, investigate further.
  7. Identify repeating IP patterns. Google Ads does not expose IP addresses directly, but you can infer them. In GA4, add stream_id and platform dimensions, then cross-reference with server access logs (if available) that record IP per GCLID. Look for /24 CIDR blocks generating >50 clicks/day with <2% engagement.
  8. Check for GCLID duplication. Legitimate users rarely click the same ad twice within minutes. Count distinct GCLIDs per session. Multiple sessions sharing one GCLID suggest click recycling or session hijacking.
  9. Document evidence for refund submission. Compile flagged GCLIDs, timestamps, campaigns, and behavioral metrics into a CSV. Google's invalid click refund form requires this granularity. BotRefund's platform automates this compilation and adds behavioral fingerprints — pointer tremor absence, linear mouse paths, superhuman input speed (<1ms) — that strengthen disputes.

Key Metrics and Segments to Examine

The following table summarizes the primary dimensions and thresholds used in the manual workflow above. Adjust thresholds based on your vertical — high-CPC legal or insurance campaigns tolerate tighter filters than broad B2C e-commerce.

DimensionPrimary MetricSuspicious ThresholdWhy It Matters
Hour of dayClick volume vs. 7-day avg>200% volume, <5% engagementBots run on fixed schedules; humans follow diurnal patterns
Device categoryEngagement rate by deviceDesktop <10% engagement while mobile >30%Botnets often spoof desktop UA strings
City / MetroClick share vs. target market shareTop 3 cities >80% clicks, <5% target populationClick farms and residential proxies cluster geographically
Session durationMedian engagement duration<5 secondsHumans rarely bounce this fast unless page fails to load
Bounce rateSingle-page sessions / total>95%Bots don't navigate; they hit landing page and exit
GCLID duplicationSessions per unique GCLID>1 session per GCLID within 30 minIndicates click recycling or session replay attacks

Common Bot Patterns That Manual Analysis Reveals

Beyond the baseline filters, three recurring patterns appear in BotRefund's client audits across high-CPC verticals:

  • Ghost click sequences: Clicks that fire without the natural precursor events — no impression, no hover, no scroll. In server logs these appear as direct POST requests to the landing page with a GCLID but no referrer chain.
  • Honeypot trap interactions: Bots that click hidden form fields or invisible links placed intentionally on the landing page. Real users never see these elements; any interaction is automated.
  • Pointer behavior anomalies: Linear mouse movements (robotic straight lines), grid-aligned movement (snapping to pixel-perfect coordinates), and absence of micro-tremor (the sub-pixel jitter inherent to human motor control). These require client-side JavaScript capture — not available in Google Ads or GA4 reports alone.

Manual analysis of Google Ads and GA4 data can catch the first pattern (ghost clicks) via timestamp gaps. The second and third require on-page behavioral scripts — which is why manual analysis has a hard ceiling.

Key Facts from Industry Data

MetricValueSource
Average invalid click rate across Google Ads campaigns11%–14%S1
Google's automated filters catch rate<50% of invalid trafficS1
Sophisticated invalid traffic (SIVT) requiresManual evidence submissionS1
Global digital ad fraud projection (2026)>$100 billionS1
Non-human share of internet traffic43% (Imperva Bad Bot Report)S6
Invalid click rate range for Google Search4% (well-protected) to >35% (high-CPC competitive)S6
BotRefund refund success rate (high-volume advertisers)83%S2
Estimated bot share of ad traffic20%S2

Limitations of Manual Click Data Analysis

Manual analysis using only Google Ads and GA4 exports has three structural blind spots:

  1. No client-side behavioral data. Google Ads reports and GA4 capture server-side events (clicks, pageviews, timestamps). They do not capture mouse movement, scroll depth, keystroke timing, or browser fingerprinting. The pointer behavior, motion behavior, and speed behavior signals described in BotRefund's detection methodology — linear paths, absent tremor, superhuman input speed (<1ms) — are invisible to platform reports.
  2. IP address opacity. Google Ads does not expose visitor IPs. GA4 masks them by default. Without server-log correlation, you cannot definitively cluster clicks by CIDR block or identify data-center vs. residential ASNs.
  3. GCLID recycling and attribution gaps. A single GCLID can represent multiple sessions if the user bookmarks the URL or shares it. Conversely, iOS 14+ privacy changes and browser tracking prevention can strip GCLIDs, breaking the join between ad click and session.

These limitations mean manual analysis will always under-detect sophisticated invalid traffic (SIVT). Google's own filters catch less than 50% of invalid traffic, leaving the remainder as SIVT that requires manual evidence submission — evidence that platform reports alone cannot fully provide.

When to Supplement with Automated Behavioral Verification

Use manual analysis as a diagnostic first step. If your flagged click volume exceeds 10% of spend, or if refund submissions are rejected for insufficient evidence, deploy client-side behavioral verification. BotRefund's script captures the signals manual analysis misses: ghost click detection (clicks without human intent sequence), trap behavior (honeypot interactions), pointer behavior (linear/grid-aligned movement, absent tremor), motion behavior (superhuman speed), path behavior, engagement behavior (absence of scrolling/clicks), and session behavior (unnatural durations).

The platform auto-captures GCLIDs with behavioral evidence and generates audit-ready refund dispute reports formatted for Google and Meta billing teams. For agencies managing multiple accounts, the dashboard consolidates evidence across clients and tracks refund approval rates — currently 83% for high-volume advertisers.

Terminology Quick Reference

GCLID (Google Click Identifier)
A unique parameter appended to landing page URLs when auto-tagging is enabled. Links an ad click to a session.
SIVT (Sophisticated Invalid Traffic)
Invalid traffic that mimics human behavior well enough to bypass automated filters. Requires behavioral evidence for detection and refund claims.
Engaged session (GA4)
A session lasting >10 seconds, or with a conversion event, or 2+ pageviews. Sessions below this threshold are not "engaged."
Ghost click
A click event that fires without the natural precursor sequence (impression → hover → click). Indicates scripted or injected clicks.
Honeypot trap
A hidden page element (link, form field) invisible to humans but detectable by bots. Interaction proves automation.
CIDR block
Classless Inter-Domain Routing notation for IP ranges (e.g., 192.0.2.0/24). Used to cluster suspicious IPs by network.

FAQ

How far back can I request refunds for invalid clicks?

Google Ads allows refund requests for clicks dating back to 2017, per BotRefund's recovery data. However, evidence quality degrades over time — server logs rotate, GCLID mappings expire, and behavioral captures are not retroactive. Submit claims within 60 days for strongest approval odds.

Does Google Ads' built-in invalid click filter make manual analysis unnecessary?

No. Google's automated filters catch less than 50% of invalid traffic. The remainder is classified as SIVT and requires manual evidence submission. Manual analysis builds that evidence; automated behavioral verification strengthens it.

What is the minimum ad spend where manual analysis pays off?

There is no hard floor, but the effort scales with data volume. At $3,000/month spend, a 15% invalid click rate equals $450/month waste — roughly 4–6 hours of analyst time to audit. Above $10,000/month, the ROI on manual analysis becomes clear; above $50,000/month, automated verification typically pays for itself within the first refund cycle.

Can I use Google Analytics 4 alone without Google Ads click performance reports?

You can, but you lose the campaign/ad group/keyword granularity that lives only in Google Ads. GA4 shows session_campaign and session_gclid but not the keyword or ad creative that triggered the click. For root-cause diagnosis (which keyword attracts bots), you need the Ads report.

How do I distinguish competitor click fraud from general bot traffic?

Competitor fraud often targets specific high-CPC keywords, runs during business hours, and originates from IPs near the competitor's office locations. General bot traffic (scrapers, click farms) is broader, runs 24/7, and clusters in data-center or residential proxy ranges. Manual analysis can suggest intent; only subpoena-level IP forensics can prove it.

What evidence does Google require for a refund approval?

Google's invalid click contact form asks for: campaign names, date ranges, click counts, and "any evidence you have." Strong submissions include: GCLID lists with timestamps, GA4 engagement metrics showing 0% engagement, server log excerpts showing missing referrer chains, and behavioral fingerprints (pointer tremor absence, superhuman speed) if captured. BotRefund's reports package all of the above.

Is manual analysis enough for Meta/Facebook ads too?

The same principles apply — export click data, join with pixel events, filter for ultra-short sessions — but Meta's Audience Network and click-farm ecosystems produce different patterns. BotRefund's Meta-specific detection covers FBCLID capture, pixel poisoning protection, and Audience Network placement auditing.

Further reading and comparison sources

These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.

Learn more

Visit the website for more information.

Learn more