VisitorLens Documentation
Everything you need to install, configure, and get the most out of VisitorLens — from basic setup to advanced WooCommerce analytics.
What you can do with VisitorLens
Watch visitor replays
See every click, scroll, and mouse movement as a visual playback inside your WP admin.
Analyse traffic
Understand where visitors come from, what devices they use, and which pages get the most views.
Detect frustration
Automatically find rage clicks, dead clicks, and U-turn navigation — signs users are confused or stuck.
Heatmaps PRO
Visual overlays showing where users click, how far they scroll, and where their mouse moves.
Funnel tracking PRO
Build conversion funnels and see exactly which step causes visitors to leave.
WooCommerce analytics PRO
Cart abandonment, revenue attribution, and checkout friction — all tied to session replays.
Free vs Pro
| Capability | Free | Pro |
|---|---|---|
| Visitor analytics & dashboard | ✅ | ✅ |
| Session recording & replay | ✅ | ✅ |
| Rage / dead click detection | ✅ | ✅ |
| Real-time online visitors | ✅ | ✅ |
| Data export (CSV / JSON) | ✅ | ✅ |
| Sessions per month | 500 | Unlimited |
| Data retention | 7 days | Configurable |
| Heatmaps | ❌ | ✅ |
| Funnels & goals | ❌ | ✅ |
| WooCommerce integration | ❌ | ✅ |
| Core Web Vitals | ❌ | ✅ |
| Error tracking | ❌ | ✅ |
| Surveys & feedback | ❌ | ✅ |
| Automated insights engine | ❌ | ✅ |
| Alerts & webhooks | ❌ | ✅ |
| Team collaboration (RBAC) | ❌ | ✅ |
| Accessibility insights | ❌ | ✅ |
Requirements
| Component | Minimum | Recommended |
|---|---|---|
| WordPress | 5.8 | 6.4+ |
| PHP | 7.4 | 8.1+ |
| MySQL / MariaDB | MySQL 5.6 / MariaDB 10.1 | MySQL 8.0+ |
| Browser (admin) | Any modern browser | Chrome / Firefox latest |
| WooCommerce (optional) | 6.0 | 8.0+ (for Pro WooCommerce features) |
/wp-json/ — VisitorLens uses the REST API for all tracking data.Installation
Option A — Install from WordPress.org (Recommended)
Go to Plugins → Add New
In your WordPress admin sidebar, click Plugins then Add New Plugin.
Search for "VisitorLens"
Type VisitorLens in the search box. Look for the plugin by Rayhan Kabir.
Click Install Now
Click the blue Install Now button next to VisitorLens.
Activate the plugin
After installing, click Activate. VisitorLens will create its database tables automatically.
Visit the VisitorLens menu
A new VisitorLens item appears in your WP admin sidebar. Click it to open the Dashboard.
Option B — Upload ZIP manually
Download the ZIP
Download visitor-lens.zip from WordPress.org or your purchase receipt.
Go to Plugins → Add New → Upload Plugin
Click Upload Plugin at the top of the page.
Choose the ZIP and install
Select the downloaded ZIP file and click Install Now.
Activate
Click Activate Plugin after installation completes.
Installing the Pro plugin
Make sure free plugin is active
VisitorLens Pro requires the free plugin to be installed and active.
Upload the Pro ZIP
Go to Plugins → Add New → Upload Plugin and upload visitor-lens-pro.zip.
Activate VisitorLens Pro
Click Activate. Pro features appear immediately — no configuration needed to unlock them.
Enter your license key
Go to VisitorLens → Settings → License and paste your license key to enable automatic updates.
First Steps After Installation
Why am I not seeing data?
By default, VisitorLens excludes logged-in WordPress administrators from tracking. This means if you browse your site while logged in as admin, nothing gets recorded. This is intentional — admin visits would pollute your data.
Verify tracking is working
- Open your site in Incognito mode.
- Click around a few pages, scroll up and down.
- Go back to WP Admin → VisitorLens → Dashboard.
- You should see Visitors, Page Views, and Sessions counters increase.
- Go to Replay — your session should appear in the list within 30–60 seconds.
Recommended settings to configure first
| Setting | Where | What to do |
|---|---|---|
| Exclude admin visits | Settings → Privacy | Should be ON by default. Keep it on. |
| Consent mode | Settings → Privacy | Set to match your cookie policy (explicit / implicit / none). |
| Input masking | Settings → Privacy | Enable to hide sensitive form field values in replays. |
| Retention period | Settings → Data | Default is 7 days (free). Extend in Pro. |
| Excluded URLs | Settings → Tracking | Add any pages you don't want to track (e.g. checkout confirmation). |
Dashboard FREE
The Dashboard is your analytics overview. It shows key metrics for the past 30 days (or your selected date range) and updates in real time.
KPI Cards
| Metric | What it means |
|---|---|
| Visitors | Unique visitors per day (based on hashed IP + user agent fingerprint). |
| Page Views | Total pages viewed including repeat visits from the same visitor. |
| Sessions | Number of recorded session replays. |
| Bounce Rate | Percentage of visitors who viewed only one page and left within 10 seconds. |
Charts
- Visitors over time — Daily line chart showing unique visitors and page views.
- Traffic sources — Donut chart: Organic Search, Social, Paid, Referral, Direct.
- Top pages — Table of most visited pages with view counts.
- Recent sessions — List of the latest recorded sessions with device, location, and duration.
Real-time panel
The top-right of the dashboard shows visitors online right now. This counter updates every 60 seconds. A visitor is considered "online" if they've made a tracking request in the last 5 minutes.
Visitor Tracking FREE
VisitorLens automatically tracks visitor data on every page of your site. No shortcodes or manual setup needed.
What data is collected
| Data point | Details |
|---|---|
| IP address | Hashed immediately — the raw IP is never stored. |
| Browser & device | Browser name/version, OS, device type (desktop/mobile/tablet). |
| Screen resolution | Width × height of the visitor's screen. |
| Country / City | Geo-location from IP (requires GeoIP database or server-side lookup). |
| Referrer | Where the visitor came from (previous URL, search engine, social platform). |
| UTM parameters | utm_source, utm_medium, utm_campaign, utm_term, utm_content. |
| Page load time | Measured via the browser's Performance API. |
| Language & timezone | Browser language setting and timezone string. |
How sessions are identified
Each visitor gets a unique session key (UUID) stored in sessionStorage. This resets on every new browser tab or session — it is not a persistent cookie.
SPA support
VisitorLens intercepts history.pushState and history.replaceState to track navigation in Single Page Apps (React, Vue, etc.) and WordPress themes that use AJAX-based navigation.
Traffic source classification
| Source type | Detection rule |
|---|---|
| Organic Search | Referrer matches known search engines (Google, Bing, DuckDuckGo, etc.). |
| Social | Referrer matches social platforms (Facebook, Twitter/X, Instagram, LinkedIn, etc.). |
| Paid | UTM medium = cpc, paid, or ppc. |
| Referral | Referrer is an external domain not matching search or social. |
| Direct | No referrer, or referrer matches own domain. |
Session Replay FREE
Session Replay lets you watch a full visual playback of how a visitor interacted with your site — where they clicked, how they scrolled, what they typed, and where they got stuck.
What gets recorded
Mouse movements
Tracked every 200ms to keep recordings smooth without overloading the server.
Clicks
Every click recorded with coordinates, element info, and whether it triggered any DOM change.
Scrolling
Scroll position sampled every 300ms. Max scroll depth tracked as both pixels and percentage.
Keyboard input
Keystrokes recorded (input values masked by default for privacy).
Form submissions
Form submit events recorded without capturing field values (unless unmasked).
Navigation
Page changes, back/forward navigation, and SPA route changes all captured.
Automatic behaviour detection
| Behaviour | Definition |
|---|---|
| Rage click | 3 or more clicks on the same spot within 700ms — indicates user frustration. |
| Dead click | A click that causes no navigation, DOM mutation, or JS response — user clicked something that didn't work. |
| U-turn | User navigates to a new page then immediately goes back — indicates the page didn't meet expectations. |
| Idle/pause | No activity for 20 seconds — recording pauses automatically to save space. |
Viewing a replay
- Go to VisitorLens → Replay in your WP admin.
- The session list shows all recordings with date, device, location, duration, page count, and frustration score.
- Use the filters (device, country, date range, frustration level) to find specific sessions.
- Click any session row to open the replay player.
- Use the playback controls: Play/Pause, Speed (0.5× to 4×), and the event timeline at the bottom to jump to specific moments.
Frustration score
Each session gets a frustration score from 0 to 100. It is calculated from:
| Signal | Weight |
|---|---|
| Rage clicks | 20 points each |
| Dead clicks | 10 points each |
| JavaScript errors | 15 points each |
| U-turns | 10 points each |
Session limits (Free)
The free plan records up to 500 sessions per month. When the limit is reached, new sessions are not recorded until the next calendar month. Upgrade to Pro for unlimited recording.
Statistics FREE
The Statistics page gives you deep analytics breakdowns across five tabs: Overview, Pages, Audience, Traffic Sources, and Real-time.
Overview tab
Shows KPI summary cards and a line chart for visitors and page views over your selected date range (7 days, 30 days, 90 days, or custom).
Pages tab
Table of all pages ordered by views. Includes: page URL, views, unique visitors, avg. time on page, and bounce rate.
Audience tab
- Countries — Map and table of visitor countries.
- Browsers — Chrome, Firefox, Safari, Edge breakdown.
- Devices — Desktop vs Mobile vs Tablet split.
- Operating systems — Windows, macOS, iOS, Android, Linux.
- Screen resolutions — Most common viewport sizes.
- Languages — Browser language distribution.
Traffic Sources tab
- Source type breakdown (organic, social, paid, referral, direct).
- Top referrer domains with visit counts.
- Top search engines and most common search keywords.
- UTM campaign performance table.
Real-time tab
Live view of visitors on your site right now. Updates every 30 seconds. Shows active pages and visitor count per page.
Settings FREE
All plugin settings are found at VisitorLens → Settings. Settings are organised into tabs.
General tab
| Setting | Description |
|---|---|
| Enable tracking | Master switch — turn all tracking on or off globally. |
| Track logged-in users | Disabled by default. Enable if you want to track logged-in members. |
| Exclude admin users | Excludes WordPress admins from tracking. Recommended: ON. |
| Exclude roles | Choose specific WP roles to exclude (e.g. Editor, Shop Manager). |
| Sampling rate | Record only a % of sessions. Default: 100%. Reduce if server is under load. |
Privacy tab
| Setting | Description |
|---|---|
| Consent mode | explicit — wait for cookie consent. implicit — track unless opted out. none — always track. |
| Respect Do-Not-Track | Honour the browser DNT header. Recommended: ON. |
| Mask input fields | Hides all text typed into form fields in session replays. Recommended: ON. |
| Exclude bots | Automatically detect and skip bot traffic. Recommended: ON. |
Tracking tab
| Setting | Description |
|---|---|
| Exclude URLs | Enter URL patterns (one per line) to skip tracking. Supports regex. Example: /thank-you/ |
| Exclude IPs | Enter IP addresses to exclude (e.g. your office IP). |
| Skip idle sessions | Don't save sessions where the visitor was idle the entire time. |
Data tab
| Setting | Description |
|---|---|
| Retention period | How many days to keep session data. Default: 7 days (free). Configurable in Pro. |
| Auto-cleanup | Daily cron job that deletes data older than the retention period. Runs at midnight. |
| Monthly session limit | 500/month on free. Unlimited on Pro. |
Data Management FREE
Exporting sessions
Go to VisitorLens → Replay. Click the Export button in the top toolbar. Choose your format:
- CSV — Spreadsheet-friendly. Opens in Excel, Google Sheets.
- JSON — Full session data including all events. For developers.
Export respects your active filters — so you can export only mobile sessions, or only sessions from a specific country.
Bulk deleting sessions
Check the checkboxes next to sessions in the Replay list, then click Delete Selected. Deletion is permanent and immediate.
Storage usage
Go to VisitorLens → Settings → Data to see how much database space VisitorLens is using, broken down by table.
Uninstalling cleanly
Heatmaps PRO
Heatmaps give you a visual overlay on top of your actual pages showing where users interact the most.
Types of heatmaps
| Type | What it shows |
|---|---|
| Click heatmap | A heat overlay of every click — hot spots = most clicked areas. |
| Scroll heatmap | How far down the page users scroll. Red = seen by most, blue = seen by few. |
| Mouse movement | Where users move their mouse — often correlates with where they're reading. |
Filtering heatmaps
- Filter by device type — desktop and mobile heatmaps are often very different.
- Filter by date range — see how engagement changes after a redesign.
- Filter by traffic source — do organic visitors engage differently than paid?
Funnels & Goals PRO
Funnel tracking lets you define multi-step user journeys and see exactly where visitors drop off.
Creating a funnel
- Go to VisitorLens → Funnels → Add New Funnel.
- Give your funnel a name (e.g. "Checkout Flow").
- Add steps with URL patterns. Example:
/cart/→/checkout/→/order-received/ - Save the funnel. Data starts collecting from this point forward.
Reading funnel reports
Each funnel shows:
- Entry count — how many sessions entered step 1.
- Step-by-step drop-off — % who moved from each step to the next.
- Overall conversion rate — % who completed all steps.
- Sessions that dropped — links to actual replays of visitors who left at each step.
Goals
Goals are simpler than funnels — a single URL that counts as a conversion. Example: visiting /thank-you/ = a completed purchase.
Goal reports show daily conversion counts, conversion rate trends, and session-level evidence.
WooCommerce Integration PRO
VisitorLens Pro connects deeply with WooCommerce to give you revenue-level insights tied directly to visitor sessions.
Features
| Feature | What it does |
|---|---|
| Order–session linking | Automatically links WooCommerce orders to the visitor session that led to the purchase. Uses user ID or IP address with a 6-hour lookback window. |
| Revenue attribution | See which traffic source, referrer, or UTM campaign generated each order. |
| Cart abandonment tracking | Detects when a visitor adds items to the cart but never completes the order. |
| Checkout friction | Tracks time spent on each checkout step — spot which step loses the most customers. |
| Revenue dashboard | Total revenue, average order value, and top revenue-generating sessions. |
Viewing abandoned carts
- Go to VisitorLens → WooCommerce → Abandoned Carts.
- See a list of all abandoned carts with: visitor info, cart value, products, and time of abandonment.
- Click Watch Replay to see the session where the cart was abandoned.
Core Web Vitals PRO
VisitorLens Pro measures Google's Core Web Vitals on every page — helping you identify performance issues that hurt both user experience and search rankings.
Metrics tracked
| Metric | Full name | What it measures | Good threshold |
|---|---|---|---|
| LCP | Largest Contentful Paint | How long until the biggest element on the page is visible. | < 2.5s |
| FID | First Input Delay | Delay between first interaction and browser response. | < 100ms |
| CLS | Cumulative Layout Shift | How much the page layout shifts unexpectedly while loading. | < 0.1 |
| TTFB | Time to First Byte | How fast the server starts sending the HTML response. | < 800ms |
| FCP | First Contentful Paint | Time until the first piece of content appears on screen. | < 1.8s |
Per-page breakdown
Each metric is reported per page URL and by device type (mobile vs desktop). Mobile and desktop vitals are often dramatically different — always check both.
Error & Resource Tracking PRO
VisitorLens Pro automatically captures JavaScript errors and broken resource loads, and links them to session replays so you can see exactly what the user experienced.
What gets tracked
- JavaScript errors — Error message, source file, line number, column, and stack trace.
- Broken images — Images that failed to load (404, permission denied, etc.).
- Broken CSS — Stylesheets that failed to load.
- Broken scripts — JavaScript files that failed to load.
Using error reports
- Go to VisitorLens → Errors.
- Errors are grouped by message — so if 50 visitors hit the same JS error, it appears as one group with a count of 50.
- Click a group to see the list of affected sessions.
- Click Watch Replay on any session to see the error in context.
Surveys & Feedback PRO
Survey types
| Type | When it appears |
|---|---|
| Exit-intent | When the user's cursor moves toward the browser close/back button. |
| Timed | After the user has been on the page for N seconds. |
| Scroll-triggered | When the user scrolls to a set percentage of the page (e.g. 50%). |
| Rage-click triggered | Automatically pops up when a rage click is detected — "Is something not working?" |
Creating a survey
- Go to VisitorLens → Surveys → Add New.
- Write your question and answer options (multiple choice or rating 1–5).
- Choose trigger type and target pages.
- Set status to Active and save.
Feedback widget
Separate from surveys, the Feedback widget is a persistent button on your site that visitors can click to submit written feedback, categorised as Bug / Feature Request / General. Feedback submissions optionally include a screenshot.
Alerts & Webhooks PRO
Get notified automatically when something important happens on your site — without having to check the dashboard manually.
Alert types
| Alert | Triggers when… |
|---|---|
| Error spike | JavaScript error count exceeds your threshold within a time window. |
| Rage click surge | Rage clicks spike above the configured threshold. |
| High bounce rate | Bounce rate exceeds N% for the day. |
Delivery methods
- Email — Sent to configured recipients. Supports multiple addresses.
- Webhook — POSTs a JSON payload to any URL. Compatible with Slack, Discord, Zapier, Make, and custom endpoints.
- Weekly summary email — A digest of the past week's key metrics, sent every Monday morning.
Webhook payload example
{
"alert_type": "error_spike",
"threshold": 10,
"current_count": 23,
"time_window": "1h",
"site_url": "https://yoursite.com",
"triggered_at": "2026-03-29T14:30:00Z"
}
Team & Collaboration PRO
Invite team members, control what they can see and do, add notes to sessions, and share replays with clients — all from inside WordPress.
Roles & permissions
| Role | Can do |
|---|---|
| Viewer | View sessions, watch replays, add notes. |
| Analyst | Everything in Viewer + export data, create tags, generate share links. |
| Admin | Everything in Analyst + delete sessions, manage team members, change settings. |
Adding a team member
- Go to VisitorLens → Settings → Team.
- Search for a WordPress user by name or email.
- Assign a role (Viewer, Analyst, or Admin).
- Click Add Member. They can immediately access VisitorLens at their permission level.
Session notes & tags
In the Replay player, use the Collaboration panel (right sidebar) to:
- Add notes with timestamps (e.g. "User got confused at the checkout step at 0:42").
- Add tags to categorise sessions (e.g. "checkout-issue", "mobile-bug", "review-needed").
Shareable replay links
Analysts and Admins can generate a public share link for any session replay. Share it with a client or colleague — they can watch the replay in their browser without needing a WordPress account.
Accessibility Insights PRO
VisitorLens Pro tracks how visitors navigate using keyboard-only interaction — a key signal for accessibility compliance and WCAG audit work.
What is tracked
- Tab key presses — How many times the user presses Tab to navigate the page.
- Shift+Tab presses — How many times the user navigates backwards.
- Escape key presses — How often users press Escape (often indicates a confusing modal or overlay).
Keyboard-only sessions
A session is flagged as "keyboard-only" if the visitor used Tab/Shift+Tab for navigation and had very low mouse movement. These are likely screen reader users or keyboard-preference users.
Accessibility struggle signals
| Signal | Threshold | Meaning |
|---|---|---|
| Excessive Tab presses | > 20 on a single page | User is struggling to reach the element they want — focus order may be broken. |
| Excessive Escape presses | > 5 in a session | User is getting trapped in modals, dropdowns, or dialogs they can't escape. |
Insights Engine PRO
The Insights Engine automatically analyses your session data and surfaces UX problems — you don't have to know what to look for. It does the analysis for you.
Insight categories
| Category | Example insight |
|---|---|
| Rage & frustration | "/pricing page has 3× more rage clicks than your site average." |
| Engagement | "/blog/article has avg scroll depth of 22% — most users leave before the content starts." |
| Click behaviour | "/homepage: 34% of clicks are on a non-interactive element (the hero image)." |
| Traffic quality | "Facebook traffic has 71% bounce rate vs 32% site average — review landing page." |
| Forms | "/checkout: 58% of users who reach the billing section abandon the form." |
Severity levels
- 🔴 Critical — Immediate attention needed. Typically 3× above baseline.
- 🟡 Warning — Worth reviewing. Typically 2× above baseline.
- 🔵 Info — Interesting observation, low urgency.
Session evidence
Every insight links to the specific sessions that triggered it. Click View sessions on any insight to open a filtered replay list showing exactly who experienced the problem.
Privacy & GDPR
VisitorLens is built with privacy first. Here is how each privacy requirement is handled.
Data storage
All data is stored in your own WordPress database. Nothing is sent to VisitorLens servers, third-party analytics platforms, or any external service. You own your data completely.
IP addresses
Raw IP addresses are never stored. The tracker hashes the IP immediately on arrival using a one-way hash. The hash is used for deduplication (unique visitor counting) but cannot be reversed to reveal the original IP.
Consent modes
| Mode | Behaviour |
|---|---|
explicit | Tracking does not start until the visitor accepts cookies via your consent plugin. Compatible with GDPR cookie consent banners. |
implicit | Tracking starts immediately but stops if the visitor opts out. Suitable for regions with implied consent rules. |
none | Always track. Use only where analytics do not require consent under local law. |
Consent plugin integration
VisitorLens checks window.vsr_consent before tracking. Your cookie consent plugin should set this to true when analytics consent is granted. Example:
// Call this when the visitor accepts analytics cookies
window.vsr_consent = true;
window.dispatchEvent(new Event('vsr_consent_granted'));
Input masking
When input masking is enabled (recommended), all text typed into <input>, <textarea>, and <select> fields is replaced with * characters in session recordings. Passwords are always masked regardless of this setting.
Do-Not-Track
When "Respect Do-Not-Track" is enabled, VisitorLens checks the browser's DNT: 1 header and skips tracking entirely for those visitors.
Data deletion requests
To delete all data for a specific visitor, use the Replay search to find their sessions (by country, device, or date range), select all, and delete. VisitorLens does not store names or emails by default, so deletion is by session identifier.
REST API Reference
VisitorLens uses the WordPress REST API (namespace: vsr/v1). Base URL: https://yoursite.com/wp-json/vsr/v1/
Free endpoints
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /track | Public | Submit a pageview / visitor record. Called automatically by tracker.js. |
POST | /record | Public | Submit a batch of session events. Called by recorder.js. |
GET | /replay | Admin | List sessions with filters. Supports: date, device, country, frustration, page. |
GET | /replay/{id} | Admin | Get full session detail + all events for replay. |
GET | /stats/overview | Admin | KPI summary for a date range. |
GET | /stats/pages | Admin | Page-level analytics. |
GET | /stats/audience | Admin | Device, browser, OS, country breakdown. |
GET | /stats/traffic | Admin | Traffic source breakdown with referrers and UTMs. |
GET | /stats/realtime | Admin | Current online visitor count and active pages. |
GET/POST | /settings | Admin | Get or update plugin settings. |
Authentication
Admin endpoints require a WordPress nonce. The nonce is automatically injected into the page via wp_localize_script as VSR.nonce. External API calls should use WordPress Application Passwords.
fetch('/wp-json/vsr/v1/stats/overview?range=30', {
headers: {
'X-WP-Nonce': VSR.nonce
}
})
Track endpoint payload
{
"url": "/pricing/",
"referrer": "https://google.com",
"browser": "Chrome",
"platform": "Windows",
"device": "desktop",
"screen_w": 1920,
"screen_h": 1080,
"lang": "en-US",
"tz": "America/New_York",
"load_time": 843,
"utm_source": "google",
"utm_medium": "cpc"
}
Database Tables
VisitorLens uses its own database tables with the prefix {wp_prefix}vs_. Example: if your WP prefix is wp_, tables are named wp_vs_visitors, etc.
Free plugin tables (13 tables)
| Table | Purpose |
|---|---|
vs_visitors | One row per unique visitor per day. |
vs_visits | Individual page view records. |
vs_daily_summary | Aggregated daily totals for fast dashboard queries. |
vs_countries | Daily visitor counts by country. |
vs_browsers | Daily visitor counts by browser. |
vs_platforms | Daily visitor counts by OS/platform. |
vs_referrers | Referrer host and URL records. |
vs_search_engines | Search engine and keyword tracking. |
vs_online | Real-time online visitor tracking (auto-cleaned every 5 mins). |
vs_sessions | Session metadata (device, location, duration, scores). |
vs_session_events | Individual recorded events (clicks, scrolls, moves, etc.). |
vs_recording_config | Plugin configuration and settings. |
Pro plugin tables (17 additional tables)
| Table | Purpose |
|---|---|
vs_filter_presets | Saved session filter configurations. |
vs_funnels | Funnel definitions. |
vs_funnel_steps | URL steps within each funnel. |
vs_goals | Conversion goal definitions. |
vs_goal_conversions | Individual goal completion records. |
vs_woo_sessions | WooCommerce order-to-session links. |
vs_woo_cart | Cart events and abandonment status. |
vs_errors | JavaScript errors and broken resource events. |
vs_web_vitals | Core Web Vitals measurements per session. |
vs_surveys | Survey definitions. |
vs_survey_responses | Individual survey responses. |
vs_feedback | User feedback submissions. |
vs_alerts | Alert rule definitions. |
vs_alert_log | Alert trigger history. |
vs_team_members | Team member roles and access. |
vs_session_notes | Notes added to sessions. |
vs_session_tags | Tags applied to sessions. |
vs_share_links | Public/private replay share tokens. |
Troubleshooting
No data appearing in dashboard
- Are you browsing as a logged-in admin? Admins are excluded by default. Test in Incognito mode.
- Is your REST API accessible? Visit
https://yoursite.com/wp-json/— you should see a JSON response. - Is a security plugin (Wordfence, iThemes Security) blocking
/wp-json/vsr/? Add it to the allowlist. - Is JavaScript loading? Check your browser console for JS errors on the frontend.
Sessions recorded but replay is blank
- The replay player reconstructs the page from recorded events. Very short sessions (< 3s) may not have enough data to render.
- Check that
vs_session_eventstable has rows for the session — if empty, the recorder script may not have loaded. - CSP (Content Security Policy) headers can block the inline replay reconstruction. Check your browser console for CSP errors.
Deprecation warnings in PHP logs
On WordPress 6.2+, passing null to %f or %d in $wpdb->prepare() triggers a deprecation notice. VisitorLens handles this by defaulting lat/lon to 0.0 and screen dimensions to 0. If you see these warnings, make sure you are on VisitorLens 1.0.1+.
Pro features not showing after activation
- Make sure both the free plugin AND Pro plugin are active. Pro requires the free plugin.
- Check for PHP errors in your server log — a PHP error during Pro activation may prevent features from loading.
- Try deactivating and reactivating the Pro plugin.
- Make sure your PHP version is 7.4+. PHP 7.2 and below are not supported.
WooCommerce orders not linking to sessions
- The link is made within a 6-hour window of the session. If the visitor returned days later to buy, it won't link.
- Guest checkouts link by IP hash. If the visitor's IP changed between browsing and checkout, no link is made.
- Logged-in orders always link by WordPress user ID — these are reliable.
Performance concerns
VisitorLens is designed to be lightweight:
- Tracker scripts are ~8KB gzipped.
- Mouse events throttled to 200ms; scroll to 300ms.
- Events batched into a single request every 8 seconds (max 150 events per batch).
- If you have very high traffic and are concerned about DB load, reduce the Sampling Rate in Settings → General to 50% or lower.
Frequently Asked Questions
Does VisitorLens work on multisite?
Network (multisite) support is on the roadmap. Currently, VisitorLens tracks data per-site but does not aggregate across a multisite network in a single dashboard.
Can I use VisitorLens with a caching plugin?
Yes. VisitorLens tracking happens via JavaScript after the page loads, so page caching doesn't affect data collection. However, make sure your caching plugin doesn't cache the REST API endpoint responses.
How do I exclude my own visits?
Go to Settings → Privacy → Exclude logged-in admins and make sure it's ON. For non-admin visits you want to exclude (e.g. your office's IP), add it to Settings → Tracking → Exclude IPs.
Is VisitorLens compatible with Cloudflare?
Yes. If you use Cloudflare's proxy, make sure the /wp-json/vsr/ path is not cached. Add a Cloudflare Page Rule or Cache Rule to bypass cache for that path.
Can I use VisitorLens alongside Google Analytics?
Absolutely. They serve different purposes — GA is great for aggregate traffic analysis, VisitorLens is for individual session-level UX analysis. Many sites use both.
How do I upgrade from Free to Pro?
Purchase Pro at visitorlens.com. Download the Pro ZIP, upload it via Plugins → Add New → Upload Plugin, and activate. All free plugin data is preserved. Pro features activate immediately.
What happens to my data if I cancel Pro?
Your data stays in your database — VisitorLens never deletes your data on deactivation. You'll lose access to Pro-only features but free features continue working. All recorded sessions remain viewable.
Can I self-host the documentation?
This documentation file (docs.html) is a self-contained static HTML file. Copy it anywhere — no server dependencies required.