| 开发者 | sawirricardo |
|---|---|
| 更新时间 | 2026年7月28日 10:12 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
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.
sawir-insights directory to /wp-content/plugins/, or install through the Plugins screen.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.
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.
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.
No.
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.
No. Form capture records selectors, timing, and empty-state metadata only. Values never leave the browser.
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.
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.
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.
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.
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.
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