Track bot vs. real traffic in your own analytics

When Click Fraud Detection is enabled on a form or funnel, LeadCapture checks every visitor for bot and invalid traffic the moment the page loads.

You can now read that result in your own tracking (Google Tag Manager, GA4, a pixel, or any custom tool), so you can tell bots from real people on every visitor, even the ones who never submit the form.

What you need

  • Click Fraud Detection turned on for the funnel (Funnel Settings).

That is the only requirement. No extra toggle is needed for tracking.

How it works

As soon as the traffic check resolves (right after page load, before anyone fills out the form), LeadCapture fires a single event called anura_verdict   in two ways so it works with any tool:

  1. It pushes to window.dataLayer   (for Google Tag Manager and other dataLayer tools).
  2. It dispatches a browser CustomEvent named anura_verdict   (for custom scripts that do not use a dataLayer).

It fires once per visitor, automatically. There is nothing to add to the funnel beyond enabling Click Fraud Detection.

What's in the event

Field Example Meaning
anura_result   good  , warn  , or bad   The verdict. good = likely real, warn = suspicious, bad = likely bot / fraudulent
anura_rule_sets   ["IP","DC"]   Which detection categories were triggered
anura_invalid_traffic_type   SIVT  , GIVT  , or null   Type of invalid traffic, if any (Sophisticated or General)
anura_mobile   0   or 1   Whether the visitor is on a mobile device
anura_ad_blocker   0   or 1   Whether an ad blocker was detected
anura_response_id   "a1b2c3..."   Unique ID for this check, for cross-referencing
anura_blocked   true / false   Whether this verdict triggered a form block (only if you use blocking)
lc_funnel_id   "..."   The ID of the funnel

No personal information (name, email, phone, etc.) is ever included. Only traffic-quality signals.

Set it up in Google Tag Manager

  1. Create a trigger: Triggers → New → Custom Event. Set Event name to anura_verdict  .
  2. Create variables: Variables → New → Data Layer Variable for each field you want to use (for example, a variable named anura_result   with Data Layer Variable Name anura_result  ).
  3. Attach a tag: add or edit the tag you want to fire (for example a GA4 event), set its trigger to the anura_verdict   trigger from step 1, and pass the variables as parameters.

Example

Send a GA4 event called traffic_quality   with a parameter result set to {{anura_result}}  . You can then break down your reports and audiences by good / warn / bad traffic.

Use it with a custom tool (no GTM)

Add a listener anywhere on the page:

<script>
  window.addEventListener('anura_verdict', function (e) {
    var data = e.detail;
    // data.anura_result is 'good', 'warn', or 'bad'
    // Send data to your analytics, pixel, or backend here.
  });
</script>

If your tool reads window.dataLayer   instead, the same information is available there as an entry like:

{ event: 'anura_verdict', anura_result: 'good', ... }

Tip: the verdict resolves a moment after the page loads. If your listener might load after the event has already fired, also scan the existing window.dataLayer   array for an earlier anura_verdict   entry on startup.

What you can do with it

  • Keep bot and suspicious traffic out of your remarketing and lookalike audiences.
  • Measure how much of your paid traffic is invalid, even when those visitors never convert.
  • Compare conversion rate and lead quality by traffic grade (good vs. warn vs. bad).
  • Trigger your own pixels or server events only for real (good) visitors.

FAQ

Does the visitor have to submit the form?

No. The event fires on page load, so you get a verdict for every visitor.

Do I have to use Google Tag Manager?

No. It works with GTM, GA4, any dataLayer tool, or a plain JavaScript listener.

How often does it fire?

Once per visitor, per page load.

Does it slow down the page?

No. It only reports a result that is already being calculated for Click Fraud Detection.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.