Title: Sawir Insights
Author: Ricardo Sawir
Published: <strong>July 17, 2026</strong>
Last modified: July 17, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/sawir-insights.svg)

# Sawir Insights

 By [Ricardo Sawir](https://profiles.wordpress.org/sawirricardo/)

[Download](https://downloads.wordpress.org/plugin/sawir-insights.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/sawir-insights/#description)
 * [Reviews](https://wordpress.org/plugins/sawir-insights/#reviews)
 *  [Installation](https://wordpress.org/plugins/sawir-insights/#installation)
 * [Development](https://wordpress.org/plugins/sawir-insights/#developers)

 [Support](https://wordpress.org/support/plugin/sawir-insights/)

## 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](https://wordpress.org/plugins/sawir-live-translate/) —
   translate any front-end page live and let visitors switch languages.
 * [Sawir Restock Notifier for WooCommerce](https://wordpress.org/plugins/sawir-restock-notifier-for-woocommerce/)—
   let customers request an email when an out-of-stock product is back.
 * [Sawir Product Image Zoom for WooCommerce](https://wordpress.org/plugins/sawir-product-image-zoom-for-woocommerce/)—
   product image lightbox with navigation and click-to-zoom.
 * [Sawir Min Max Quantities for WooCommerce](https://wordpress.org/plugins/sawir-min-max-quantities-for-woocommerce/)—
   minimum, maximum, and group-of order quantity rules.
 * [Sawir Variation Gallery Tools for WooCommerce](https://wordpress.org/plugins/sawir-variation-gallery-tools-woocommerce/)—
   manage variation-specific gallery images.
 * [Sawir Role Capabilities Manager](https://wordpress.org/plugins/sawir-role-capabilities-manager/)—
   create custom user roles and manage capabilities.
 * [Sawir Media Folders](https://wordpress.org/plugins/sawir-media-folders/) — organize
   the Media Library into fast, unlimited folders with drag & drop.

## Installation

 1. Upload the `sawir-insights` directory to `/wp-content/plugins/`, or install through
    the Plugins screen.
 2. Activate Sawir Insights.
 3. Open Insights  Settings and review the privacy and sampling options. Tracking is
    on after activation; session recording is not.
 4. 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 and `window.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-mask` class or `data-swins-mask` attribute to mask an element’s text.
Add the `swins-block` class 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.

Contributors

 *   [ Ricardo Sawir ](https://profiles.wordpress.org/sawirricardo/)

[Translate “Sawir Insights” into your language.](https://translate.wordpress.org/projects/wp-plugins/sawir-insights)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/sawir-insights/), check
out the [SVN repository](https://plugins.svn.wordpress.org/sawir-insights/), or 
subscribe to the [development log](https://plugins.trac.wordpress.org/log/sawir-insights/)
by [RSS](https://plugins.trac.wordpress.org/log/sawir-insights/?limit=100&mode=stop_on_copy&format=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.

## Meta

 *  Version **1.0.0**
 *  Last updated **13 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [analytics](https://wordpress.org/plugins/tags/analytics/)[heatmap](https://wordpress.org/plugins/tags/heatmap/)
   [privacy](https://wordpress.org/plugins/tags/privacy/)[session recording](https://wordpress.org/plugins/tags/session-recording/)
   [survey](https://wordpress.org/plugins/tags/survey/)
 *  [Advanced View](https://wordpress.org/plugins/sawir-insights/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/sawir-insights/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/sawir-insights/reviews/)

## Contributors

 *   [ Ricardo Sawir ](https://profiles.wordpress.org/sawirricardo/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/sawir-insights/)