Description
Sawir Insights is behavioral analytics for WordPress: heatmaps, session recordings, surveys, a feedback widget, form analytics, conversion funnels, and a dashboard that ties them together.
On multisite networks, each site tracks and configures its analytics independently.
The reason it exists is simple. The established tools in this category are good, but they work by shipping a record of everything your visitors do to someone else’s servers. For a lot of sites — especially in the EU — that is somewhere between uncomfortable and unworkable. I wanted the same class of tooling where the data never leaves the site that collected it. So that is the constraint this plugin is built around: your database, your uploads directory, your retention rules. There is no SaaS behind it, no account to create, and no phone-home of any kind.
What it does
- Click, movement, and scroll heatmaps, rendered over your live pages, split by desktop, tablet, and mobile.
- Session recordings with playback in wp-admin. Input values are always masked; recording is off until you turn it on.
- Popup surveys and a persistent feedback tab, with targeting by URL, device, traffic percentage, time on page, scroll depth, or exit intent.
- Form analytics: where people hesitate, what they leave empty, where they abandon. Selectors and timing only — never what anyone typed.
- Ordered conversion funnels with daily reports.
- A dashboard with traffic KPIs and period deltas, a daily trend chart, and device, browser, page, referrer, campaign, funnel, and recording breakdowns.
What it deliberately does not do
I think you should know what a tool refuses to do before you install it.
- It does not store IP addresses. Not hashed, not truncated — at all.
- It does not record form values, ever. The capture layer sends metadata only, so there is nothing to leak.
- It does not load anything from a CDN or send anything to one. The rrweb replay library ships inside the plugin.
- It does not keep raw data forever. Events are aggregated and pruned on a retention schedule you control, and recordings have their own retention and a disk cap with oldest-first eviction, because a plugin that quietly fills your hosting disk is a bad plugin.
The frontend tracker is small vanilla JavaScript, batched over sendBeacon, with sampling controls. Visitors who are not sampled into recording never download the replay library at all.
Privacy posture
Do Not Track is honored by default. A consent-mode API (window.swinsConsent) integrates with whatever consent manager you already run. Sessions, events, and recordings are wired into WordPress’s own personal-data export and erasure tools. Whether your specific deployment is GDPR compliant depends on your notices and legal basis — that part no plugin can do for you — but the data-minimization work is done.
Support
Support runs through the wordpress.org forum for this plugin, or email ricardo@sawirstudio.com.
Other plugins by Sawir Studio
If Sawir Insights fits how you like tools to work, I make a few others in the same spirit:
- Sawir Live Translate — translate any front-end page live and let visitors switch languages.
- Sawir Restock Notifier for WooCommerce — let customers request an email when an out-of-stock product is back.
- Sawir Product Image Zoom for WooCommerce — product image lightbox with navigation and click-to-zoom.
- Sawir Min Max Quantities for WooCommerce — minimum, maximum, and group-of order quantity rules.
- Sawir Variation Gallery Tools for WooCommerce — manage variation-specific gallery images.
- Sawir Role Capabilities Manager — create custom user roles and manage capabilities.
- Sawir Media Folders — organize the Media Library into fast, unlimited folders with drag & drop.
Installation
- Upload the
sawir-insightsdirectory to/wp-content/plugins/, or install through the Plugins screen. - Activate Sawir Insights.
- Open Insights Settings and review the privacy and sampling options. Tracking is on after activation; session recording is not.
- Give it some traffic, then open Insights Dashboard.
FAQ
-
Is Sawir Insights GDPR compliant?
-
The plugin is built for privacy-conscious deployments: data stays on your server, IP addresses are never stored, retention is configurable, Do Not Track is honored, and WordPress export/erasure tools are integrated. Compliance itself depends on your configuration, notices, legal basis, and consent implementation — consult qualified counsel for your site.
-
Does visitor data leave my server?
-
No. The plugin sends no behavioral data to Sawir Studio or any analytics provider. Events live in your WordPress database; recording files live beneath your protected uploads directory.
-
Can analytics data live in its own database?
-
Yes. I keep this as a wp-config.php-only setting so database credentials never enter the WordPress options table. Define all four constants before the “That’s all, stop editing” line:
define( 'SWINS_DB_HOST', 'localhost' ); define( 'SWINS_DB_NAME', 'analytics' ); define( 'SWINS_DB_USER', 'analytics_user' ); define( 'SWINS_DB_PASSWORD', 'a-strong-password' );The analytics tables keep the main site’s table prefix, so moving between the WordPress database and an external database is a plain table copy. Do not run two live collecting databases for one site: copy the tables, switch the constants, and only then resume collection. Otherwise you will split one site’s history across two databases.
-
Does it store IP addresses?
-
No.
-
How do I connect a consent manager?
-
Enable “Require consent before tracking,” then call
window.swinsConsent('grant')when consent is granted andwindow.swinsConsent('revoke')when it is withdrawn. The decision is saved in a first-party cookie. -
Are form values captured?
-
No. Form capture records selectors, timing, and empty-state metadata only. Values never leave the browser.
-
How are session recordings protected?
-
Recording is disabled by default. When enabled, all input values are masked automatically, canvas capture is off, and replay chunks stay beneath the guarded
wp-content/uploads/sawir-insights/recordings/directory. Only administrators can retrieve them, through an authenticated REST endpoint. -
How do I mask or block sensitive page areas?
-
Add the
swins-maskclass ordata-swins-maskattribute to mask an element’s text. Add theswins-blockclass to omit an element entirely from recordings. -
How is recording disk usage controlled?
-
Insights Settings has separate recording retention and disk-cap controls. Past the cap, the oldest recordings are removed first. Usage is tracked continuously and recalculated weekly.
-
How do surveys decide when to appear?
-
Each active survey can target URL patterns, devices, a stable percentage of sessions, time on page, scroll depth, or desktop exit intent. One survey per browser session; dismissed surveys stay hidden for 30 days.
-
How complete are funnel reports?
-
Funnels are computed from ordered page-view and click metadata retained on your server, so history is bounded by the raw-event retention window in Insights Settings.
-
Why do heatmaps lag behind live traffic?
-
I fold raw events into heatmap aggregates hourly through WP-Cron. WordPress only runs WP-Cron when someone visits the site, so on a low-traffic site I recommend a real system cron, for example:
*/5 * * * * cd /path/to/wordpress && wp cron event run --due-now
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Sawir Insights” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Sawir Insights” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Added the self-hosted analytics foundation.
- Added optional wp-config.php constants for keeping analytics tables in a dedicated database.
- Added click, movement and scroll collection and heatmap aggregation.
- Added live-page heatmap administration.
- Added privacy controls, consent API, exporter and eraser.
- Added sampled session recording capture, protected chunk storage, retention, disk-cap eviction, recording administration, and rrweb playback.
- Vendored rrweb 2.1.0 and rrweb-player 2.1.0 browser bundles locally.
- Added targeted popup surveys and an accessible persistent feedback widget.
- Added survey administration, per-question results, NPS scoring, and CSV export.
- Added privacy-safe daily form analytics with field timing, abandonment, and completion reporting.
- Added ordered page-view and click funnels with retention-aware daily conversion reports.
- Added the analytics dashboard with KPI deltas, an inline daily trend chart, device, browser, OS, page, referrer, and UTM breakdowns, funnel and recording summaries, and date, device, and UTM source filters.