v2.5.2
v2.5.2 — conversion page-scope correctness (2026-06-01)
Two silent data-integrity fixes for conversion page-scope matching (PRs #49 and #50), merged to main after 2.5.1. One bug dropped real conversions; the other invented false ones. Neither surfaced a user-facing error. No schema changes, no migrations. Plugin constant ELEMENTTEST_VERSION is now 2.5.2 (JS VERSION synced to match).
Fixes
-
Conversion tracking on bare vs
www.host variants (PR #49). Non-pageview conversions (click, form submit, custom event, add-to-cart) were silently dropped when a test's configured page URL used one host form (e.g.example.com) but the visitor was served the same page on the other (www.example.com), or vice versa. The frontend activates tests by path only, so those visitors saw variants and recorded impressions, but the conversion AJAX failed the server-side page-scope check and lost the conversion with no error. Fix: canonicalize a leadingwww.innormalize_conversion_url()before the host/port/path comparison so the conversion-write check matches the host-agnostic, path-based frontend delivery. Different paths and unrelated domains still fail the check. -
Cached cross-page pageview conversion over-counting (PR #50). A full-page cache keyed only by path could serve HTML generated for a query-string-specific cross-page pageview goal (e.g.
/checkout/order-received/?key=wc_order_*) to a later visitor on the same path with a different query string. The browser trusted the server-baked goal payload and recorded the conversion directly, producing a false conversion (and, when GA4 forwarding was enabled, a falseelementtest_convertedevent) and corrupting A/B data on cached checkout/thank-you flows. Fix: cross-page conversion-only pageview goals now re-validate the live browser URL with the same matcher normal pageview goals use before recording. Triggers containing?or#still require an exact URL match. -
Client-side pageview path matching now mirrors the server (PR #50). A new path-normalization step lowercases and trims trailing slashes from both the current path and the trigger before comparison, so the cached-safe client re-check never rejects a conversion the server already approved over a trailing-slash or letter-case difference.
-
Internal: JS
VERSIONconstant inassets/js/frontend.jssynced to 2.5.2 (per the 2.3.9 sync convention).
See CHANGELOG.md for the full technical changelog.
Install
Download elementtest-pro-2.5.2.zip from Assets below. Unzip so WordPress has a top-level elementtest-pro/ folder under wp-content/plugins/, then activate ElementTest Pro.