{"id":351893,"date":"2026-08-14T09:25:48","date_gmt":"2026-08-14T09:25:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sb-replayborg\/"},"modified":"2026-08-14T11:08:41","modified_gmt":"2026-08-14T11:08:41","slug":"sb-replayborg","status":"publish","type":"plugin","link":"https:\/\/hu.wordpress.org\/plugins\/sb-replayborg\/","author":23451580,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.4","requires":"6.4","requires_php":"8.2","requires_plugins":null,"header_name":"SB Replayborg","header_author":"Stackborg","header_description":"Self-hosted session replay. Watch how visitors really use your site, with recordings stored in your own database.","assets_banners_color":"75738f","last_updated":"2026-08-14 11:08:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/replayborg-wp-plugin.stackborg.com\/","header_author_uri":"https:\/\/stackborg.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":90,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"stackborg","date":"2026-08-14 09:25:11"},"1.0.1":{"tag":"1.0.1","author":"stackborg","date":"2026-08-14 10:20:29"},"1.1.0":{"tag":"1.1.0","author":"stackborg","date":"2026-08-14 11:08:41"}},"upgrade_notice":{"1.1.0":"<p>Sessions now show as finished when the visitor actually leaves. Adds one column to the recordings table; the upgrade is automatic.<\/p>","1.0.1":"<p>Housekeeping only. Nothing you can see changes.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3647030,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3647030,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3647030,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3647030,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3647030,"resolution":"1","location":"assets","locale":"","width":1440,"height":767},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3647030,"resolution":"2","location":"assets","locale":"","width":1440,"height":846},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3647030,"resolution":"3","location":"assets","locale":"","width":1440,"height":598},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3647030,"resolution":"4","location":"assets","locale":"","width":1440,"height":490}},"screenshots":{"1":"The session list \u2014 every recorded visit with its visitor, journey, source, device, duration and pages, above four figures for the page in view.","2":"A session played back, with the transport bar, the page markers on the scrubber, and the visitor and the visit at a glance beside it.","3":"Pages visited \u2014 time on page, clicks, clicks per minute and each page's share of the visit, with entry and exit marked. Clicking a row jumps the player there.","4":"Help &amp; Support \u2014 the documentation, the privacy policy and where to write, with the setup details a support email needs."}},"plugin_section":[],"plugin_tags":[232,396,252587,55692,3852],"plugin_category":[36,54],"plugin_contributors":[275682],"plugin_business_model":[],"class_list":["post-351893","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-privacy","plugin_tags-screen-recording","plugin_tags-session-replay","plugin_tags-user-experience","plugin_category-analytics","plugin_category-security-and-spam-protection","plugin_contributors-stackborg","plugin_committers-stackborg"],"banners":{"banner":"https:\/\/ps.w.org\/sb-replayborg\/assets\/banner-772x250.png?rev=3647030","banner_2x":"https:\/\/ps.w.org\/sb-replayborg\/assets\/banner-1544x500.png?rev=3647030","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sb-replayborg\/assets\/icon-128x128.png?rev=3647030","icon_2x":"https:\/\/ps.w.org\/sb-replayborg\/assets\/icon-256x256.png?rev=3647030","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sb-replayborg\/assets\/screenshot-1.png?rev=3647030","caption":"The session list \u2014 every recorded visit with its visitor, journey, source, device, duration and pages, above four figures for the page in view."},{"src":"https:\/\/ps.w.org\/sb-replayborg\/assets\/screenshot-2.png?rev=3647030","caption":"A session played back, with the transport bar, the page markers on the scrubber, and the visitor and the visit at a glance beside it."},{"src":"https:\/\/ps.w.org\/sb-replayborg\/assets\/screenshot-3.png?rev=3647030","caption":"Pages visited \u2014 time on page, clicks, clicks per minute and each page's share of the visit, with entry and exit marked. Clicking a row jumps the player there."},{"src":"https:\/\/ps.w.org\/sb-replayborg\/assets\/screenshot-4.png?rev=3647030","caption":"Help &amp; Support \u2014 the documentation, the privacy policy and where to write, with the setup details a support email needs."}],"raw_content":"<!--section=description-->\n<p>SB Replayborg records what visitors do on your site and lets you play it back \u2014 the pages they moved through, where they clicked, how long they stayed. Everything is captured by your own site and stored in your own database. No third-party service is involved at any point, and nothing is sent anywhere.<\/p>\n\n<p>Listed here as <strong>SB Replayborg<\/strong> \u2014 <em>SB<\/em> for Stackborg, who publish it. In your admin menu and on its screens it is simply <strong>Replayborg<\/strong>.<\/p>\n\n<h4>What this version does<\/h4>\n\n<ul>\n<li><strong>Session recording<\/strong> \u2014 visits are captured with rrweb and stored, GZIP compressed, in your database<\/li>\n<li><strong>Session replay<\/strong> \u2014 watch a visit back in a player with play, pause, ten-second jumps, speed control and a scrubber marked with each page the visitor opened<\/li>\n<li><strong>Pages visited<\/strong> \u2014 every page in the visit with time on page, clicks, and its share of the session; click any row to jump the player there<\/li>\n<li><strong>Signed-in visitors<\/strong> \u2014 a session made by a logged-in user is attributed to them, with a link to their WordPress profile<\/li>\n<li><strong>Filtering and sorting<\/strong> \u2014 by device, by signed-in status, by date range, or by the page they landed on or left from<\/li>\n<li><strong>Traffic source<\/strong> \u2014 referrer and UTM parameters, recorded with the session<\/li>\n<li><strong>Retention<\/strong> \u2014 recordings older than your retention window are removed automatically by WP-Cron<\/li>\n<\/ul>\n\n<h4>Documentation and support<\/h4>\n\n<p>The plugin has its own <strong>Help &amp; Support<\/strong> screen: the documentation, the privacy policy, the support address, and the setup details a support email needs, in one place. Every screen links to it from the header.<\/p>\n\n<p>The full documentation is at https:\/\/replayborg-wp-plugin.stackborg.com\/ \u2014 installation, reading a session, the privacy controls, the hooks, troubleshooting, and the privacy policy.<\/p>\n\n<h4>Built as modules<\/h4>\n\n<p>The plugin is organised so that features arrive as modules that can be switched on without disturbing what is already installed. This first release ships one \u2014 sessions. Anything added later slots in beside it, and turning a module off never destroys the data it collected.<\/p>\n\n<h4>Privacy<\/h4>\n\n<ul>\n<li><strong>No external services.<\/strong> Recording, storage and playback all happen on your own server.<\/li>\n<li><strong>Inputs are masked by default.<\/strong> What visitors type is not recorded unless you turn masking off.<\/li>\n<li><strong>Elements can be blocked<\/strong> from recording by CSS selector.<\/li>\n<li><strong>Sample rate<\/strong> lets you record a percentage of visits rather than all of them.<\/li>\n<li><strong>No cookies.<\/strong> An anonymous visitor id is kept in localStorage.<\/li>\n<li><strong>Consent aware.<\/strong> Recording can be held until a consent tool signals agreement.<\/li>\n<\/ul>\n\n<p>Session recordings are still personal data in most jurisdictions. Tell your visitors you collect them, in your privacy policy \u2014 the plugin adds a suggested passage to WordPress's own privacy policy guide to help. The full policy, including wording you can adapt, is at https:\/\/replayborg-wp-plugin.stackborg.com\/privacy<\/p>\n\n<h3>Third-Party Services<\/h3>\n\n<p>SB Replayborg does not connect to any third-party service. All recording, storage and playback happens on your own server, in your own database. No data is transmitted anywhere.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install <strong>SB Replayborg<\/strong> through <strong>Plugins \u2192 Add New<\/strong>, or upload the <code>sb-replayborg<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Open <strong>Replayborg<\/strong> in the admin menu. Recordings appear as visitors browse the site.<\/li>\n<\/ol>\n\n<p>Nothing needs configuring to start. Administrators are recorded like anyone else; to exclude a role, see the FAQ.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20send%20my%20visitors%27%20data%20anywhere%3F\"><h3>Does this send my visitors' data anywhere?<\/h3><\/dt>\n<dd><p>No. There is no external service, no API key and no account. Recordings are written to your WordPress database and read back from it.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20the%20site%20down%3F\"><h3>Does it slow the site down?<\/h3><\/dt>\n<dd><p>The recorder is loaded once, asynchronously, and sends batches rather than a request per event. Idle stretches produce no data at all.<\/p><\/dd>\n<dt id=\"how%20much%20database%20space%20does%20a%20recording%20use%3F\"><h3>How much database space does a recording use?<\/h3><\/dt>\n<dd><p>Events are GZIP compressed, which removes roughly 90% of their size. A five-page visit is usually a few hundred kilobytes. Set a retention window so old recordings clear themselves out.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The recorder is a static script with no per-page markup, so a cached page records exactly like an uncached one.<\/p><\/dd>\n<dt id=\"how%20do%20i%20stop%20recording%20administrators%2C%20or%20any%20other%20role%3F\"><h3>How do I stop recording administrators, or any other role?<\/h3><\/dt>\n<dd><p>Add this to your theme's functions.php or a small plugin:<\/p>\n\n<pre><code>add_filter( 'sb_replayborg_should_record', function ( $record ) {\n    return current_user_can( 'manage_options' ) ? false : $record;\n} );\n<\/code><\/pre>\n\n<p>Nothing is excluded by default, so that the first thing you do \u2014 opening your own site to check recording works \u2014 actually shows you a recording.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%3F\"><h3>What happens to my data if I uninstall?<\/h3><\/dt>\n<dd><p>Everything the plugin created is removed: the recordings, the events, and its settings. Deactivating changes nothing.<\/p><\/dd>\n<dt id=\"which%20timezone%20are%20the%20times%20shown%20in%3F\"><h3>Which timezone are the times shown in?<\/h3><\/dt>\n<dd><p>Yours. Times are stored in UTC and displayed using the timezone, date format and time format from <strong>Settings \u2192 General<\/strong>.<\/p><\/dd>\n<dt id=\"where%20can%20i%20read%20the%20documentation%3F\"><h3>Where can I read the documentation?<\/h3><\/dt>\n<dd><p>The full guide \u2014 setup, reading a session, privacy, hooks and troubleshooting \u2014 is at https:\/\/replayborg-wp-plugin.stackborg.com\/. The plugin's own <strong>Help &amp; Support<\/strong> screen links to it, and every screen links there from its header.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20support%3F\"><h3>How do I get support?<\/h3><\/dt>\n<dd><p>Email support@stackborg.com. The <strong>Help &amp; Support<\/strong> screen in the plugin has a card that copies your setup details, which usually saves a round trip. Security reports go to security@stackborg.com \u2014 privately, please, rather than in public.<\/p><\/dd>\n<dt id=\"is%20the%20javascript%20source%20included%3F\"><h3>Is the JavaScript source included?<\/h3><\/dt>\n<dd><p>Yes. The two files in <code>assets\/js\/<\/code> are compiled, and their complete TypeScript sources ship inside the plugin, in <code>src-js\/<\/code>, with the build configuration. <code>cd src-js &amp;&amp; npm install &amp;&amp; npm run build:all<\/code> rebuilds exactly what is shipped. No obfuscation of any kind is applied.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>A visit is now marked finished by the browser as the page closes, instead of being guessed at from how long the recording has been quiet. A visitor reading a page without touching anything sends nothing at all \u2014 which is exactly what a closed tab sends \u2014 so guessing got it wrong in both directions.<\/li>\n<li>Removed nineteen unused files that were shipping inside the package \u2014 a set of interface components no screen uses, left over from earlier drafts. Nothing that runs changed.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Internal: the admin screen's loading state now comes from the shared library rather than a local override, so it behaves the same here as in every other Stackborg plugin. No change to what the plugin does.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Session recording with rrweb, GZIP compressed into your own database.<\/li>\n<li>Session replay with play, pause, ten-second jumps, speed control, and a scrubber marked with each page of the visit.<\/li>\n<li>Pages visited, with time on page, clicks, share of the session, and entry and exit marked.<\/li>\n<li>Sessions attributed to signed-in WordPress users.<\/li>\n<li>Filtering by device, signed-in status, date range and URL; sorting by duration, pages or time.<\/li>\n<li>Referrer and UTM capture.<\/li>\n<li>Automatic retention cleanup through WP-Cron.<\/li>\n<li>Module architecture, so later features can be added without disturbing an installed site.<\/li>\n<li>A Help &amp; Support screen \u2014 documentation, privacy policy, support address and copyable setup details \u2014 linked from the header of every screen, the Help tab, and the Plugins list row.<\/li>\n<\/ul>","raw_excerpt":"Self-hosted session replay for WordPress. Watch how visitors really use your site, with recordings stored in your own database.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=351893"}],"author":[{"embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/stackborg"}],"wp:attachment":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351893"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351893"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351893"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351893"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351893"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}