The click happened. Now identify the actor.
A click log begins a small investigation. Follow the request from the mailbox to the browser to the product, and the line between security infrastructure and human intent becomes much clearer.
By Moosewave
Published · 11 min read

Direct answer
A raw click proves a request reached a URL.
It does not, by itself, prove a person chose the link. Mailbox providers and corporate security products inspect URLs to stop phishing and malware. A tracking endpoint can therefore see a scanner, a browser, an automated preview, or several of them in sequence. Reliable email click tracking keeps the request, the likely actor, the browser session, and the downstream outcome as separate facts.
- 01Store the original request as an observation with its source and time.
- 02Classify likely machine or human activity with multiple signals and a confidence level.
- 03Look for session continuity, an explicit interaction, or a product event before inferring intent.
- 04Let high-consequence automations wait for stronger evidence than a redirect hit.
Moosewave keeps those evidence layers visible in email analytics instead of compressing them into one engagement badge.
The investigation starts before your redirect
The recipient does not receive a naked path from sender to website. Links can be inspected during mail flow, rewritten, checked again when selected, and passed through more than one security layer. Microsoft documents Safe Links URL scanning and rewriting during mail flow, followed by time-of-click verification. Google documents malicious-link checks for Gmail clients and, for some protected third-party clients, a proxied URL that leads through a check before the destination opens.
These protections are doing useful work. They also change the witness. A provider can assess a URL by reputation or an API without contacting your tracking server. Another system may fetch the URL, follow a redirect, or inspect the landing page. The absence of a tracking hit does not mean no security check occurred, and the presence of one does not reveal the actor on its own.
T−mail flow
The receiver parses the message. A protection layer may classify, rewrite, or validate the links before delivery.
T+request
The tracked URL receives GET or HEAD. Its token identifies the message context, not the person behind the request.
T+redirect
The tracker returns the destination. A scanner may stop, while a browser can accept cookies, run JavaScript, and continue.
T+outcome
A session, account action, reply, order, or other event supplies evidence closer to the campaign's purpose.
Keep request time in server precision, but read it beside send and delivery chronology. A cluster arriving moments after receipt, covering several unrelated links faster than a person could evaluate them, is useful machine evidence. It is still a classification, not an identity. Network ownership and user-agent text can be shared, proxied, or forged.
Incident reconstruction: the confirmation nobody made
Consider a lifecycle campaign with three links: read the guide, compare plans, and confirm interest. The third URL is implemented as a tracking redirect whose GET handler also writes interested = true. Seconds after delivery, all three URLs are requested from the same network in message order. No cookies return, no JavaScript event arrives, and no product session follows. The automation nevertheless moves the recipient into a sales sequence.
The requests are real. The interpretation is the failure. The pattern is consistent with a link scanner walking the message, but the application had made a safe, fetchable request carry a business side effect. By the time anyone investigates, the false inference has already changed the audience and sent another message.
A security system should be able to inspect a link without volunteering the recipient for anything.
HTTP defines GET and HEAD as safe methods: the client does not request an origin-state change. The durable repair is to make the first GET render a neutral page, then require an explicit button or authenticated product action that uses an appropriate state-changing request. The tracker can record the first request, but the confirmation belongs to the second event.
Email has already learned this lesson in a particularly important place. RFC 8058 explains that anti-spam software sometimes fetches URLs in message headers and can accidentally trigger unsubscriptions. Its one-click mechanism therefore uses a specific, receiver-initiated HTTPS POST with user consent. Do not imitate that protocol for arbitrary actions, but keep its separation of inspection and intent.
Build a confidence ladder, not a bot blacklist
Lists of scanner IPs and user agents help, then age. Security vendors change infrastructure, requests pass through shared clouds, and real people use privacy relays. A better model accumulates evidence while preserving the raw event. Each rung answers a narrower question than the one above it.
| Layer | Evidence | Honest conclusion | Good use |
|---|---|---|---|
| Raw request | Token, method, time, destination, limited request context | A URL request occurred | Forensics and routing |
| Likely machine or human | Velocity, sequence, network, method, client behavior | The actor fits a pattern with stated confidence | Filtering and diagnostics |
| Browser session | Cookie continuity, JavaScript, navigation, dwell, interaction | A browser continued beyond the redirect | Content evaluation |
| Downstream action | Authenticated product event, form submission, reply, or order | The intended relationship or business event occurred | Automation and outcomes |
A likely-human label should be recomputable when the model improves. Keep provenance and the rule version, within a documented minimization and retention boundary, rather than replacing the source event. If a later product action contradicts the first classification, the timeline can be corrected without inventing history.
This follows the same evidence discipline as the field note on email opens. An image request is weak evidence of attention. A filtered link request moves closer to intent. A connected session or product outcome is closer again.
Let click-triggered automation earn authority
A raw click can start a reversible process. It can attach an observation to the contact, delay a branch while stronger evidence arrives, or ask an integrated product whether a related session occurred. It should not silently change permission, approve a financial action, expose private content, or treat a lead as sales-ready.
Safe at raw-request level
Store a bounded event, label probable machine activity, increment a low-weight score, or queue a diagnostic check.
Wait for browser continuity
Personalize the next page, record content interest, or begin a reversible nurture branch after an interactive session appears.
Require explicit action
Confirm preferences, submit a form, reveal account data, or make a consequential change only after a deliberate control.
Use downstream truth
Advance commerce or lifecycle state from the order, account, support, or CRM event that actually represents the outcome.
In Moosewave automations, the trigger should carry its provenance and confidence into every branch. A rule can say “likely human click plus authenticated pricing session within thirty minutes,” not merely “clicked pricing.” That sentence is longer because the decision is better specified.
Negative events retain priority. An unsubscribe, complaint, suppression, or permission change overrides any engagement score. A scanner hit cannot resurrect consent, and a high score cannot make an ineligible recipient eligible.
A reliable click report shows its joins
Click-through rate usually divides unique clickers by delivered messages. Click-to-open rate substitutes unique openers as the denominator. Both inherit every choice in “unique,” “click,” “open,” and “delivered.” Publish those definitions, the attribution window, bot policy, and any change in classification rules beside the chart.
Keep four counts visible: all requests, requests remaining after machine classification, likely-human sessions, and downstream actions. That prevents a stricter filter from looking like collapsing interest. Compare stable cohorts by provider, message stream, destination, and time period. Read conversions beside unsubscribes, complaints, and placement evidence.
For commercial messages, connect the email chronology to store-side truth through the commerce layer. Attribution can describe a path without proving causation. Use a comparable holdout when the decision requires incremental lift rather than a plausible sequence.
The click-forensics operating checklist
- 01
Preserve the request
Keep message, link, destination, method, time, and limited necessary request context with provenance.
- 02
Version the classifier
Store the rule or model version, confidence, and reasons so historical results can be explained and recomputed.
- 03
Look for impossible sequences
Flag near-simultaneous traversal, message-order walking, unsupported methods, and absent browser continuity as evidence, not proof.
- 04
Separate redirect from session
Do not let a tracker response stand in for a loaded, interactive destination or authenticated visit.
- 05
Keep GET free of side effects
Render information first. Require a deliberate, appropriate request for consequential state changes.
- 06
Gate the automation
Match the evidence threshold to the reversibility and impact of the action the workflow will take.
- 07
Join the source of truth
Use product, CRM, support, and order events to confirm the outcome the email was meant to produce.
- 08
Audit drift
Watch provider mix, unknown traffic, filter rates, and classifier changes before comparing one campaign with another.
How Moosewave uses click confidence
Moosewave treats a click as an evidence chain. The raw request stays distinguishable from the classifier output, the connected session, and the event supplied by the customer’s system of record. Reports can show the count at every layer and explain why an event was included or excluded.
The same chain travels into audience and automation decisions. Reversible branches can use low-confidence evidence. Consequential branches can require an explicit or authenticated event. Connected destinations and product events preserve chronology across integrations, while retention and access controls keep the forensic record bounded to its purpose.
Open the interactive Moosewave walkthrough to follow a message from delivery through audience state and downstream action. The useful question is no longer “did it click?” It is “which evidence should this decision trust?”
Frequently asked questions
Direct answers about bot clicks, link scanners, click reliability, HTTP safety, and email automation.
What does an email click actually measure?
A raw email click records an HTTP request associated with a tracked link. It can usually identify the message, recipient token, destination, and request time. It does not identify the actor or prove that a person intended the action.
Why do email security scanners click links?
Mailbox and security products inspect links to protect recipients from phishing and malware. Depending on the system and configuration, this can involve URL rewriting, reputation checks, detonation, or fetching a resource. Some checks never reach the sender's tracking endpoint; others can look like clicks in raw logs.
How can I tell a bot click from a human click?
No single field is definitive. Combine timing, request velocity, method, network, user agent, cookie behavior, JavaScript execution, browser-session continuity, and downstream product activity. Keep the result as a confidence label rather than rewriting a guess as fact.
Are click-through rates reliable?
A filtered click-through rate can be useful for comparing similar sends when its counting rules stay stable. It is less reliable as proof of individual intent. Publish the denominator, bot-filtering policy, unique-click window, and known coverage limits beside the rate.
Should an automation trigger from a single click?
A raw click may safely create an observation or begin a reversible review step. Decisions with recipient, account, financial, or permission consequences should require stronger evidence such as an authenticated session, an explicit form submission, or a confirmed downstream event.
Can a GET request safely unsubscribe or confirm a user?
A normal GET should retrieve a representation without causing a requested state change. Use an explicit confirmation and an appropriate state-changing request. Standards-based one-click unsubscribe is a distinct receiver-initiated HTTPS POST flow defined by RFC 8058, not an arbitrary tracking GET.
What should an email click report show?
Show raw requests, likely machine activity, likely human sessions, and downstream outcomes as separate layers. Include event provenance, confidence, counting rules, exclusions, and the negative outcomes that accompanied the campaign.
Sources & method
Standards and provider documentation
Official documentation establishes how protective link layers and HTTP methods behave. The confidence ladder, incident reconstruction, and operating model are Moosewave’s synthesis.
- Microsoft: Safe Links in Defender for Office 365. Documents scanning and rewriting during mail flow, time-of-click checks, URL detonation, and stored click events.
- Google: Click-time link protections. Describes malicious-link checks and proxied URLs used for protected third-party email clients.
- IETF RFC 8058: One-click unsubscribe. Records the problem of automatic URL fetching by anti-spam software and defines a consented HTTPS POST for receiver-initiated one-click unsubscribe.
- IETF RFC 9110: Safe methods. Defines GET and HEAD as safe methods whose requested semantics do not ask the origin to change state.
- Google Safe Browsing: Overview. Documents real-time and list-based URL checks, URL canonicalization, hash-prefix matching, and caching.
Last reviewed 13 August 2026. Security products, client behavior, and provider infrastructure change; verify current documentation and validate with your own traffic before changing production rules.
Continue reading
Trace the evidence on either side of the click
Start with what an open can support, then follow the product event that confirms whether a message changed anything.