=== First Party Analytics === Contributors: tmmtechnology Tags: analytics, website analytics, visitor tracking, web vitals, woocommerce Tested up to: 7.0 Stable tag: 1.2.95 Requires PHP: 8.1 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html See where visitors come from, what they explore and how fast your site feels. Traffic, content and Web Vitals reports inside WordPress. == Description == **Understand the visits behind your website decisions.** Which sources bring people to your site? What content do they explore? Are your pages fast and responsive on the devices they actually use? First Party Analytics brings traffic, content and real-user performance reports into WordPress. Collect activity through your own website, store analytics in your site's database and explore the built-in reports without needing a Google Analytics account. = Find useful answers in your analytics = * **Understand your audience.** Explore traffic sources, referrers, countries, languages, browsers and devices. * **See which content gets attention.** Review page visits, sessions, visit times, on-site searches and visited links. * **Prioritize performance work.** Investigate real-user loading speed, responsiveness and visual stability with supported Web Vitals. * **Put traffic in context.** Distinguish human, user-directed AI, crawler, bot and unknown activity. * **Keep reports close to your work.** Open analytics in WordPress and view page-level statistics while editing content. = Discover how people find and explore your site = Use source and referrer reports to understand where visits come from. Explore popular pages, on-site searches and visited links to investigate what people want and which content they use. For a publisher, that can inform the next article or a useful internal link. For a store, it can highlight product pages and search terms worth investigating. For a business website, it can help focus attention on the pages visitors actually reach. = Measure the experience your visitors receive = A speed test captures one set of conditions. First Party Analytics also measures supported performance signals from actual visits, giving you evidence from the browsers and devices using your site. Reports include Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift where the browser and visit provide them. Use these signals to investigate slow loading, delayed interactions and unexpected layout movement. = Keep local reporting under your control = Raw analytics and processed reports are stored in your site's database. External analytics sharing is a separate option, disabled by default; it is not required for the built-in reports. Choose IP and cookie exclusions and use visit sampling to control collection volume. Accounts with site-administration permissions are excluded from normal tracking, while eligible logged-in customers can still be measured. The plugin uses a first-party visitor cookie and can collect personal data. Review the Privacy and External Services sections when configuring your site's notices and consent controls. = Understand the traffic behind the totals = A crawler is different from a shopper or reader. Traffic classification helps separate automated activity from human and user-directed AI visits, so request volume has more context. Classification is an estimate; it does not establish a visitor's identity. = Investigate gaps instead of guessing = Administrative diagnostics show collection statistics, background parsing progress and stage timings when reports are delayed. Historical page-visit import tools support CSV and TSV data, including a GA4 import format; imported visits remain distinguishable from native collection. = Start with the included reports = The reports above are included in this plugin. First Party Analytics Premium is a separate add-on; detailed session traces and other Premium-only features are not part of this download. Install First Party Analytics, review your tracking settings and make a test visit from an eligible browser session. Your first useful check is simple: confirm that the visit is collected and processed, then explore its page, source and available performance data. == Installation == 1. Install and activate First Party Analytics. PHP 8.1 or newer is required; test the configuration on staging before enabling collection on a live site. 2. Open the plugin settings and review exclusions, sampling, script loading and optional data sharing. 3. Configure your site's privacy notice and any required consent controls before collecting visitor data. 4. Visit a few pages in a separate anonymous browser session or with an eligible non-administrator account. Administrator visits are excluded. 5. Allow background processing to run, then open the analytics reports in WordPress. 6. Check the date range and explore Pages, Sources and Performance to see the available results. If reports stay empty, check tracking exclusions, browser requests, consent and optimization settings, and scheduled background processing. Enable diagnostic submenus in Advanced settings to inspect collection and parsing. Screenshots show example reports and an earlier interface. Data and available controls vary with your traffic, settings and plugin version. == Frequently Asked Questions == = What does first-party analytics mean here? = The plugin collects activity through your website and stores its analytics in your site's database. You can view built-in reports in WordPress without connecting a Google Analytics account. First-party does not mean cookie-free, anonymous by default or free of all external requests. See Privacy and External Services below. = Which reports are included? = Reports cover general activity, visit times, interaction capabilities, sessions, pages, screen sizes, languages, countries, searches, visited links, user agents, referrers, traffic sources and performance. = Does it measure Web Vitals? = Yes. It collects supported browser performance measurements from real visits. Not every browser or visit provides every metric, and these reports are not a replacement for Google's own Search Console data. = Why do my own visits not appear? = Users with site-administration permissions are excluded. Test with a separate anonymous session or an eligible non-administrator account, and check your exclusion and sampling settings. = Why are reports not updated immediately? = Collected events are processed into reports by background work. Processing delays, failed scheduled jobs, browser restrictions, exclusions or sampling can affect what appears. The Data Parsing diagnostics help distinguish collection problems from a processing backlog. = Will the numbers match Google Analytics? = Not necessarily. Different tools use different session definitions, exclusions, sampling and bot classification. Consent settings, browser blocking and collection methods can also produce different totals. = Does the plugin use cookies? = Yes. It uses a first-party visitor identifier cookie with a configured lifetime of one year. Browser settings and cookie deletion can shorten that lifetime. Review the collection behaviour and integrate any consent controls your site requires. = Will analytics add load to my website? = Yes. Collecting, storing and processing events uses browser, server and database resources. The impact depends on traffic volume and configuration. Use sampling and exclusions where appropriate, and monitor parsing diagnostics on busy sites. = Can I use it alongside other analytics tools? = Yes, but review the combined tracking and performance impact. First Party Analytics does not require Google Analytics for its built-in reports and does not promise identical measurements. = Is Premium required? = No. The built-in reports work without the separate Premium add-on. Advanced features provided by that add-on are outside this plugin's included feature set. = Where can I get support? = Open a topic in the [WordPress.org support forum](https://wordpress.org/support/plugin/first-party-analytics/) or email wp@tmm.ventures. Include the plugin and WordPress versions, the affected report and steps to reproduce the issue. Redact visitor identifiers, IP addresses, private URLs, credentials and other personal information before sharing diagnostics publicly. == Privacy == First Party Analytics uses visitor identifiers and records browsing activity. Depending on the request and enabled features, collected information can include visited URLs, searches, referrers, IP addresses, browser and device information, language, interaction events and performance measurements. Raw analytics and processed reporting data are stored in your site's database. Restrict access to analytics and exports, review data retention and describe the actual collection in your privacy notice. First-party storage alone does not establish compliance with privacy or cookie requirements. Optional data sharing is disabled by default. Review the services below before enabling features that send information outside your website. == External Services == = Country lookup database = When a MaxMind license key is configured, the plugin can download the GeoLite2 Country database from https://download.maxmind.com/. Download requests include the license key and database edition; MaxMind also receives the server's connection information. Country lookups use the downloaded database locally rather than sending each visitor IP address to MaxMind. Country reporting depends on an available geolocation database and is approximate. This product uses GeoLite data created by MaxMind, available from https://www.maxmind.com/. [MaxMind Privacy Policy](https://www.maxmind.com/en/privacy-policy) | [GeoLite License Agreement](https://www.maxmind.com/en/geolite/eula) = Optional data sharing and recommendations = Enabling data sharing and recommendations connects the plugin to https://share.firstpartyanalytics.nl/. The plugin provisions a site token, sends analytics table exports in background batches and retrieves recommendations. Provisioning and delivery exchange site/callback information and authentication details as well as the selected analytics data. This option is disabled by default and is not required for local reports. Review the data-sharing interface and the data to be exported before enabling it. Contact wp@tmm.ventures for service terms and privacy information. = Plugin notifications = The shared plugin library periodically requests administrative notices from https://wpplugins-midlayer.tmm-technology.com/. The request identifies the plugin and its version; the service also receives standard HTTP connection information, including the server's public IP address. This notification request does not upload the local analytics tables. Contact wp@tmm.ventures for questions about this service. = Optional external block-detection requests = Block detection uses the site's own resources by default. If you select Google or a custom domain for block detection, visitors' browsers request that external domain to test whether it is reachable. The receiving service can see connection information such as the visitor's IP address and browser details. Google modes use https://ads.google.com/ or https://www.google-analytics.com/. These are reachability checks, not a connection of the plugin's reports to a Google Analytics account. For a custom domain, review the policy of its operator. [Google Privacy Policy](https://policies.google.com/privacy) | [Google Terms of Service](https://policies.google.com/terms) == Screenshots == 1. General dashboard bringing traffic summaries and charts together. 2. Visit-time report for exploring how long visitors spend on pages. 3. Interaction-capability reports for touch, pointer and other input support. 4. Session reports with duration, pages per session and activity over time. 5. Page reports with date and content-type filters and page-level counters. 6. Screen-size reports covering resolutions, breakpoints and orientation. 7. Language reports for understanding your audience's browser languages. 8. Country map and geographic breakdown of visits. 9. On-site search terms shown as a word cloud and frequency report. 10. Visited-link report with source, destination and internal/external filters. 11. User-agent report for inspecting browser and device identifiers. 12. Referrer report grouped by referring domain. 13. Traffic-source reports for exploring where visits originate. 14. Performance reports with desktop/mobile Web Vitals and page-level measurements. 15. Miscellaneous reports, including connection-protocol information. 16. Page-level statistics alongside the WordPress content editor. 17. General settings, including sampling, country lookup and optional sharing. 18. Cookie exclusions and a control to exclude your own browser. 19. IP-address exclusion settings. 20. Cache preferences in an earlier interface; current analytics storage uses the site's database. == Changelog == = 1.2.95 2026-10-30 = #### Maintenance * Refresh the packaged Data Parsing script to reproduce the current build; analytics behavior is unchanged. = 1.2.94 2026-10-30 = #### Bugfixes * Prevent failed notification requests from creating immediate retry loops with WP Plugins Core 0.1.58; retain bounded retries and interrupted-worker recovery. * Add a covering index for product-visit totals and reuse those totals across taxonomy screens. = 1.2.93 2026-10-28 = #### Improvements * Reduce product-view counter database work by batching updates and reading only the required metadata, while preserving transactional retries and shop request protection. = 1.2.92 2026-10-27 = #### Improvements * Add bounded post-visit timings for percentile preparation, aggregate writes, metric processing, metadata reads and persistence, and visitor and product callbacks under Data Parsing. = 1.2.91 2026-10-27 = #### Improvements * Reduce database writes during post-visit processing while preserving concurrent ingestion, crash recovery and safe retries. = 1.2.90 2026-10-27 = #### Improvements * Add bounded timings for aggregate processing, session lookups, order attribution and session completion under Data Parsing, without per-operation database writes or additional WooCommerce logs. = 1.2.89 2026-10-26 = #### Bugfixes * Keep the scrollable Stage timings panel readable on narrow screens by overriding the existing generic table-cell width limit. = 1.2.88 2026-10-26 = #### Improvements * Make expanded Stage timings wrap and scroll inside a keyboard-accessible region so long diagnostics remain readable. * Avoid evicting unrelated WordPress option caches when saving percentile samples, while preserving stale-sample invalidation, update hooks and transactional recovery. = 1.2.87 2026-10-26 = #### Improvements * Show percentile-sample payload size and detailed save-stage timings in Data Parsing diagnostics, without retaining event contents or changing parser persistence and recovery. = 1.2.86 2026-10-26 = #### Improvements * Show bounded per-stage Free parsing timings on the Data Parsing page without requiring WooCommerce logs. Distinguish cumulative checkpoints from operation timings and preserve older run summaries. = 1.2.85 2026-10-25 = #### Bugfixes * Keep analytics queue claims, acknowledgements and recovery stable during concurrent ingestion, preserving pending events for retry. * Preserve shop-request protection while coalescing parser sample writes, including safe first-time sample storage initialization. #### Improvements * Avoid repeated percentile-sample reads and writes during inline parsing and skip empty or unchanged sample updates. * Add claim and sample-stage timing plus safe database error diagnostics for parser troubleshooting. = 1.2.84 2026-10-25 = #### Improvements * Adapt raw statistics batch sizes to response times, with sequential paced requests and a hard row limit. * Reuse completed statistics for 15 minutes in the current browser tab, with a visible measurement timestamp and an explicit fresh refresh. = 1.2.83 2026-10-25 = #### Bugfixes * Measure raw analytics statistics in bounded, read-only batches with progress and cancellation, avoiding duplicate full-table scans and retention cleanup during measurement. * Index link visits by visitor to avoid full-table scans during link tracking. = 1.2.82 2026-10-16 = #### Bugfixes * Prevent parser and concurrent analytics writers from deadlocking by acquiring revision locks in a consistent order. * Queue shop analytics counters durably and recover interrupted processing without duplicating accepted observations, while preserving shop error protection. * Keep anonymous analytics requests lightweight and prevent dependent themes from loading after their required plugins have been excluded. = 1.2.81 2026-10-14 = #### Improvements * Clarify the analytics script loading setting and explain ordered deferred loading and the effect of other optimization plugins. = 1.2.80 2026-10-14 = #### Bugfixes * Never fail an add-to-cart or order completion when a product analytics counter cannot be written; report it instead. = 1.2.79 2026-10-14 = #### Bugfixes * Preserve tracking script dependency order when non-blocking loading is enabled. * Load footer analytics for logged-in customers while excluding accounts with site-administration permissions. = 1.2.78 2026-10-13 = #### Bugfixes * Fix analytics processing stalling when a visit has a user agent or screen resolution without visitor details. = 1.2.77 2026-10-13 = #### Bugfixes * Update WP Plugins Core to 0.1.57 for verified settings persistence and callback recovery. = 1.2.76 2026-10-11 = #### Bugfixes * Preserve caller-owned MySQL and MariaDB transactions when analytics processing succeeds, fails, or retries. * Harden analytics persistence, queue recovery, uploads, revision attribution, and reset failure handling. = 1.2.75 2026-09-04 = #### Enhancements * Use shared MySQL as the only authoritative runtime storage for raw analytics, parser runs, uploads, and cross-request recovery state. * Automatically and idempotently migrate pending filesystem and object-cache analytics during upgrades. * Make the default architecture safe for interchangeable active/active WordPress web nodes. = 1.2.74 2026-08-07 = #### Bugfixes * Ship the own-domain block-detection scripts in production packages to prevent repeated failed asset copies. = 1.2.73 2026-08-02 = #### Improvements * Preload every traffic-classification period with the General tab for instant period switching. = 1.2.72 2026-08-02 = #### Improvements * Show agent details only for traffic categories that represent actual automated agents. = 1.2.71 2026-08-02 = #### Improvements * Hide empty traffic groups and categories from the traffic-classification breakdown. = 1.2.70 2026-08-02 = #### Enhancements * Classify newly collected page views as human, user-directed AI, crawler, bot, or unknown traffic. * Add a responsive nested traffic-classification chart with hourly periods and per-agent details. * Keep user-directed AI in normal analytics while excluding crawlers and other automation. = 1.2.69 2026-07-30 = #### Enhancements * Retain every raw analytics request, including bot traffic, in an independent 10-day recovery archive. * Show archive row counts, sizes, and UTC capture ranges on the Data Parsing screen. * Download each request type's complete 10-day archive as JSONL. #### Maintenance * Remove expired daily archive partitions automatically and delete the archive when plugin data is removed. = 1.2.68 2026-07-28 = #### Enhancements * Detect bots with Matomo Device Detector while retaining WhichBrowser for browser, operating-system, and device dimensions. * Exclude detected bots from visitor analytics and the Premium conversion funnel while retaining the dedicated page bot counter. #### Bugfixes * Correlate UA-less bot follow-up requests through persisted, deduplicated visitor markers, including sessions that cross midnight. * Retain up to 1,000 human requests per request type for stable percentile calculations during bot-heavy traffic. * Show and export retained Premium AJAX request samples from the Data Parsing screen. = 1.2.67 2026-07-27 = #### Enhancements * Add a protected JSON download of the latest retained raw-request rows to the Data Parsing screen. = 1.2.66 2026-07-26 = #### Bugfixes * Capture the Cloudflare country header during client-side tracking and use FPA's independently maintained MaxMind database before the local WooCommerce fallback. * Preserve queued analytics rows when explicitly allowlisted fields are appended to a fieldset. * Keep the last working FPA MaxMind database when a scheduled replacement download fails. = 1.2.65 2026-07-24 = #### Bugfixes * Render Sources collapse arrows with CSS instead of a font glyph for consistent Chromium support and vertical alignment. = 1.2.64 2026-07-23 = #### Bugfixes * Prevent the `first-party-analytics` textdomain from loading before `init` by resolving the translated default source labels lazily. = 1.2.63 2026-07-13 = #### Maintenance * Bump the plugin version for distribution; no functional code changes. = 1.2.62 2026-07-03 = #### Bugfixes * Fix missing `media/` assets in the distributed package (broken chart placeholder image and no-JS tracking pixel) by no longer excluding the runtime `media/` directory from the build. = 1.2.61 2026-07-03 = #### Bugfixes * Fix "_load_textdomain_just_in_time was called incorrectly" notice by loading translations on the `init` hook (required since WP 6.7). = 1.2.60 2026-06-09 = #### Fixes * Action Scheduler Run Log: remove the per-row Duration column. The table lists one row per log entry (created / started / completed), so a per-action duration could not be shown coherently there and rendered as a misleading 0 or a blank. The average/maximum duration summary stats remain. = 1.2.59 2026-06-09 = #### Fixes * Action Scheduler duration stats: fix the average/maximum execution-duration figures excluding actions run via WP-CLI or on non-English locales. The start time was matched against the localized "action started" log message; it is now derived locale-independently from the action's log order, so all executed actions are counted. = 1.2.58 2026-06-09 = #### Enhancements * Settings → Advanced: add a "Show diagnostics submenus" toggle. When off (the default) the Data Parsing, Data Sharing, Data Recovery and Recovery Tables submenus are hidden from the admin menu to keep it uncluttered. The pages stay fully registered and reachable by direct link — only the menu entries are removed. = 1.2.57 2026-06-08 = #### Fixes * Data sharing: lower the default chunk size from ~90 MB to ~50 MB. A 90 MB chunk of a large, busy table (e.g. ~720k rows) could exceed the backend's per-request processing budget and fail with a 502; ~50 MB roughly halves each request's row count and insert time. Still overridable via the `first_party_analytics_data_sharing_chunk_bytes` filter — lower it further for very wide tables if needed. = 1.2.56 2026-06-08 = #### Enhancements * Data sharing: send each table in size-bounded chunks (~90 MB) via keyset pagination on `id`, so large tables stay under the upload gateway's request-body and timeout limits. Each chunk is its own Action Scheduler task; a failed chunk can be resumed mid-table from the last confirmed-sent row without re-sending earlier chunks. Chunk size is overridable via the `first_party_analytics_data_sharing_chunk_bytes` filter. * Data sharing admin: show per-table chunk progress (chunks sent and the row-id cursor) in the batched-runs breakdown and the in-progress row. #### Fixes * Data sharing: ensure tables larger than one chunk send **all** rows — previously a table could be marked complete after its first page, dropping the remaining rows. = 1.2.55 2026-05-29 = #### Fixes * Recovery Tables: stop WP admin's fixed-height `.tablenav` from cropping the multi-row filter bar. = 1.2.54 2026-05-29 = #### Enhancements * Add **Recovery Tables** admin submenu — read-only viewer for `data_recovery_runs`, `data_recovery_run_rows`, and the recovery slice of `page_visits` (rows where `recovery_run_id <> 0`). Per-column filter bar with operators `=`, `!=`, `>`, `>=`, `<`, `<=`, `LIKE`, `NOT LIKE`, `IS NULL`, `IS NOT NULL`, sortable columns, paging. = 1.2.53 2026-05-27 = #### Fixes * Data Recovery: bucket-level visit summing. When multiple URLs in the same import resolved to the same (post/term, day) — e.g. paginated archives, URL variants — extras were previously dropped by INSERT IGNORE and their visit counts lost. They are now summed into the surviving page_visits row. Each contributing input row is preserved in the run audit with outcome `merged_into_bucket`. = 1.2.52 2026-05-25 = #### Enhancements * Data Recovery: improved URL → WP object resolution. Collapse runs of leading slashes, strip `/page/N/` pagination suffixes before resolving, and walk all URL segments (not just the tail) when looking up nested hierarchical term archives. * Data Recovery: filter obviously-garbage URLs (zero-width characters, JSON-shaped junk, paths longer than 512 chars) before import — they are no longer inserted into `page_visits` as `object_id=0` rows. Filtered URLs are counted on the run row (`rows_skipped_garbage`) and recorded in the run drill-down with outcome `skipped_garbage` for auditing. = 1.2.51 2026-05-22 = #### Enhancements * Add "Data Recovery" submenu for importing historical analytics (TSV/CSV, with GA4 auto-detect) into `page_visits` for periods when First Party Analytics was not tracking. Auto-detects delimiter, header row, and known GA4 column names; lets the user override every choice before importing. * Each upload is recorded in two new tables — `data_recovery_runs` (one row per file, with status `uploaded` → `committed`) and `data_recovery_run_rows` (per-(day, url) outcome detail) — so every imported, skipped, or unresolved row is auditable. * Mark recovered `page_visits` rows with a new `recovery_run_id` column (0 for natively tracked rows) so they remain distinguishable from organic tracking data. * Only one upload may be pending at a time. Uploaded files are kept on disk for re-inspection/download even after commit; per-row Download + Delete actions on the runs table. = 1.2.50 2026-05-17 = #### Fixes * Store link-visit visitor IDs without casting them to PHP integers, preventing 20-digit tracking cookie values from collapsing to `9223372036854775807`. = 1.2.49 2026-05-17 = #### Fixes * Register `first-party-analytics-data-sharing-history` and `first-party-analytics-data-sharing-send-log` options so the Data Sharing admin screen no longer throws an "Unknown option name" fatal on load. = 1.2.48 2026-05-16 = #### Enhancements * Data Sharing: stage per-table CSVs inside the run dir (under `wp-content/uploads/first-party-analytics/data-sharing-runs/`) instead of the system temp dir, and make the stalled-run per-table breakdown horizontally scrollable on narrow screens. * Extracted shared on-disk-run FS plumbing (root dir, manifest read/write, has-any-in-progress) from `Raw_Analytics_Parsing\Builds` and `Data_Sharing\Runs\Runs` into a new abstract `Run_Storage` base class. ~200 lines of duplication removed; no behaviour change. = 1.2.47 2026-05-07 = #### Enhancements * Sort Batched Parse Runs by started time so newest runs appear first. = 1.2.46 2026-05-07 = #### Enhancements * Move the stalled batch build remove action into its own table column and match the uploaded file remove button style. = 1.2.45 2026-05-07 = #### Enhancements * Add a guarded delete button for stalled batch builds so stale build directories can be removed from the data parsing screen. = 1.2.44 2026-05-06 = #### Fixes * Restore async enqueueing for standard batch parse chain actions while keeping duplicate active action prevention. = 1.2.43 2026-05-05 = #### Fixes * Prevent duplicate active standard batch parse actions. * Enqueue standard batch chain actions asynchronously. = 1.2.42 2026-05-05 = #### Enhancements * Add upload analytics file table totals and selectable uploaded files for batch creation. * Add resume controls for stalled, failed, or missing batched parse run actions. * Add duplicate pending upload prevention by original filename. #### Fixes * Display AJAX request upload date ranges as dates without times. * Improve stalled and failed Action Scheduler status handling in parsing tables. = 1.2.41 2026-05-05 = #### Fixes * Show rescheduled Action Scheduler tasks as pending or running instead of stalled. = 1.2.40 2026-05-05 = #### Enhancements * Add a button to reschedule failed kind tasks. = 1.2.39 2026-05-05 = #### Fixes * Temporarily disable the data sharing Action Scheduler task. = 1.2.38 2026-05-05 = #### Enhancements * Improve file upload UI. = 1.2.37 2026-05-04 = #### Enhancements * Improve batches logic logging. = 1.2.36 2026-04-30 = #### Enhancements * Add good logging for batches creation. = 1.2.35 2026-04-30 = #### Enhancements * Improve batches logic logging. = 1.2.34 2026-04-30 = #### Enhancements * Improve batches logic. = 1.2.33 2026-04-27 = #### Enhancements * Optimize parsing. = 1.2.32 2026-04-17 = #### Enhancements * Move raw analytics storage from /tmp to /wp-uploads = 1.2.31 2026-04-15 = #### Enhancements * Add "Data parsing" page. = 1.2.30 2025-11-26 = #### Bugfixes * Improve queries and add indexes. = 1.2.29 2025-02-20 = #### Bugfixes * Deletes files from /tmp for Data_Sharing class. * PHP Warning: Undefined array key "standardEventsStartTimeDiffTime" in /src/database/class-standard-events-meta.php on line 94 * PHP Warning: Undefined array key "standardEventsStartTime" in /src/tracking/class-standard-events.php on line 56 = 1.2.28 2024-11-18 = #### Bugfixes * Fix settings rendering issue when checked for '1' though could check for true (bool). = 1.2.27 2024-11-18 = #### Bugfixes * Fix migrations, to not drop the tables. = 1.2.26 2024-05-07 = #### Bugfixes * Fix migrations, to not drop the tables. = 1.2.25 2024-05-03 = #### Enhancements * Move actions scheduling to constructors. = 1.2.24 2024-05-02 = #### Enhancements * Use standard Action Scheduler interval. * Update WP-Plugins-Core. = 1.2.22 2023-04-07 = * Use migrations for databases, instead of DBDelta. * Add a separate tables for object_type to all tables where post_id was (not it's object_id). * Fix the table. = 1.2.21 2023-03-24 = #### Enhancements * Use 'visibilitychange' instead of 'beforeunload' (with 'pagehide' fallback). * Add 'isTrusted' check to all events. #### Optimizations * Check for changed URL with the 1000 ms interval instead of 100 ms. = 1.2.20 2023-03-01 = #### Bugfixes * Change catalog_viewed_products from 'saffy-placeholder-post' to 'speedsearch-placeholder-post'. * Fix the products viewed in catalog tracking logic (to not add duplicates, or the products that are already being tracked). * Fix the POST requests storm (add a rate limit). * Fix Undefined array key error (in many places). = 1.2.19 2023-09-12 = #### Enhancements * Improved client-side filtering of "number" input fields (only digits are allowed now). = 1.2.18 2023-09-09 = #### Enhancements * Use wp_options table instead of cache for the lock of migrations. * Change visitor_id table column type from VARCHAR(255) to DECIMAL(20,0). * Add a support for standard events collection (sessions trace for the Premium plugin). * Add a support for plugin data CSV export. #### Bugfixes * Fix missing public suffix. * Fix get_domain_data() call. = 1.2.6 2023-07-18 = #### Enhancements * Set min PHP version to 7.4. = 1.2.4 2023-07-16 = #### Enhancements * Add a notice when the plugin is being updated instead of blocking the whole logic. = 1.2.3 2023-07-12 = #### Bugfixes * Make the plugin to work with cache. = 1.2.0 2023-06-12 = #### Enhancements * Load FE scripts async. = 1.1.49 2023-06-10 = #### Bugfixes * Delete wp_date() from standalone script. = 1.1.48 2023-05-23 = #### Enhancements * Use beacon flexibly: for all requests when they are below the size of the beacon limit. = 1.1.45 2023-05-15 = #### Bugfixes * Bundle prebid-ads.js and analytics.js. = 1.1.44 2023-05-14 = #### Bugfixes * Write data in WP-localized date format. = 1.1.43 2023-05-08 = #### Bugfixes * MU-plugin fixed. * Many minor fixes. = 1.0.96 2023-02-27 = #### Bugfixes * Visitor details unique key fix (now is based on key + value, previosuly was just on key). * Save visitor details only when they are present (i.e. no "empty" write for BE-only request - as it writes only once due to is_unique). * Use post_id (when available) instead of post_url for marking/detecting unique visits - less false positives (for uniqueness detection). = 1.0.80 2023-02-20 = #### Enhancements * Support for FPAP adblock buster feature. = 1.0.80 2023-02-18 = #### Bugfixes * Min PHP version required downgraded to 7.2. = 1.0.79 2023-02-15 = #### Bugfixes * Mitigate BF cache effect on metrics. = 1.0.76 2023-02-15 = #### Bugfixes * Min PHP version required downgraded to 7.4. = 1.0.73 2023-02-09 = #### Enhancements * Added "BF (Back-Forward) cache present" collection and representation. #### Bugfixes * Web vitals DB fix (when incremented "needs_improvement" instead of "poor" vitals). * Record 0 for web vital values (previosuly was considered as '' (null)) - now no string convertion is done, which helps to preserve the real original values. * Raw requests storage reset of requests structure change. = 1.0.71 2023-01-29 = #### Enhancements * Changelog added.