{"id":310768,"date":"2026-05-27T21:33:42","date_gmt":"2026-05-27T21:33:42","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cookie-free-analytics\/"},"modified":"2026-05-27T21:53:29","modified_gmt":"2026-05-27T21:53:29","slug":"no-cookie-analytics-by-arfa","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/no-cookie-analytics-by-arfa\/","author":21149320,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.7","stable_tag":"1.0.7","tested":"6.9.4","requires":"6.2","requires_php":"","requires_plugins":null,"header_name":"No Cookie Analytics \u2013 By Arfa","header_author":"Muhammad Arfa Rehman","header_description":"GDPR-aware analytics with server-side tracking and no frontend cookies.","assets_banners_color":"020f1f","last_updated":"2026-05-27 21:53:29","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/no-cookie-analytics-by-arfa\/","header_author_uri":"https:\/\/profiles.wordpress.org\/arfarehman\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.7":{"tag":"1.0.7","author":"arfarehman","date":"2026-05-27 21:53:29"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3551305,"resolution":"256x256","location":"assets","locale":"","width":499,"height":500}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3551305,"resolution":"1544x500","location":"assets","locale":"","width":2205,"height":713}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.7"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[232,131785,189910,396,550],"plugin_category":[36,54],"plugin_contributors":[264704],"plugin_business_model":[],"class_list":["post-310768","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-analytics","plugin_tags-gdpr","plugin_tags-no-cookies","plugin_tags-privacy","plugin_tags-tracking","plugin_category-analytics","plugin_category-security-and-spam-protection","plugin_contributors-arfarehman","plugin_committers-arfarehman"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/no-cookie-analytics-by-arfa\/assets\/icon-256x256.png?rev=3551305","icon_2x":"https:\/\/ps.w.org\/no-cookie-analytics-by-arfa\/assets\/icon-256x256.png?rev=3551305","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>No Cookie Analytics \u2013 By Arfa tracks visits server-side without setting cookies in visitors'\nbrowsers. Data stays in your WordPress database with an admin dashboard, reports, and optional\nCSV export.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin stores analytics records in your WordPress database (<code>wp_ncaba_hits<\/code>), including:<\/p>\n\n<ul>\n<li>Page URL\/path<\/li>\n<li>Referrer host<\/li>\n<li>Browser\/OS\/device type<\/li>\n<li>Anonymized IP hash<\/li>\n<li>Session key<\/li>\n<li>Country code<\/li>\n<li>Timestamp<\/li>\n<\/ul>\n\n<p>No raw IP address is stored in the plugin database.<\/p>\n\n<p>Country detection behavior:<\/p>\n\n<ol>\n<li>Uses server-provided geolocation headers when available (for example Cloudflare or GeoIP\nheaders).<\/li>\n<li>Optional external IP geolocation lookup can be enabled by admin consent in plugin settings.<\/li>\n<\/ol>\n\n<p>When external geolocation is enabled, visitor IP is sent to:<\/p>\n\n<ul>\n<li>Service: <a href=\"https:\/\/ipapi.co\/\">ipapi.co<\/a><\/li>\n<li>Purpose: country lookup only<\/li>\n<\/ul>\n\n<p>Site owners must disclose this in their privacy policy before enabling external lookup.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can optionally use the third-party service ipapi.co for country lookup. The lookup\nis <strong>disabled by default<\/strong> and only runs after a site administrator explicitly enables the\n\"Allow External Geo Lookup\" option in plugin settings.<\/p>\n\n<ul>\n<li>Service: ipapi.co (https:\/\/ipapi.co\/)<\/li>\n<li>What is sent: the visitor's IP address (only when the option is enabled and no server-provided\ngeo headers are available).<\/li>\n<li>When: at most once per visitor IP per day; the resolved country code is then cached locally.<\/li>\n<li>Why: to determine the visitor's country code for the analytics dashboard.<\/li>\n<li>Terms of Service: https:\/\/ipapi.co\/terms\/<\/li>\n<li>Privacy Policy: https:\/\/ipapi.co\/privacy\/<\/li>\n<\/ul>\n\n<p>If the option is left disabled, the plugin never contacts ipapi.co.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Server-side tracking<\/li>\n<li>GDPR-aware design (configure to your legal requirements)<\/li>\n<li>No frontend cookies<\/li>\n<li>Admin dashboard and home screen widget<\/li>\n<li>Pages, Referrers, and Users reports<\/li>\n<li>CSV export and settings import\/export<\/li>\n<li>Local bundled frontend assets (no CDN required)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>no-cookie-analytics-by-arfa<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install through the\nWordPress plugin installer).<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Open the <strong>Analytics<\/strong> menu in the admin area.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20set%20cookies%3F\"><h3>Does this plugin set cookies?<\/h3><\/dt>\n<dd><p>No. Tracking is performed on the server when pages are requested.<\/p><\/dd>\n<dt id=\"where%20is%20data%20stored%3F\"><h3>Where is data stored?<\/h3><\/dt>\n<dd><p>In a custom table in your WordPress database (<code>wp_ncaba_hits<\/code> by default).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Removed UTF-8 byte order marks (BOM) from PHP sources so activation no longer sends accidental\noutput to the browser.<\/li>\n<li>Uninstall: reliable table drop, clear all related and legacy cron hooks, and remove cached\ngeo lookup transients.<\/li>\n<li>Deactivation: clear legacy cleanup cron hook names in addition to the canonical event.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Renamed plugin to \"No Cookie Analytics \u2013 By Arfa\"; text domain and translation template are\n  no-cookie-analytics-by-arfa (Domain Path: <code>\/languages<\/code>).<\/li>\n<li>Main bootstrap file is <code>no-cookie-analytics-by-arfa.php<\/code>; directory slug <code>no-cookie-analytics-by-arfa<\/code>.<\/li>\n<li>PHP class and constant prefix <code>NCABA_*<\/code> (e.g. <code>NCABA_VERSION<\/code>, <code>NCABA_Activator<\/code>); runtime\nidentifiers use lowercase <code>ncaba_*<\/code> \/ <code>ncaba-<\/code> (database table <code>{prefix}ncaba_hits<\/code>, options,\nhooks, AJAX, and asset handles). Legacy <code>cfaba_*<\/code>, <code>cfba_*<\/code>, and mistaken <code>NCABA_*<\/code> option keys\nor table names migrate automatically on upgrade.<\/li>\n<li>Plugin URI points to a reliable HTTPS profile page; localized admin strings and dashboard JS\nescaping improvements.<\/li>\n<li>Bumped tested-up-to header for current WordPress.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Previous branding and slug iteration; see older releases for detail.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Raised minimum WordPress version to 6.2 for safe <code>%i<\/code> identifier placeholders in\n  $wpdb-&gt;prepare().<\/li>\n<li>Hardened admin and cron SQL (prepared statements, <code>esc_like()<\/code> for <code>LIKE<\/code> patterns).<\/li>\n<li>Replaced <code>parse_url()<\/code> with <code>wp_parse_url()<\/code>; removed redundant <code>fclose()<\/code> on export stream.<\/li>\n<li>Settings import notices use per-user transients; validated upload temp files with\n  is_uploaded_file().<\/li>\n<li>Added readme short description; direct-access guard on settings view template.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Bundled Chart.js and Poppins assets locally (removed CDN dependency).<\/li>\n<li>Added explicit admin consent toggle for external geolocation lookup.<\/li>\n<li>Updated privacy disclosure and reviewer-oriented readme details.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Improved admin UI and tooltip behavior.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added richer visitor identity and dashboard\/report improvements.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Privacy-focused analytics with server-side tracking, dashboard reports, and no frontend cookies.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/310768","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=310768"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/arfarehman"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=310768"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=310768"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=310768"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=310768"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=310768"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=310768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}