{"id":318076,"date":"2026-05-29T09:12:46","date_gmt":"2026-05-29T09:12:46","guid":{"rendered":"https:\/\/de.wordpress.org\/plugins\/analytics-for-openpanel\/"},"modified":"2026-05-29T09:12:11","modified_gmt":"2026-05-29T09:12:11","slug":"kd-tracking-connector-openpanel","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/kd-tracking-connector-openpanel\/","author":23257348,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"KD Tracking Connector for OpenPanel","header_author":"Steffen Kaster","header_description":"Integrates OpenPanel Analytics into WordPress. Supports self-hosted instances and the official cloud. Configurable under Settings \u2192 OpenPanel.","assets_banners_color":"","last_updated":"2026-05-29 09:12:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Steffenkt\/KD-Tracking-Connector-for-OpenPanel-WordPress","header_author_uri":"https:\/\/github.com\/Steffenkt","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"steffenka","date":"2026-05-29 09:12:11"}},"upgrade_notice":{"1.0.3":"<p>Maintenance update with code improvements. No action required after updating.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3553241,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page \u2013 General settings with Client ID and API URL","2":"Settings page \u2013 Tracking options and Session Replay configuration","3":"Settings page \u2013 Privacy controls (DNT, logged-in users, WP_DEBUG)"}},"plugin_section":[],"plugin_tags":[232,131785,264900,396,521],"plugin_category":[36,54],"plugin_contributors":[264901],"plugin_business_model":[],"class_list":["post-318076","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-gdpr","plugin_tags-openpanel","plugin_tags-privacy","plugin_tags-statistics","plugin_category-analytics","plugin_category-security-and-spam-protection","plugin_contributors-steffenka","plugin_committers-steffenka"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kd-tracking-connector-openpanel\/assets\/icon-128x128.png?rev=3553241","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>KD Tracking Connector for OpenPanel<\/strong> connects your WordPress site to <a href=\"https:\/\/openpanel.dev\">OpenPanel Analytics<\/a> \u2013 a powerful, open-source alternative to Google Analytics that you can fully self-host.<\/p>\n\n<p>No data sent to Google. No surprise tracking. Full control over where your visitor data lives.<\/p>\n\n<p>This plugin works completely <strong>independent of your active theme<\/strong> and is configured entirely via <strong>Settings \u2192 OpenPanel<\/strong> in the WordPress admin.<\/p>\n\n<h4>Why OpenPanel?<\/h4>\n\n<ul>\n<li><strong>Open source<\/strong> \u2013 MIT-licensed, fully auditable source code<\/li>\n<li><strong>Self-hostable<\/strong> \u2013 Your analytics data stays on your own server<\/li>\n<li><strong>Cloud option<\/strong> \u2013 Use the official OpenPanel Cloud with zero setup<\/li>\n<li><strong>Cookie-friendly<\/strong> \u2013 Basic page-view tracking works without cookies<\/li>\n<li><strong>Google Analytics alternative<\/strong> \u2013 Real-time stats, custom events, session replay<\/li>\n<\/ul>\n\n<h4>Plugin Features<\/h4>\n\n<ul>\n<li><strong>Self-Hosted &amp; Cloud<\/strong> \u2013 Enter your API URL for self-hosted, or leave empty for the official cloud<\/li>\n<li><strong>Local Script Delivery<\/strong> \u2013 <code>op1.js<\/code> is served from the plugin folder, no external CDN request on page load<\/li>\n<li><strong>Flexible Tracking<\/strong> \u2013 Page views, outgoing links and <code>data-track<\/code> HTML attribute tracking individually configurable<\/li>\n<li><strong>Session Replay<\/strong> \u2013 Record mouse movements, scroll behaviour and clicks (optional, with input field masking)<\/li>\n<li><strong>Privacy Controls<\/strong> \u2013 Honour Do Not Track (DNT), exclude logged-in users, disable tracking when WP_DEBUG is active<\/li>\n<li><strong>Multilingual<\/strong> \u2013 Ships with German and English, fully translatable via <code>.pot<\/code> template<\/li>\n<\/ul>\n\n<h4>Settings<\/h4>\n\n<p>All options are available under <strong>Settings \u2192 OpenPanel<\/strong>:<\/p>\n\n<ul>\n<li><strong>Enable OpenPanel<\/strong> \u2013 Enable or disable the tracking script globally. (Default: off)<\/li>\n<li><strong>Client ID<\/strong> \u2013 The Client ID of your OpenPanel application.<\/li>\n<li><strong>API URL (Self-Hosted)<\/strong> \u2013 Your self-hosted API endpoint, e.g. <code>https:\/\/analytics.example.com\/api<\/code>. Leave empty to use the official cloud.<\/li>\n<li><strong>Serve op1.js locally<\/strong> \u2013 Load the tracking script from the plugin folder instead of an external CDN. (Default: on)<\/li>\n<li><strong>Track page views<\/strong> \u2013 Automatically track every page view. (Default: on)<\/li>\n<li><strong>Track outgoing links<\/strong> \u2013 Track clicks on external links. (Default: on)<\/li>\n<li><strong>Track data attributes<\/strong> \u2013 Track events via <code>data-track<\/code> HTML attributes. (Default: on)<\/li>\n<li><strong>Enable Session Replay<\/strong> \u2013 Record mouse movements, scroll behaviour and clicks. (Default: off)<\/li>\n<li><strong>Mask form fields<\/strong> \u2013 Prevent plain-text capture of input fields in session replays. (Default: on)<\/li>\n<li><strong>Skip logged-in users<\/strong> \u2013 Exclude admins and logged-in users from tracking. (Default: on)<\/li>\n<li><strong>Respect Do Not Track<\/strong> \u2013 Honour the DNT browser signal. (Default: on)<\/li>\n<li><strong>Disable on WP_DEBUG<\/strong> \u2013 No tracking on local or staging environments when <code>WP_DEBUG<\/code> is active. (Default: on)<\/li>\n<\/ul>\n\n<h3>Third-Party Services<\/h3>\n\n<p>This plugin integrates with <strong>OpenPanel Analytics<\/strong> (<a href=\"https:\/\/openpanel.dev\">openpanel.dev<\/a>), an open-source web analytics platform.<\/p>\n\n<p><strong>Cloud service<\/strong> (API URL left empty): Visitor data including page views, custom events and optional session recordings is transmitted to servers operated by OpenPanel at <code>https:\/\/openpanel.dev<\/code>.<\/p>\n\n<p><strong>Self-hosted<\/strong>: All data goes exclusively to your own server. Nothing is sent to <code>openpanel.dev<\/code>.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/openpanel.dev\">OpenPanel website<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/openpanel-dev\/openpanel\">Source code on GitHub (MIT licence)<\/a><\/li>\n<li><a href=\"https:\/\/openpanel.dev\/privacy\">Privacy policy<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Steffenkt\/KD-Tracking-Connector-for-OpenPanel-WordPress\">Plugin repository<\/a><\/li>\n<\/ul>\n\n<h4>Bundled JavaScript Files<\/h4>\n\n<pre><code>assets\/js\/op1.js and `assets\/js\/op1-replay.js` are local copies of the official OpenPanel tracking scripts in minified form. The non-minified source code is available at [github.com\/openpanel-dev\/openpanel](https:\/\/github.com\/openpanel-dev\/openpanel).\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin via <strong>Plugins \u2192 Add New Plugin<\/strong> and search for \"KD Tracking Connector for OpenPanel\" \u2013 or upload the ZIP manually.<\/li>\n<li>Activate the plugin via <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/li>\n<li>Go to <strong>Settings \u2192 OpenPanel<\/strong>.<\/li>\n<li>Enter your <strong>Client ID<\/strong> (and optionally your self-hosted API URL).<\/li>\n<li>Check <strong>Enable OpenPanel<\/strong> and save.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or later<\/li>\n<li>PHP 8.0 or later<\/li>\n<li>An OpenPanel account \u2013 <a href=\"https:\/\/openpanel.dev\">cloud<\/a> or self-hosted<\/li>\n<\/ul>\n\n<h4>Keeping op1.js Up to Date<\/h4>\n\n<pre><code>op1.js and `op1-replay.js` are bundled with the plugin. To update them manually when a new OpenPanel version is released:\n<\/code><\/pre>\n\n<p><strong>Linux \/ macOS:<\/strong><\/p>\n\n<pre><code>curl -o assets\/js\/op1.js https:\/\/openpanel.dev\/op1.js\ncurl -o assets\/js\/op1-replay.js https:\/\/openpanel.dev\/op1-replay.js\n<\/code><\/pre>\n\n<p><strong>Windows (PowerShell):<\/strong><\/p>\n\n<pre><code>Invoke-WebRequest -Uri \"https:\/\/openpanel.dev\/op1.js\" -OutFile \"assets\/js\/op1.js\"\nInvoke-WebRequest -Uri \"https:\/\/openpanel.dev\/op1-replay.js\" -OutFile \"assets\/js\/op1-replay.js\"\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20openpanel%20account%3F\"><h3>Do I need an OpenPanel account?<\/h3><\/dt>\n<dd><p>Yes. You need a Client ID from either the <a href=\"https:\/\/openpanel.dev\">OpenPanel Cloud<\/a> (free to sign up) or your own self-hosted OpenPanel instance.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20the%20openpanel%20cloud%20service%3F\"><h3>Does the plugin support the OpenPanel Cloud service?<\/h3><\/dt>\n<dd><p>Yes \u2013 simply leave the API URL field empty. The plugin will connect to <code>https:\/\/openpanel.dev<\/code> automatically.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20gdpr-compliant%3F\"><h3>Is this plugin GDPR-compliant?<\/h3><\/dt>\n<dd><p>OpenPanel is designed with privacy in mind. Basic page-view tracking works without cookies. You can additionally enable Do Not Track support and exclude logged-in users. Consult your legal advisor for your specific situation and jurisdiction.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20wp_debug%20%3D%20true%3F\"><h3>What happens when WP_DEBUG = true?<\/h3><\/dt>\n<dd><p>When \"Disable on WP_DEBUG\" is active (default), no tracking script is rendered. This prevents accidental data collection on development or staging environments.<\/p><\/dd>\n<dt id=\"are%20logged-in%20wordpress%20users%20tracked%3F\"><h3>Are logged-in WordPress users tracked?<\/h3><\/dt>\n<dd><p>Not by default. The \"Skip logged-in users\" option is enabled and excludes all authenticated users before the script is rendered.<\/p><\/dd>\n<dt id=\"where%20is%20the%20tracking%20script%20injected%3F\"><h3>Where is the tracking script injected?<\/h3><\/dt>\n<dd><p>The initialisation script is inserted at priority 5 in <code>&lt;head&gt;<\/code> (before most other scripts). <code>op1.js<\/code> is enqueued with <code>defer<\/code> so it does not block page rendering.<\/p><\/dd>\n<dt id=\"how%20do%20i%20track%20custom%20events%3F\"><h3>How do I track custom events?<\/h3><\/dt>\n<dd><p><strong>Via JavaScript:<\/strong><\/p>\n\n<pre><code>window.op('track', 'my_event', { foo: 'bar' });\n<\/code><\/pre>\n\n<p><strong>Via HTML attribute<\/strong> (when \"Track data attributes\" is active):<\/p>\n\n<pre><code>&lt;button data-track=\"ticket_purchase\"&gt;Buy ticket&lt;\/button&gt;\n<\/code><\/pre><\/dd>\n<dt id=\"how%20do%20i%20protect%20specific%20elements%20from%20session%20replay%3F\"><h3>How do I protect specific elements from Session Replay?<\/h3><\/dt>\n<dd><p>Use <code>data-openpanel-replay-mask<\/code> to mask text content or <code>data-openpanel-replay-block<\/code> to replace an element entirely in the recording.<\/p><\/dd>\n<dt id=\"how%20do%20i%20translate%20the%20plugin%3F\"><h3>How do I translate the plugin?<\/h3><\/dt>\n<dd><p>Use <code>languages\/kd-tracking-connector-openpanel.pot<\/code> as the translation template. Create a <code>.po<\/code> file for your locale (e.g. <code>kd-tracking-connector-openpanel-fr_FR.po<\/code>), translate it, and compile it to a <code>.mo<\/code> file with <code>msgfmt<\/code> or Poedit.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Code improvements and general housekeeping<\/li>\n<li>Added GitHub Actions workflows for automated validation and WordPress.org SVN deployment<\/li>\n<li>Added plugin icon for WordPress.org plugin directory<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Plugin display name set to \"KD Tracking Connector for OpenPanel\", slug <code>kd-tracking-connector-openpanel<\/code><\/li>\n<li>Replaced inline script output with <code>wp_add_inline_script()<\/code> via <code>wp_enqueue_scripts<\/code><\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Admin settings page under Settings \u2192 OpenPanel<\/li>\n<li>Support for self-hosted and cloud instances<\/li>\n<li>Local delivery of <code>op1.js<\/code> and <code>op1-replay.js<\/code><\/li>\n<li>Session Replay with input field masking<\/li>\n<li>DNT support, WP_DEBUG guard, exclude logged-in users<\/li>\n<li>Multilingual: German (source language) and English (en_US)<\/li>\n<\/ul>","raw_excerpt":"Privacy-first web analytics for WordPress via OpenPanel \u2013 the open-source Google Analytics alternative. Self-hosted or cloud, GDPR-friendly.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/318076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=318076"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/steffenka"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=318076"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=318076"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=318076"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=318076"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=318076"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=318076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}