The first thing it showed me was that 31% of our “visitors” were crawlers. Our conversion rate had not dropped; it had never been that high. Now the numbers I forward are numbers I trust.
R. K.
Store owner · DTC fashion
One asynchronous script covers analytics and chat. Five layers of bot rules sit in front of the numbers you report, and a data-quality page tells you when a release broke collection.
Questions you answer every day
Visitors · humans
48,213
▲ 12.4%
Pageviews
162,940
▲ 8.1%
Filtered as bots
31%
▼ 2.2 pts
Live now
128
Visitors · humans vs all traffic
Humans onlyAll trafficBot layers · 14 days
Humans onlyAll trafficFive layers, 197+ rules. False positives can be marked as human.
You installed it; you get asked when the numbers look wrong. These are the usual reasons.
Crawlers, scrapers and AI bots inflate visits and crush conversion rate. The marketing team reports the inflated number for a quarter.
A CSP change or a renamed container drops events on one template. Charts shrink; nobody gets an error.
Analytics from one vendor, chat from another. Two tags, two cookie notices, two sets of identifiers that never match.
Facts about the snippet and the sample site used across this website.
Visitor counts on this page are sample data. Snippet size and rule counts are current product facts.
Install, filtering, privacy, quality, SDKs and alerts. After the first week most of this runs on its own.
Paste once before , or use the plugin for WordPress, Shopify or Webflow. Analytics, autocapture and the chat widget load from the same async script.
<!-- analytics + chat, one script -->
<script async src="https://app.tapcub.com/w.js"
data-site="YOUR_SITE_KEY"></script>
// server: the order, with an id for de-duplication
tapcub.track('purchase', { order_id: 'A1024', revenue: 42 });User-agent, headers, client signals, ASN and rate. 197+ rules split search engines, AI crawlers and scrapers from people. Toggle between humans and all traffic on any report.
Example scenario: 31% of “visitors” were crawlers. Conversion rate did not drop — it had never been that low. The number reported upward changed, the business did not.
Filtered by layer · 14 days
HumansAllThe AI content ledger lists which crawler read what, and who sent visitors back.
Analytics counts visitors without a cookie or a persistent identifier. If you turn on chat or a custom identifier, the consent module and the privacy page tell you exactly what changed.
| Collected | Analytics | With chat |
|---|---|---|
| Cookie | None | Session cookie for the thread |
| IP address | Truncated before it is stored | Same |
| Identifier | Daily rotating hash | Visitor ID shared with analytics |
| Form fields | Not captured by default | Message text only |
| Retention | Free 6 months · Pro 12 · VIP 24+ | Per chat plan |
The data-quality page aggregates intake warnings, collector rejects, blocked events and high-cardinality keys by hour. A release that drops events shows up as a reason, not as a shrinking chart.
Data quality · today
Monitors for traffic drop, error spike, crawl anomaly and quota are built in.
Web, iOS, Android, HarmonyOS, mini-programs, Flutter and React Native, plus uni-app and a server API. The same login ID merges a person across all of them.
| Platform | Install | Identity |
|---|---|---|
| Web | <script async> or plugin | Anonymous → login ID |
| iOS / Android / HarmonyOS | Package manager | Device ID → login ID |
| Mini-programs | npm or copy | OpenID → login ID |
| Flutter / React Native / uni-app | Package manager | Wraps native SDKs |
| Server | HTTP API | Login ID, insert_id de-dup |
Traffic drop, error spike, crawl anomaly and quota are built in. Add a monitor on any saved metric with a threshold, a period change or a forecast band.
Error rate · 14 days · forecast band
Error rateExpectedThe first week is set-up. After that the job is reading alerts and answering “is this number real?” with a link.
Paste the snippet, add the site, confirm the first pageview in the live view. Turn on cookieless mode for the EU domain.
Live view
31% of traffic is filtered. Open the AI content ledger: GPTBot read 1,204 pages and sent 412 visitors back.
Bots & AI crawlers
The event inbox proposes six names from autocapture. Confirm four, send purchase from the server with an order ID.
Event inbox
Collector rejects jumped: staging is sending with the production key. Fix the env variable; rejects fall back within the hour.
Data quality
Marketing asks whether the spike is people. Toggle humans only, share the link. The answer is the chart, not an argument.
Shared dashboard
The same snippet serves the chat widget, so adding support later is a toggle in the console, not a second tag.
Give each team the view they need and keep the keys, costs and members to yourself.
Reads channels with bots already removed, so return is computed on people.
OpenConfirms events in the inbox; you only step in for server events and selectors.
OpenGets the chat widget from the same snippet, with Agent-only seats you can scope.
OpenMembers · example.com
InviteUp to 10 sites on the free plan, 1 member; Pro 3 members; VIP 1 ten; VIP 2 unlimited.
Owner and Admin hold site keys, members, costs and notification channels. Analyst edits events, rules and reports. Viewer reads. Agent-only is chat-only.
Every pack marks which events must come from the backend and which properties are required. Read it before you write the integration.
Templates that fit this role
Solutions worth reading next
Two scenes from the job, written as the person doing it might tell them.
The first thing it showed me was that 31% of our “visitors” were crawlers. Our conversion rate had not dropped; it had never been that high. Now the numbers I forward are numbers I trust.
R. K.
Store owner · DTC fashion
One script, one consent note, one visitor ID shared by analytics and chat. I removed two tags from the site and the page got faster.
T. N.
Developer · agency
Illustrative scenarios written from the perspective of people who do this job. Not real reviews.
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
About 2 KB gzipped, loaded asynchronously. Analytics, autocapture and the chat widget share it; the widget loads lazily when needed.
Five layers: user-agent, headers, client signals, ASN / IP and rate. 197+ rules are built in. Every report can switch between humans only and all traffic; a false positive can be marked human.
Analytics can run without cookies, using a daily rotating hash for visitor counting. Chat uses a session cookie for the thread. The privacy page lists exactly what each mode stores.
Web, iOS, Android, HarmonyOS, WeChat and other mini-programs, Flutter and React Native, plus uni-app and a server API. The same login ID merges a person across them.
Free 6 months, Pro 12 months, VIP 24 months or more. Raw events can be slimmed before the retention deadline from the data-quality page.
Paste one line and see the first pageview in a minute
Free plan, up to 10 sites, no credit card. Humans-only toggle on every report.