{"id":245006,"date":"2025-08-09T14:33:28","date_gmt":"2025-08-09T14:33:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/festival-id-tracker\/"},"modified":"2025-11-30T22:05:17","modified_gmt":"2025-11-30T22:05:17","slug":"festival-id-tracker","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/festival-id-tracker\/","author":23284040,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.5.0","stable_tag":"1.5.0","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Festival ID Tracker","header_author":"Paul Wasicsek \/ Digital Travel Guide","header_description":"Tracks URL calls with an 'id' parameter (e.g., ?id=XXXXXX) and displays daily statistics and per-ID statistics in the WordPress dashboard. Includes redirect functionality.","assets_banners_color":"7e4621","last_updated":"2025-11-30 22:05:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Clustmart\/festival-id-tracker-wp-plugin","header_author_uri":"https:\/\/vernissaria.de\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":255,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.0":{"tag":"1.5.0","author":"vernissaria","date":"2025-11-30 22:05:17"}},"upgrade_notice":{"1.5.0":"<p>Major security update with rate limiting, bot detection, and WordPress compliance improvements. Recommended for all users.<\/p>","1.4.0":"<p>Adds powerful redirect functionality and comprehensive settings page. Update to enable automatic redirects with ID preservation.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3342041,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3342041,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3342041,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3342041,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.0"],"block_files":[],"assets_screenshots":{"Screenshot-1.png":{"filename":"Screenshot-1.png","revision":3342041,"resolution":"1","location":"assets","locale":""},"Screenshot-2.png":{"filename":"Screenshot-2.png","revision":3342041,"resolution":"2","location":"assets","locale":""},"Screenshot-3.png":{"filename":"Screenshot-3.png","revision":3342041,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Festival ID Daily Statistics widget showing 7-day view","2":"Festival ID Global Statistics widget with top performers","3":"Settings page with redirect configuration"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2501,727,235769],"plugin_category":[45],"plugin_contributors":[245416],"plugin_business_model":[],"class_list":["post-245006","plugin","type-plugin","status-publish","hentry","plugin_tags-campaign","plugin_tags-redirect","plugin_tags-url-tracking","plugin_category-ecommerce","plugin_contributors-vernissaria","plugin_committers-vernissaria"],"banners":{"banner":"https:\/\/ps.w.org\/festival-id-tracker\/assets\/banner-772x250.jpg?rev=3342041","banner_2x":"https:\/\/ps.w.org\/festival-id-tracker\/assets\/banner-1544x500.jpg?rev=3342041","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/festival-id-tracker\/assets\/icon-128x128.png?rev=3342041","icon_2x":"https:\/\/ps.w.org\/festival-id-tracker\/assets\/icon-256x256.png?rev=3342041","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/festival-id-tracker\/assets\/Screenshot-1.png?rev=3342041","caption":"Festival ID Daily Statistics widget showing 7-day view"},{"src":"https:\/\/ps.w.org\/festival-id-tracker\/assets\/Screenshot-2.png?rev=3342041","caption":"Festival ID Global Statistics widget with top performers"},{"src":"https:\/\/ps.w.org\/festival-id-tracker\/assets\/Screenshot-3.png?rev=3342041","caption":"Settings page with redirect configuration"}],"raw_content":"<!--section=description-->\n<p>The Festival ID Tracker plugin provides secure, in-dashboard analytics for websites using unique identifiers in their URLs (e.g., NFC tags, QR codes, or campaign links). It logs and analyzes visits with a <code>?id=XXXXXX<\/code> pattern and offers optional automatic redirection while maintaining comprehensive statistics.<\/p>\n\n<p><strong>Version 1.5.0<\/strong> introduces enhanced security features including rate limiting, bot detection, and WordPress compliance improvements for a more robust and secure tracking experience.<\/p>\n\n<h4>Key Features<\/h4>\n\n<p><strong>Tracking &amp; Analytics:<\/strong>\n* Tracks <code>?id=XXXXXX<\/code> query parameters (6-character alphanumeric)\n* Secure database logging with proper indexing\n* Privacy-focused with daily-rotating user hashes\n* Real-time statistics display<\/p>\n\n<p><strong>Security Features (New in 1.5.0):<\/strong>\n* Rate limiting (10 requests\/minute per IP)\n* Automatic bot detection and filtering\n* Nonce verification for all admin operations\n* SQL injection protection with prepared statements\n* XSS prevention with proper output escaping<\/p>\n\n<p><strong>Dashboard Widgets:<\/strong>\n* <strong>Daily Statistics:<\/strong> 7-day rolling view with navigation\n  - Total calls per day\n  - Unique festival IDs per day\n  - Historical data browsing\n* <strong>Global Statistics:<\/strong> All-time performance metrics\n  - Total accesses per ID\n  - Active days per ID\n  - Top 5\/Show All toggle<\/p>\n\n<p><strong>Redirect Functionality:<\/strong>\n* Optional automatic redirection\n* ID parameter preservation in redirects\n* Works with any internal or external URL\n* Simple enable\/disable toggle<\/p>\n\n<p><strong>Administration:<\/strong>\n* Comprehensive settings page under Settings &gt; Festival ID Tracker\n* Quick statistics overview\n* Testing tools and instructions\n* Direct settings access from plugins page<\/p>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li><strong>Events &amp; Festivals:<\/strong> Track NFC wristbands, badges, or tags<\/li>\n<li><strong>QR Code Campaigns:<\/strong> Monitor scan rates and engagement<\/li>\n<li><strong>Marketing Campaigns:<\/strong> Track campaign-specific URLs<\/li>\n<li><strong>Multi-Venue Events:<\/strong> Analyze venue popularity<\/li>\n<li><strong>Tourism &amp; Hospitality:<\/strong> Monitor information point usage<\/li>\n<li><strong>Retail Promotions:<\/strong> Track in-store engagement<\/li>\n<\/ul>\n\n<h4>Privacy &amp; Compliance<\/h4>\n\n<ul>\n<li>No personally identifiable information stored<\/li>\n<li>Daily-rotating hashes for user identification<\/li>\n<li>GDPR-ready design<\/li>\n<li>Compliant with WordPress coding standards<\/li>\n<\/ul>\n\n<h3>Additional Information<\/h3>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>MySQL 5.6 or higher<\/li>\n<\/ul>\n\n<h4>Support<\/h4>\n\n<p>For support, feature requests, or bug reports, please visit:\n<a href=\"https:\/\/github.com\/Clustmart\/festival-id-tracker-wp-plugin\/issues\">GitHub Issues<\/a><\/p>\n\n<h4>Contributing<\/h4>\n\n<p>We welcome contributions! Visit our <a href=\"https:\/\/github.com\/Clustmart\/festival-id-tracker-wp-plugin\">GitHub repository<\/a> to contribute.<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin:\n* Stores hashed visitor data (IP + User Agent + Daily Salt)\n* Does not store personally identifiable information\n* Does not make external API calls\n* Does not set cookies\n* All data is stored locally in your WordPress database<\/p>\n\n<p>For GDPR compliance, please mention the tracking functionality in your site's privacy policy.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation (Recommended)<\/h4>\n\n<ol>\n<li>Go to Plugins &gt; Add New in your WordPress admin<\/li>\n<li>Search for \"Festival ID Tracker\"<\/li>\n<li>Click \"Install Now\" and then \"Activate\"<\/li>\n<li>Configure settings under Settings &gt; Festival ID Tracker<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Upload the <code>festival-id-tracker<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate through the 'Plugins' menu in WordPress<\/li>\n<li>Configure under Settings &gt; Festival ID Tracker<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<ol>\n<li>Navigate to <strong>Settings &gt; Festival ID Tracker<\/strong><\/li>\n<li>(Optional) Enable redirect functionality<\/li>\n<li>(Optional) Enter destination URL for redirects<\/li>\n<li>Save Settings<\/li>\n<li>Test with <code>yoursite.com?id=TEST01<\/code><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='how%20do%20i%20view%20statistics%3F'><h3>How do I view statistics?<\/h3><\/dt>\n<dd><p>Statistics are displayed in three locations:\n1. <strong>Dashboard Widgets:<\/strong> Two widgets on your main dashboard\n2. <strong>Settings Page:<\/strong> Current statistics section\n3. <strong>Daily\/Global Views:<\/strong> Detailed breakdowns in widgets<\/p><\/dd>\n<dt id='what%20does%20each%20statistic%20mean%3F'><h3>What does each statistic mean?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Total Calls Tracked:<\/strong> All-time visits with any festival ID<\/li>\n<li><strong>Unique Festival IDs:<\/strong> Count of different IDs used<\/li>\n<li><strong>Calls Today:<\/strong> Today's visits with any ID<\/li>\n<li><strong>Total Accesses:<\/strong> Times a specific ID was used<\/li>\n<li><strong>Unique Days Used:<\/strong> Different days an ID was active<\/li>\n<\/ul><\/dd>\n<dt id='how%20does%20the%20redirect%20work%3F'><h3>How does the redirect work?<\/h3><\/dt>\n<dd><p>When enabled, visitors accessing <code>yoursite.com?id=ABC123<\/code> are automatically redirected to your configured URL with the ID preserved: <code>destination.com?id=ABC123<\/code><\/p><\/dd>\n<dt id='can%20i%20disable%20tracking%20for%20bots%3F'><h3>Can I disable tracking for bots?<\/h3><\/dt>\n<dd><p>Yes! Version 1.5.0 automatically detects and filters out bot traffic from your statistics.<\/p><\/dd>\n<dt id='is%20there%20a%20rate%20limit%3F'><h3>Is there a rate limit?<\/h3><\/dt>\n<dd><p>Yes, the plugin limits each IP address to 10 requests per minute to prevent abuse.<\/p><\/dd>\n<dt id='can%20i%20export%20the%20data%3F'><h3>Can I export the data?<\/h3><\/dt>\n<dd><p>Currently, data export must be done via database tools. A future version may include built-in export functionality.<\/p><\/dd>\n<dt id='is%20this%20plugin%20gdpr%20compliant%3F'><h3>Is this plugin GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin is designed with privacy in mind:\n- Uses daily-rotating hashes instead of storing raw user data\n- No personally identifiable information is stored long-term\n- You should still mention tracking in your privacy policy<\/p><\/dd>\n<dt id='what%20happens%20to%20my%20data%20if%20i%20deactivate%20the%20plugin%3F'><h3>What happens to my data if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Data is preserved when you deactivate the plugin. To completely remove data, you must manually delete the <code>wp_festidtrack_log<\/code> table from your database.<\/p><\/dd>\n<dt id='can%20i%20customize%20the%20id%20format%3F'><h3>Can I customize the ID format?<\/h3><\/dt>\n<dd><p>Currently, the plugin tracks exactly 6-character alphanumeric IDs. Custom formats may be added in future versions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.0 (2024)<\/h4>\n\n<ul>\n<li><strong>Security:<\/strong> Added comprehensive security improvements\n\n<ul>\n<li>Rate limiting (10 requests\/minute per IP)<\/li>\n<li>Bot detection and filtering<\/li>\n<li>Nonce verification for all admin operationsq<\/li>\n<li>Enhanced input sanitization<\/li>\n<\/ul><\/li>\n<li><strong>Compliance:<\/strong> Changed prefix to <code>festidtrack_<\/code> for WordPress standards<\/li>\n<li><strong>Performance:<\/strong> Improved SQL queries and caching<\/li>\n<li><strong>Fixes:<\/strong> Resolved statistics display issues<\/li>\n<li><strong>Code:<\/strong> Complete refactoring following WordPress coding standards<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added redirect functionality with optional URL configuration<\/li>\n<li>New comprehensive settings page under Settings &gt; Festival ID Tracker<\/li>\n<li>Enhanced settings with testing instructions<\/li>\n<li>Added enable\/disable toggle for redirects<\/li>\n<li>Settings link in plugins page for quick access<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Dashboard widgets for daily and global statistics<\/li>\n<li>7-day rolling navigation for historical data<\/li>\n<li>Top 5 \/ Show All toggle for global statistics<\/li>\n<li>Enhanced database logging with improved indexing<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>ID preservation in redirect URLs<\/li>\n<li>Improved redirect handling<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Basic tracking functionality<\/li>\n<li>Database logging implementation<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Track unique festival ID URLs, view stats in dashboard widgets, and enable optional redirects while preserving IDs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/245006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=245006"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vernissaria"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=245006"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=245006"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=245006"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=245006"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=245006"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=245006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}