{"id":23123407,"url":"https://github.com/openmost/openmost-site-kit","last_synced_at":"2026-05-03T02:37:36.831Z","repository":{"id":156603128,"uuid":"617538893","full_name":"openmost/openmost-site-kit","owner":"openmost","description":"Matomo plugin for WordPress","archived":false,"fork":false,"pushed_at":"2025-01-19T13:44:14.000Z","size":3324,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T15:44:04.704Z","etag":null,"topics":["matomo","wordpress","wordpress-plugin"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openmost.png","metadata":{"files":{"readme":"readme.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-22T15:43:27.000Z","updated_at":"2025-01-19T13:25:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"b66b8b07-3730-4a94-8012-221572145e9c","html_url":"https://github.com/openmost/openmost-site-kit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmost%2Fopenmost-site-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmost%2Fopenmost-site-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmost%2Fopenmost-site-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openmost%2Fopenmost-site-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openmost","download_url":"https://codeload.github.com/openmost/openmost-site-kit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247119637,"owners_count":20886780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["matomo","wordpress","wordpress-plugin"],"created_at":"2024-12-17T07:34:00.725Z","updated_at":"2026-05-03T02:37:36.824Z","avatar_url":"https://github.com/openmost.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"=== Matomo Site Kit ===\n\nContributors: Openmost\nRequires at least: 6.0\nTested up to: 6.9.1\nStable tag: 2.3.0\nTags: matomo, connect, analytics, tracking, ecommerce, gdpr, google analytics alternative, web analytics\nRequires PHP: 8.2\nLicense: GPL-2.0-or-later\nLicense URI: https://www.gnu.org/licenses/gpl-2.0.html\n\nThe most complete Matomo Analytics plugin for WordPress. Server-side tracking, WooCommerce ecommerce, site search, GDPR compliance, and Tag Manager support.\n\n== Description ==\n\n**Matomo Site Kit** is the ultimate WordPress plugin for integrating [Matomo Analytics](https://matomo.org/) - the leading open-source, privacy-focused alternative to Google Analytics.\n\nWhether you use Matomo Cloud or self-hosted Matomo On-Premise, this plugin provides everything you need for comprehensive website analytics while respecting your visitors' privacy.\n\n= Why Choose Matomo Site Kit? =\n\n* **Privacy-First Analytics** - Full GDPR, CCPA, and PECR compliance out of the box\n* **No Data Sampling** - 100% accurate data, unlike Google Analytics\n* **You Own Your Data** - No third-party data sharing\n* **Ad-Blocker Resistant** - Server-side tracking bypasses most ad blockers\n* **WooCommerce Ready** - Complete ecommerce tracking for your online store\n\n= Three Powerful Tracking Methods =\n\nChoose the tracking method that best fits your needs:\n\n* **Classic JavaScript Tracking** - Traditional Matomo tracking with full feature support using `_paq.push()`. Best for most websites.\n\n* **Matomo Tag Manager (MTM)** - Advanced tag management with dataLayer integration. Perfect for marketing teams who need flexible trigger and variable management.\n\n* **Server-Side PHP Tracking** - Privacy-friendly tracking that works even when JavaScript is disabled or blocked. Ideal for GDPR-focused websites and bypassing ad blockers.\n\n= Complete Feature List =\n\n**Analytics Dashboard**\n* Real-time analytics overview in WordPress admin\n* Visits, page views, bounce rate, and session duration\n* WordPress Dashboard widget for quick stats\n* Per-post and per-page analytics metabox\n\n**WooCommerce Ecommerce Tracking**\n* Product view tracking with SKU, name, price, and categories\n* Category page view tracking\n* Add to cart and remove from cart events\n* Cart update tracking\n* Complete order tracking with revenue, tax, and shipping\n* Works with all three tracking methods\n\n**Site Search Tracking**\n* Automatic WordPress search tracking\n* Search keyword capture\n* Category filter detection\n* Search result count\n* Zero configuration required\n\n**Automatic Annotations**\n* Create Matomo annotations when content is published\n* Select which post types trigger annotations\n* Customizable format with variables: {post_type}, {title}, {url}, {author}\n* Live preview in settings\n\n**Privacy \u0026 GDPR Compliance**\n* Consent mode options (requireConsent, requireCookieConsent)\n* Privacy opt-out shortcode [matomo_opt_out]\n* Server-side tracking for cookieless analytics\n* Exclude tracking by user role\n* Compatible with cookie consent plugins\n\n**Advanced Features**\n* User ID tracking with SHA256 hashed email\n* Heartbeat Timer for accurate time-on-page measurement\n* DataLayer integration for Tag Manager (Matomo config + page context: page_type, post_type label, taxonomies, locale, login status, post_id)\n* AI Bot Tracking - Track visits from AI assistants (ChatGPT, Perplexity, Claude, etc.) separately in Matomo (requires Matomo 5.7+)\n* Bot detection and filtering\n* Noscript fallback for JavaScript-disabled browsers\n* DNS prefetch and script preloading for performance\n* Matomo Cloud and On-Premise support\n\n= Perfect For =\n\n* **Bloggers** who want simple, privacy-respecting analytics\n* **WooCommerce stores** needing detailed ecommerce insights\n* **Agencies** managing multiple client websites\n* **Enterprise** organizations with strict data privacy requirements\n* **GDPR-conscious** website owners in the EU\n* **Marketing teams** using Matomo Tag Manager\n\n= Matomo Cloud vs On-Premise =\n\nThis plugin works seamlessly with both:\n\n* **Matomo Cloud** - Hosted solution at matomo.cloud, no server management needed\n* **Matomo On-Premise** - Self-hosted on your own server for complete data ownership\n\n== Installation ==\n\n= Automatic Installation =\n\n1. Go to Plugins \u003e Add New in your WordPress admin\n2. Search for \"Matomo Site Kit\"\n3. Click \"Install Now\" and then \"Activate\"\n4. Go to Site Kit \u003e Settings to configure\n\n= Manual Installation =\n\n1. Download the plugin ZIP file\n2. Go to Plugins \u003e Add New \u003e Upload Plugin\n3. Upload the ZIP file and click \"Install Now\"\n4. Activate the plugin\n5. Go to Site Kit \u003e Settings to configure\n\n= Configuration =\n\n**Required for all tracking methods:**\n* Matomo Host URL (e.g., https://analytics.example.com or https://yoursite.matomo.cloud)\n* Site ID (found in Matomo under Administration \u003e Websites)\n\n**Additional requirements by tracking method:**\n\n* **Classic JavaScript** - Host URL + Site ID\n* **Matomo Tag Manager** - Host URL + Container ID\n* **Server-Side PHP** - Host URL + Site ID + Auth Token\n\n**For Dashboard \u0026 Annotations:**\n* Auth Token (API key from Matomo under Administration \u003e Personal \u003e Security)\n\n== Frequently Asked Questions ==\n\n= Is Matomo Site Kit free? =\n\nYes, Matomo Site Kit is 100% free and open source. You can use it with either Matomo Cloud (paid hosting) or self-hosted Matomo On-Premise (free).\n\n= Is Matomo GDPR compliant? =\n\nYes, Matomo is designed for privacy and can be configured for full GDPR compliance. With consent mode enabled, no tracking occurs until the visitor gives consent. Server-side tracking can even work without cookies.\n\n= How is Matomo different from Google Analytics? =\n\nMatomo is a privacy-focused alternative where you own 100% of your data. Unlike Google Analytics, Matomo doesn't sample data, doesn't share data with third parties, and can be self-hosted for complete control.\n\n= Should I remove existing Matomo tracking code? =\n\nYes, Matomo Site Kit is an all-in-one solution. Remove any existing Matomo code from your theme or other plugins to avoid duplicate tracking.\n\n= Which tracking method should I use? =\n\n* **Classic JavaScript** - Best for most sites. Full feature support, easy setup.\n* **Matomo Tag Manager** - Best for marketing teams who need advanced tag management, triggers, and variables.\n* **Server-Side PHP** - Best for privacy-focused sites, GDPR compliance, or when ad blockers are a concern.\n\n= Can I use multiple tracking methods together? =\n\nYes, you can combine Server-Side PHP with either Classic JS or Tag Manager. Server-side handles the initial page view reliably, while client-side handles interactive events like clicks and form submissions.\n\n= Does WooCommerce tracking work with all methods? =\n\nYes, each tracking method has its own WooCommerce ecommerce toggle. Enable the one that matches your active tracking method for complete ecommerce analytics.\n\n= How does Site Search tracking work? =\n\nWhen a visitor searches your site, the plugin automatically tracks the search keyword, any category filters applied, and the number of results found. No configuration needed - it works out of the box with WordPress search.\n\n= What is the annotation feature? =\n\nAnnotations are notes in Matomo that mark specific dates. This plugin can automatically create annotations when you publish content, helping you correlate traffic changes with content releases.\n\n= What format should I use for annotations? =\n\nThe default format is: `New {post_type} published: \"{title}\"`\n\nAvailable variables:\n* {post_type} - Post type label (e.g., \"Post\", \"Page\", \"Product\")\n* {title} - The post title\n* {url} - The permalink URL\n* {author} - The author's display name\n\n= Will this slow down my website? =\n\nNo, the plugin is optimized for performance with DNS prefetch, script preloading, and async loading. Server-side tracking has zero impact on front-end performance.\n\n= Does it work with caching plugins? =\n\nYes, Matomo Site Kit works with all major caching plugins including WP Rocket, W3 Total Cache, WP Super Cache, and LiteSpeed Cache.\n\n= Does it work with page builders? =\n\nYes, the plugin works with all page builders including Elementor, Divi, Beaver Builder, WPBakery, and Gutenberg.\n\n= How do I add the opt-out feature for GDPR? =\n\nAdd the shortcode `[matomo_opt_out]` to any page or post. This displays a Matomo opt-out form allowing visitors to opt out of tracking.\n\nShortcode options:\n* `[matomo_opt_out language=\"en\"]` - Set language\n* `[matomo_opt_out show_intro=\"0\"]` - Hide introduction text\n* `[matomo_opt_out background_color=\"ffffff\"]` - Custom background\n* `[matomo_opt_out font_color=\"000000\"]` - Custom text color\n\n= Can I exclude certain users from tracking? =\n\nYes, go to Settings and select which user roles to exclude. Common choices are Administrator and Editor to avoid skewing analytics with your own visits.\n\n= How do I track logged-in users? =\n\nEnable \"User ID Tracking\" in the settings. The plugin will track logged-in users using a SHA256 hash of their email address, allowing you to see user journeys across devices while maintaining privacy.\n\n= What is Heartbeat Timer? =\n\nHeartbeat Timer sends periodic signals to Matomo while the page is open, providing more accurate \"time on page\" measurements. Without it, the time spent on the last page of a session cannot be measured.\n\n= Does server-side tracking work with Matomo Cloud? =\n\nYes, server-side tracking works with both Matomo Cloud and On-Premise installations. You'll need your Auth Token for it to work.\n\n= Why aren't my WooCommerce orders being tracked? =\n\nMake sure you've enabled the ecommerce tracking option for your active tracking method. Each method (Classic, Tag Manager, Server-Side) has its own toggle.\n\n= What is AI Bot Tracking? =\n\nAI Bot Tracking allows you to track visits from AI assistants like ChatGPT, Perplexity, Claude, and Gemini separately in Matomo. Instead of discarding these visits, Matomo 5.7+ can record them in a dedicated bot tracking report. Enable this feature in Settings to see how AI agents interact with your content.\n\n= Which AI bots are detected? =\n\nThe plugin detects user-triggered AI assistants including ChatGPT-User, GPTBot, PerplexityBot, ClaudeBot, Claude-Web, Google-Extended, Gemini, Meta-ExternalAgent, AmazonBot, AppleBot-Extended, OAI-SearchBot, and others. The list is regularly updated.\n\n= Can I use this with other analytics plugins? =\n\nWhile technically possible, we recommend using only Matomo Site Kit for analytics to avoid conflicts and duplicate tracking.\n\n= Which dataLayer variables are pushed when I use Matomo Tag Manager? =\n\nTwo independent toggles control what is pushed to `_mtm`:\n\n* **Push config context to dataLayer** - Pushes `matomo.host`, `matomo.site_id`, `matomo.container_id` and `wordpress.environment`. Used by MTM triggers that need to know which Matomo instance / environment the page runs on.\n* **Push page context to dataLayer** - Pushes ready-to-use variables for page-level triggers: `page_type` (slug: home, blog, search, error_404, author, `\u003cpost_type\u003e`, `archive_\u003cpost_type\u003e`, `archive_\u003ctaxonomy\u003e`, `archive_date`, `archive`), `post_type` (singular human-readable label, e.g. \"Article\"), `post_id` on singular pages, taxonomy term names (`category`, `tag` or any custom taxonomy slug), `author` on author archives, `locale` (e.g. fr_FR), `user_login_status` (\"logged_in\" / \"logged_out\"), plus `user_id` (SHA256 hashed email) and `user_role` if User ID tracking is enabled.\n\nBoth toggles are independent - enable only what your MTM setup actually uses.\n\n= How do I get support? =\n\nFor support, please visit our [GitHub repository](https://github.com/openmost/openmost-site-kit) or contact us through [openmost.io](https://openmost.io).\n\n= How can I contribute? =\n\nContributions are welcome! Visit our [GitHub repository](https://github.com/openmost/openmost-site-kit) to report issues, suggest features, or submit pull requests.\n\n== Screenshots ==\n\n1. Dashboard\n2. Settings - Tracking\n3. Settings - Features\n4. Settings - Privacy\n\n== Changelog ==\n\n= 2.3.0 =\nRelease date: 2026-04-16\n\n**New Features:**\n\n* Page context dataLayer - New optional toggle \"Push page context to dataLayer\" that enriches `_mtm` with ready-to-use variables for Tag Manager triggers and variables\n* Pushed variables include: `page_type` (home, blog, search, error_404, author, `\u003cpost_type\u003e`, `archive_\u003cpost_type\u003e`, `archive_\u003ctaxonomy\u003e`, `archive_date`, `archive`), `post_type` (singular human-readable label), `post_id` on singular pages, taxonomies (`category`, `tag`, any custom taxonomy slug with term names), `author` on author archives, `locale`, and `user_login_status`\n* `user_id` (SHA256) and `user_role` are now pushed in the page context when User ID tracking is enabled (previously in the Matomo config object)\n\n**Improvements:**\n\n* Renamed the Tag Manager \"Push context to dataLayer\" toggle to \"Push config context to dataLayer\" to clearly distinguish it from the new page context toggle\n* Enabling the config context toggle now pre-checks the page context toggle\n* Config context push now only carries `matomo.*` and `wordpress.environment` - keeps the initial payload minimal\n* `matomo.site_id` is now pushed as an integer (was a string)\n* Removed `recMode` from the dataLayer push (kept on the actual tracker requests where it is needed)\n* Matomo Host is now trimmed and stripped of any trailing slash on save and in the dataLayer payload\n* Custom taxonomies registered with `publicly_queryable` or `show_ui` (but not `public`) are now included\n\n**Technical:**\n\n* New helpers: `omsk_get_page_context()`, `omsk_get_post_type_label()`, `omsk_get_current_user_role()`\n* REST settings add `enableMtmPageContext` flag (`omsk-matomo-enable-mtm-page-context-field` option)\n\n= 2.2.0 =\nRelease date: 2026-03-06\n\n**New Features:**\n\n* AI Bot Tracking - Track visits from AI assistants (ChatGPT, Perplexity, Claude, Gemini, etc.) separately in Matomo using the bot tracking API (recMode). Requires Matomo 5.7.0+\n* Server-Side PHP Tracking - Track page views server-side for ad-blocker resistance and enhanced privacy\n* WooCommerce Ecommerce Tracking - Complete ecommerce analytics for all three tracking methods\n* Site Search Tracking - Automatically track WordPress searches with keyword, category, and result count\n* Automatic Annotations - Create Matomo annotations when posts are published\n* Customizable annotation format with variables ({post_type}, {title}, {url}, {author})\n* Privacy settings page with robots.txt and .well-known/ai-plugin.json management\n\n**Improvements:**\n\n* Restructured Settings page with intuitive tracking method cards\n* Each tracking method now clearly shows its required fields\n* Separated feature cards for better organization (GDPR, Heartbeat, User ID, Ecommerce, Search, AI Bot Tracking)\n* Renamed Dashboard tab to Features tab for clarity\n* Intelligent bot detection for server-side tracking with AI assistant categorization\n* Server-side AI bot detection sends recMode=1 (bot-only) requests with source label\n* Classic JS and Tag Manager use recMode=2 (auto mode) for automatic AI bot classification\n* Noscript image tracker includes recMode=2 for pixel-based bot detection\n* Privacy opt-out shortcode now uses modern script-based approach\n* Full WordPress Coding Standards compliance\n* Enhanced security with proper escaping and sanitization throughout\n* Added REST API nonce for improved security\n* Performance optimizations with DNS prefetch and script preloading\n\n**Technical:**\n\n* Complete code audit for security and best practices\n* Improved internationalization (i18n) support\n* PHP 8.2+ compatibility\n* WordPress 6.0+ required\n* Matomo 5.7.0+ required for AI Bot Tracking feature\n\n= 2.1.1 =\nRelease date: 2025-11-24\n\n* Tested on WordPress 6.9\n\n= 2.1.0 =\nRelease date: 2025-11-24\n\n* Refactored Settings page with tabbed interface\n* Added Dashboard tab for API configuration\n* Added User ID tracking feature (SHA256 hashed email)\n* Added Heartbeat Timer option for classic tracking\n* Improved Tag Manager dataLayer with wordpress.user_id\n* Removed setup wizard in favor of streamlined settings\n* Various UI/UX improvements\n* Added noscript image tracker fallback\n\n= 2.0.0 =\nRelease date: 2025-11-20\n\n* Complete refactor using React and WordPress components\n* New modern dashboard interface\n* WordPress Dashboard widget\n* Post/Page analytics metabox\n\n= 1.1.2 =\nRelease date: 2024-09-25\n\n* Fix missing function get_value()\n\n= 1.1.0 =\nRelease date: 2023-06-29\n\n* Add dataLayer sync\n* Add Matomo details in dataLayer\n* Fix Matomo Cloud instances support\n\n= 1.0.2 =\nRelease date: 2023-06-27\n\n* Support Matomo Cloud CDN in tracking codes\n\n= 1.0.0 =\nRelease date: 2023-05-17\n\n* Initial plugin release\n\n== Upgrade Notice ==\n\n= 2.3.0 =\nNew \"Push page context to dataLayer\" option for Tag Manager: adds page_type, post_type label, post_id, taxonomies, locale and login status to `_mtm`. Host URL is now auto-trimmed. User ID / role moved to the page context payload.\n\n= 2.2.0 =\nMajor feature release! New AI bot tracking (Matomo 5.7+), server-side tracking, WooCommerce ecommerce, site search tracking, automatic annotations, and privacy settings. Includes security improvements and WordPress coding standards compliance. Recommended for all users.\n\n= 2.1.0 =\nNew User ID tracking and Heartbeat Timer features. Improved settings interface.\n\n= 2.0.0 =\nComplete redesign with modern React interface. New dashboard widget and post analytics.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmost%2Fopenmost-site-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenmost%2Fopenmost-site-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmost%2Fopenmost-site-kit/lists"}