Title: ImproveAB: A/B Testing
Author: ImproveKit
Published: <strong>October 20, 2026</strong>
Last modified: October 20, 2026

---

Search plugins

![](https://ps.w.org/improveab-ab-testing/assets/banner-772x250.png?rev=3756466)

![](https://ps.w.org/improveab-ab-testing/assets/icon-256x256.png?rev=3756466)

# ImproveAB: A/B Testing

 By [ImproveKit](https://profiles.wordpress.org/improvekit/)

[Download](https://downloads.wordpress.org/plugin/improveab-ab-testing.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/improveab-ab-testing/#description)
 * [Reviews](https://wordpress.org/plugins/improveab-ab-testing/#reviews)
 *  [Installation](https://wordpress.org/plugins/improveab-ab-testing/#installation)
 * [Development](https://wordpress.org/plugins/improveab-ab-testing/#developers)

 [Support](https://wordpress.org/support/plugin/improveab-ab-testing/)

## Description

**ImproveAB is a free A/B testing and split testing plugin for WordPress** that 
works with _any_ page builder or theme – Elementor, Bricks, Etch, the block editor(
Gutenberg), Beaver Builder, Divi, Oxygen, Breakdance, Kadence, GeneratePress, Astra,
or a classic theme. Test which headline, button, layout, or landing page converts
best, then ship the winner with confidence – all from your WordPress dashboard, 
with **unlimited tests**, **no traffic limits**, **no cookies**, and **no third-
party cloud**.

Stop guessing. Show two versions of a page or element to real visitors at the same
time, measure which one wins on a goal you choose, and make data-driven decisions
that lift your conversion rate.

#### Free means free

No limits and nothing held back: **unlimited tests** running at once, **unlimited
pageviews and visitors**, **up to six variants** per test, and **every goal type**,
WooCommerce add-to-cart and purchase with revenue included. Nothing in this plugin
is locked or limited.

**It works with any builder, has no visitor limits and keeps your visitors’ data
on your own site.** Variants are matched with a simple CSS class, so it works everywhere;
everything runs on your own site, so there are no pageview fees; and assignment 
happens in the browser, so it’s compatible with caching and CDNs and sets no cookies.

#### Self-hosted A/B testing

ImproveAB runs inside your site instead of a separate cloud dashboard, and it never
meters your traffic. If you used Google Optimize before it shut down in 2023, the
workflow will feel familiar: create a test, choose a goal, and read the results 
without leaving your dashboard.

#### Built for any page builder

Element tests target a CSS class, and every major builder has a field for one, so
the same plugin works on every site you build, whichever builder or theme it uses.
No lock-in.

#### What the free plugin does

 * **Element and section tests** – A/B test a headline, button, hero section, call
   to action, pricing table, image, or whole layout on a page using a simple CSS
   class.
 * **Ship the winner instantly** – once you declare a winner, keep showing it to
   every visitor with one click until you have updated the page itself. No tracking,
   no flicker, works for element, point-and-click and full-page tests.
 * **Goals that match how sites convert** – page visit (thank-you page), element
   click, link click, form submission (Contact Form 7, WPForms, Gravity Forms, Fluent
   Forms, Ninja Forms, Formidable, Forminator, or any plain form), and WooCommerce
   add-to-cart.
 * **Point-and-click test creation** – while logged in, click “A/B Tests” in the
   admin toolbar on any page, click the headline or button you want to improve, 
   type the new wording, and start the test. No builder, block editor, or code involved.
   A section opens as one field per text and image, with its layout kept as it is,
   and any field or the whole element can be edited as HTML. If you pick a big or
   interactive block (a form, a product grid, more than 30 elements), the panel 
   says so and offers to pick a smaller part or keep the block.
 * **Full-page split (URL) tests** – split traffic between two page URLs with an
   automatic, SEO-safe redirect. Ideal for comparing entire landing-page designs–
   including a variant on a second WordPress site at a subdomain such as new.yoursite.
   com, with the free plugin installed on both.
 * **A/B and A/B/n testing** – the original against one new version, or up to six
   variants in one test.
 * **As many tests as you like** – no limit on how many run at once.
 * **Conversion goals** – page visit (e.g. reaching a thank-you page), element click,
   link click, form submission, WooCommerce add-to-cart and purchase (with revenue),
   scroll depth, time on page and active time.
 * **Page targeting** – an element test runs on every page where its classes are
   found, so a header button or nav link is tested site-wide; a point-and-click 
   test starts on the page you picked it on. Either can run only on paths matching
   a pattern (/blog/*), everywhere except those, or on every page where its element
   exists; with plain permalinks a pattern names a page by its query (/?page_id=
   12).
 * **Clear results** – impressions, conversions, and conversion rate per variant,
   with the leading variant highlighted, a device breakdown, a day-by-day chart 
   and CSV export.
 * **Traffic split warning** – the plugin checks that visitors are divided between
   your versions the way the test planned. When the gap is too big to be chance,
   the results page says so first, with the likely causes and the fix, and the test
   is tagged “Split off” in the tests list, the admin-bar menu and the dashboard
   widget, so you never act on a broken test.
 * **Flicker-free** – visitors never see the wrong version flash before the right
   one loads.
 * **Cookieless and cache-friendly** – assignment happens in the browser, so it 
   works behind page caching and CDNs and sets no cookies.
 * **No traffic limits** – no view caps and no visitor limits, ever.
 * **Sample-size and duration calculator** – estimate how many visitors and days
   you’ll need before you start, with plain-language guidance, right inside the 
   guide.
 * **Edit tests safely** – names, notes and labels any time; the goal and pages 
   with a clear confirmation on live tests, so collected data is never mixed by 
   accident.
 * **Notes and shareable summaries** – keep your hypothesis and learnings with each
   test, and download a plain-text results summary or email it to yourself.
 * **A dashboard you can actually scan** – status filters, pagination, bulk pause/
   stop/delete, visitors and conversion rate at a glance, and a wp-admin dashboard
   widget of your running tests.
 * **SEO handling, your way** – while a URL test runs, variant pages canonical to
   the original (Google’s recommendation), get a noindex, or are left entirely to
   your SEO plugin – your choice; the original page is never touched.
 * **Built-in guide and intro tour** – a plain-English guide to planning, running,
   and reading tests, plus a one-minute replayable intro tour.
 * **Your data stays yours** – deleting the plugin keeps your tests, results and
   settings by default, with an optional clean-delete setting.
 * **Private by design** – no account required, and nothing is ever sent to us or
   to any third party.

#### Who it’s for

 * **Bloggers and content sites** testing headlines and calls to action to grow 
   signups.
 * **WooCommerce stores** testing product copy, buttons, and layouts, with purchase
   and revenue goals.
 * **Marketers and landing-page builders** comparing whole page designs without 
   a monthly SaaS bill.
 * **Freelancers and agencies** who want one tool that works on every client site,
   on any builder.

#### At a glance

 * **Where it runs:** on your own server.
 * **Pricing:** free, with no pageview meter.
 * **Data:** stays in your WordPress database. No test data is sent to us or any
   third party.
 * **Builders:** any builder or theme.
 * **Performance:** no flicker, and fully compatible with caching and CDNs.
 * **Code:** GPLv2 and open – read it, audit it, adapt it.

#### ImproveAB Pro

ImproveAB Pro is a separate, complete version of this plugin that adds statistics,
automation, audience targeting, uneven traffic splits, custom CSS, webhooks, a settings
screen for role access and AI tools. You download it when you buy it and upload 
it yourself in this plugin’s place; it keeps every test, result and setting. This
plugin never downloads or installs anything, and never needs Pro. [Learn more](https://improveab.com/pricing/).

On the roadmap for this plugin: exporting and importing tests between sites (next
release), then a learnings archive of completed tests, test templates and WP-CLI
commands. Multivariate testing is being researched.

#### Privacy

ImproveAB is built privacy-first. It sets no cookies and requires no visitor account.
To keep a visitor on the same variant, a random, pseudonymous identifier is stored
in their browser’s local storage. Your own database keeps a row when a visitor first
sees a test, and one more if they convert, with that identifier, the version they
saw, their device type (desktop, tablet or mobile), when it happened and, for a 
conversion, the path of the page it happened on (never its query string, and for
a purchase without the order’s number) and, for a purchase, the order total less
any refund; never a name, an email address or an IP address. A WooCommerce order
it counts also gets a note on the order itself: that identifier, the test, the version,
the device type and when the purchase was counted, so each order counts once and
a refund or a cancellation comes off the right result (an order still waiting for
payment carries the same note until it is paid). An order holds its buyer’s details,
so in your store’s own database the identifier is then linked to that order; the
note goes when the order is deleted, and when you remove the plugin with “Delete
all data when the plugin is removed” switched on. Once a test has ended, its rows
are compacted into daily totals after the retention period (90 days by default, 
adjustable in Settings). No test data is sent to us or any third party. To limit
abuse, the event endpoint counts requests per address and minute under a salted,
one-way hash; the counts are deleted by the plugin’s nightly clean-up at the latest,
and nothing else is kept about the address. This makes it easier to run tests in
a privacy-respecting, GDPR- and CCPA-conscious way.

This plugin contacts no external service: it loads nothing from other servers, sends
nothing to us or to any third party, and needs no account.

A test’s name is not private. Its short form names an element test’s CSS classes
and the key a visitor’s browser keeps for the test, so it is in your pages’ source,
where anyone can read it: an element test’s from the moment it is saved (drafts 
and paused tests too, whose other versions a rule in the page keeps hidden), any
other test’s while it runs or keeps showing its winner. Choose names you are happy
for visitors to see.

#### Credits

The admin screens and the point-and-click panel use the Hanken Grotesk typeface (
Copyright 2021 The Hanken Grotesk Project Authors), bundled with the plugin under
the SIL Open Font License 1.1; the license is in assets/fonts/OFL.txt. Nothing is
loaded from a font service.

To tell this site’s own pages from another customer’s on a shared name (co.uk, web.
id, github.io), the plugin bundles the Public Suffix List (https://publicsuffix.
org/, Copyright Mozilla Foundation and contributors) as includes/data/public-suffix-
list.php, under the Mozilla Public License 2.0; its notice is in the file’s header.
The list is read from that file; nothing is fetched.

Two icons in the Settings screen, the bell and the webhook hook, are from Lucide(
Copyright Lucide Contributors 2022, portions Copyright Cole Bemis 2013-2022 as part
of Feather), used under the ISC License; the notice is beside them in assets/js/
admin.js.

## Screenshots

[⌊A/B test results on the free plan: the conversion rate, visitors and conversions
of each version, the winner, and a breakdown by device. Export to CSV or download
a summary.⌉⌊A/B test results on the free plan: the conversion rate, visitors and
conversions of each version, the winner, and a breakdown by device. Export to CSV
or download a summary.⌉[

A/B test results on the free plan: the conversion rate, visitors and conversions
of each version, the winner, and a breakdown by device. Export to CSV or download
a summary.

[⌊Point-and-click A/B testing: pick a headline or button on your page, type the 
new version, choose a goal and start the test from the front end. No page builder
needed.⌉⌊Point-and-click A/B testing: pick a headline or button on your page, type
the new version, choose a goal and start the test from the front end. No page builder
needed.⌉[

Point-and-click A/B testing: pick a headline or button on your page, type the new
version, choose a goal and start the test from the front end. No page builder needed.

[⌊All your tests at a glance: status, visitors and conversion rate for each, and
the winner of a stopped test. Run as many tests at once as you like.⌉⌊All your tests
at a glance: status, visitors and conversion rate for each, and the winner of a 
stopped test. Run as many tests at once as you like.⌉[

All your tests at a glance: status, visitors and conversion rate for each, and the
winner of a stopped test. Run as many tests at once as you like.

[⌊Pick a whole section and every text and image is its own field: swap images from
the Media Library, see which fields changed, and undo any step.⌉⌊Pick a whole section
and every text and image is its own field: swap images from the Media Library, see
which fields changed, and undo any step.⌉[

Pick a whole section and every text and image is its own field: swap images from
the Media Library, see which fields changed, and undo any step.

[⌊Element tests for any builder: copy the CSS class for each version into Elementor,
Bricks, the block editor or any other builder, then start the test.⌉⌊Element tests
for any builder: copy the CSS class for each version into Elementor, Bricks, the
block editor or any other builder, then start the test.⌉[

Element tests for any builder: copy the CSS class for each version into Elementor,
Bricks, the block editor or any other builder, then start the test.

[⌊Choosing a conversion goal, here a visit to a thank-you page. Clicks, form submissions,
WooCommerce add to cart and purchases with revenue, scroll depth and time on page
are all free too.⌉⌊Choosing a conversion goal, here a visit to a thank-you page.
Clicks, form submissions, WooCommerce add to cart and purchases with revenue, scroll
depth and time on page are all free too.⌉[

Choosing a conversion goal, here a visit to a thank-you page. Clicks, form submissions,
WooCommerce add to cart and purchases with revenue, scroll depth and time on page
are all free too.

[⌊A full-page split URL test with automatic, SEO-safe canonical handling.⌉⌊A full-
page split URL test with automatic, SEO-safe canonical handling.⌉[

A full-page split URL test with automatic, SEO-safe canonical handling.

[⌊The built-in sample size and test duration calculator.⌉⌊The built-in sample size
and test duration calculator.⌉[

The built-in sample size and test duration calculator.

[⌊The A/B Tests menu in the admin bar: start a test on the page you are looking 
at, and see your tests grouped by state.⌉⌊The A/B Tests menu in the admin bar: start
a test on the page you are looking at, and see your tests grouped by state.⌉[

The A/B Tests menu in the admin bar: start a test on the page you are looking at,
and see your tests grouped by state.

[⌊The plain-English guide built into the plugin.⌉⌊The plain-English guide built 
into the plugin.⌉[

The plain-English guide built into the plugin.

## Installation

 1. Upload the plugin to `/wp-content/plugins/improveab-ab-testing/`, or install it
    from **Plugins  Add Plugin** in your dashboard and search for “ImproveAB”.
 2. Activate it through the **Plugins** screen.
 3. Open **A/B Testing** in the admin menu and create your first test from **New test**.
 4. For element tests, build both versions of the element on the page and add the CSS
    class shown to each version in your builder’s CSS-class field (the plugin lists
    where that field is for each builder). For URL tests, build each variant as its
    own published page and paste the URLs. Or skip the builder entirely: open any page
    while logged in and choose “A/B Tests  Start a test on this page” in the toolbar.
 5. Choose a goal, press **Save and start**, and watch results come in.

A full step-by-step guide is built into the plugin, and more guides are at [improveab.com/resources/](https://improveab.com/resources/).

## FAQ

### Is it really free?

Yes. The plugin is GPL-licensed and free forever, with no pageview or traffic limits.
It runs complete A/B and A/B/n tests on its own, as many at once as you like, with
every goal type and page targeting.

### Does it work with my page builder?

Yes. Element tests target a CSS class, which every major builder lets you add. Build
both versions of the element on the same page, then paste the class the plugin gives
you onto each version (the first class on the original, the second on the new version).
Where the field is:

 * **Block editor (Gutenberg), Kadence Blocks, GenerateBlocks, Spectra:** select
   the block, open the Settings sidebar, expand Advanced, paste into “Additional
   CSS class(es)”.
 * **Elementor 4** (the default for new sites): select the element, paste the class
   into “Classes” on the Style tab. **Elementor 3**, and legacy widgets inside Elementor
   4: open the Advanced tab, paste into “CSS Classes”. Both can appear on one page,
   so go by which tab the element offers.
 * **Bricks:** select the element and type the class into the selector input in 
   the left panel, just under the element’s name.
 * **Etch:** select the element and add the class in its class / selector input.
 * **Divi 5:** open the element settings, Advanced, open Attributes, choose “+ Add
   Attribute” and add one named “class”. **Divi 4:** Advanced, expand “CSS ID & 
   Classes”, paste into “CSS Class” – those fields are gone in Divi 5.
 * **Beaver Builder:** open the module (or row / column) settings, Advanced tab,
   paste into “Class” under HTML Element – not the CSS Selectors box.
 * **Oxygen 6:** select the element and add the class in the Classes control of 
   the Properties panel. **Oxygen Classic:** open “Choose selector…”, then “Add 
   Class”.
 * **Breakdance:** select the element, open Settings, expand Advanced, add the class
   under Classes.
 * **WPBakery:** edit the element and paste into “Extra class name” (near the bottom
   of the General tab).
 * **Avada:** open the element options in Avada Builder, Extras tab, paste into “
   CSS Class”.
 * **GeneratePress, Astra, Kadence and other block themes:** page content is blocks,
   so use the block editor steps.
 * **Classic theme or hand-written HTML:** add the class to the element’s class 
   attribute.

Builder not listed? Any field named CSS class, Additional CSS class(es), Extra class
name or Attributes will do. The same steps are shown inside the plugin, next to 
the classes, with a Copy button. Point-and-click tests and URL tests need no class
at all.

Until a test is started, visitors see the original version only; the new version
stays hidden, so you can add the classes whenever you like. Only deleting a test
removes its hiding rule, so remove the extra markup from the page first.

### Is there a traffic or visitor limit?

No. Because tests run on your own site, there are no view caps, no visitor limits,
and no overage bills.

### Will visitors see a flash of the wrong version?

No. The plugin hides untested variants until the assigned one is ready, so the page
reveals flicker-free.

### Does it work with a strict Content Security Policy?

Yes. The runtime is a normal external script, its configuration is an inert JSON
block, and the small inline scripts (anti-flicker reveal and URL-split redirect)
are printed through WordPress’ inline-script functions, so a CSP tool that gives
WordPress’ inline scripts a nonce gives these one too. The anti-flicker rules are
inline styles that WordPress itself prints, like any theme’s or plugin’s: a CSP 
tool that adds nonces to the inline style tags WordPress prints covers this plugin’s
too, and the plugin’s script gives the styles it adds the same nonce. Without such
a tool, a policy that refuses inline styles refuses the anti-flicker rules as well:
the page can show more than one version for a moment, until the plugin’s script 
runs, and from then on exactly one version.

### Does it set cookies or send my data to a third party?

No cookies, and nothing is ever sent to us. Visitor and test data never leaves your
site: a random, pseudonymous identifier is stored in the visitor’s browser so they
keep seeing the same version, and your own database records which version that identifier
saw and whether it converted, with the device type and the time. No names, emails
or IP addresses are stored with your results.

### Does it work with caching and CDNs?

Yes. Variant assignment happens in the visitor’s browser, so the same cached HTML
can be served to everyone. It works behind page caching plugins and CDNs, with no
cache exclusions needed.

One detail is handled for you: a small snippet in every page’s head changes when
a test starts or stops, so cached copies made before that moment are stale. The 
plugin purges the page cache at those moments when it recognises the cache: WP Rocket,
W3 Total Cache, WP Super Cache, LiteSpeed Cache, WP Fastest Cache, Cache Enabler,
Hummingbird, Breeze, Autoptimize, SiteGround Optimizer, Nginx Helper, WP Engine,
Kinsta, Pantheon and the Cloudflare plugin. With any other cache or CDN, clear it
yourself right after starting or stopping a test (developers can hook the `improveab_purge_caches`
action).

If your site sits behind a proxy or CDN that hides visitors’ addresses from WordPress,
the plugin’s per-address rate limit for tracking events (600 a minute) is shared
by everyone behind that address. Cloudflare is recognised automatically, and so 
is a reverse proxy on a private address that appends the visitor’s address to X-
Forwarded-For; for any other proxy, restore the real address at the web server or
return it through the `improveab_client_ip` filter.

### Does it work with script optimizers (WP Rocket, Autoptimize, LiteSpeed Cache, Perfmatters, Cloudflare Rocket Loader)?

Yes. The plugin marks its own tags so optimizers leave them alone and adds itself
to the exclusion lists of WP Rocket, Autoptimize, LiteSpeed Cache, Perfmatters and
SiteGround Optimizer automatically. If you use a tool that only has a settings screen(
Flying Scripts, WP Fastest Cache’s delay, Asset CleanUp), exclude `runtime.js`, `
improveab-pending` and `improveab-redirect`: the two small inline scripts must run
before the page paints and the runtime must not wait for the first click. If they
are delayed anyway, tested elements are still revealed after two seconds and no 
visitor is ever stuck, but the flicker-free hiding and the URL split redirect happen
later than intended and results from that period deserve caution.

### Do ad blockers stop it?

Not with the lists they ship with. uBlock Origin, AdGuard, Brave and similar blockers
work from public lists of ad and tracker addresses, and cloud testing tools, which
load from their own servers, are on those lists. This plugin’s script and its tracking
address are on your own site, and before each release they are checked against EasyList,
EasyPrivacy and the uBlock Origin and AdGuard lists. A visitor whose browser runs
no scripts or stores nothing sees the original version and is not counted, and anyone
can still block a site’s files by hand.

### Emails from the plugin don’t arrive. Is it broken?

Almost certainly not the plugin. Every email it sends (the “Email summary” button
on a test’s results page) goes out through your site’s own WordPress mail, the same
route as password-reset emails. The plugin has no mail server of its own. If the
summary does not arrive, check spam first, then press “Email summary” again: when
the mail server refuses, the page shows the server’s own error message. The fix 
is on the hosting side: install an SMTP plugin (WP Mail SMTP, FluentSMTP, Post SMTP
or similar), connect a mail service, and send its test email. Once that works, the
plugin’s emails work too. Nothing is ever emailed to your visitors.

### Can the same visitor see both versions?

Rarely. Assignment is stored in the browser’s local storage, so it is per browser
and per device: one person on a phone and a laptop counts as two visitors, and clearing
site data or using a private window starts over. Safari and iOS also delete script-
written storage after seven days without a visit to your site, so a visitor who 
returns later than that on Safari may be assigned again. This is inherent to cookieless
testing and rare enough not to move a result; run tests for a week or two and read
the final numbers.

### Why are the numbers different from Google Analytics?

They are meant to be. The plugin counts people, not pageviews or sessions: a visitor
is counted once per test however many pages they view, and each conversion once 
per person. A visitor is only counted when the tested element was actually on the
page they loaded and the test was running. Logged-in staff are always excluded, 
events from crawlers and headless browsers are dropped, visitors with JavaScript
or site storage blocked see the original and are not counted, and a conversion only
counts for someone who was entered into the test. Expect the plugin’s visitor numbers
to be below your analytics users and well below pageviews; what matters is that 
both versions are counted the same way.

### My variant is not showing, or both versions show at once

While a test is Running, each visitor sees their assigned version; while it is a
draft, paused, or stopped without a kept winner, everyone sees the original and 
the other versions stay hidden (only deleting a test stops the hiding, so remove
the extra markup first). If both versions show at once, the classes are on the page
but the plugin’s small head snippet is not: the page is a stale cached copy, or 
the plugin is not active on that site. While a test runs: logged-in staff always
get the original, so check in a private window; make sure the variant’s class is
on the new version of the element on that page; and clear your page cache and CDN
if the cached copy predates the start. To see a specific version regardless, open
the page with `?improveab=your-test-slug&improveab_variant=v1` added to the address(
nothing is recorded). If a running test shows both versions to everyone, the plugin’s
script is not executing on that page: a speed plugin is delaying JavaScript (exclude`
runtime.js`), another script on the page throws an error, or the page is a stale
cached copy. No visitors recorded at all usually means a security or firewall plugin
is blocking the WordPress REST API for visitors; the `improveab/v1/event` route 
must answer for logged-out visitors.

### Can I test a redesign on a different domain or subdomain?

Yes. A full-page URL test can send part of your traffic to a variant hosted on another
WordPress site. Install the free plugin on both sites, create the URL test on the
original site and use the redesign’s address (for example new.yoursite.com/pricing/)
as the variant. Visitors are split between the two sites and every result is collected
on the original. The original site must use https. A subdomain of your site works
as it is (on a shared name such as co.uk or a host’s site address, your own name
is the domain, so another customer’s site never counts as yours); for a different
domain altogether, the variant’s site must name the original’s domain with the `
improveab_handoff_hosts` filter, or no conversion is reported back. A domain with
international characters works however it is stored (as typed, or in its xn-- form).
Keep both sites on the same release and update them together: a site still on an
earlier release can lose the conversions it reports back in some browsers. Your 
own address with or without www. is the same site, so the variant’s site needs a
name of its own. For a redesign on the same domain, a standard URL test is all you
need. See “Testing across two sites or subdomains” in the built-in guide for the
SEO notes.

### My site also answers under another domain. Are visits there counted?

Visits are counted from pages on your site’s own address (Settings, General, Site
Address) and on any subdomain of its domain, so www. and the like are covered. If
the same site also answers under another domain without sending visitors on to that
address (a second brand’s domain, a language on a domain of its own), the plugin
cannot tell its pages there from another site’s, so visits there record nothing.
Redirect that domain to your site’s address, or name it with the `improveab_handoff_hosts`
filter: `add_filter( 'improveab_handoff_hosts', function ( $hosts ) { $hosts[] ='
example.net'; return $hosts; } );`

### Can I move my site to a new address with tests on it?

Yes. Migration and search-replace tools (WP-CLI, Better Search Replace, your host’s
migration tool) update the plugin’s tables like any other, as long as the tables
whose names contain `improveab_` are included. Visitors’ versions are remembered
by their browser for each address, so after a move to a new domain a running test
sees every visitor as new. Where you can, start tests after the move.

### Will A/B testing hurt my SEO?

No. Element tests change content client-side and don’t create duplicate URLs. For
URL/redirect tests, each variant page is given a canonical tag pointing to the original(
works alongside Yoast and Rank Math), so search engines understand they’re variants
of one page.

### Can I use it in place of Google Optimize?

Yes. Google Optimize was shut down in 2023. ImproveAB runs A/B tests inside WordPress,
with no traffic limits and no external dashboard.

### Can I test WooCommerce products?

You can test any element or page, including WooCommerce product and shop pages. 
A purchase can be the conversion goal, with revenue and revenue per visitor shown
per variant. It counts paid WooCommerce orders. An order waiting for payment counts
when it is paid; refunds and cancellations are taken off its revenue. So a stopped
test’s purchase figures can still move a little: an order placed while it ran counts
once it is paid, a deleted refund goes back on, and a cancelled order (cash on delivery
that never arrived, say) gives its revenue back until it is paid after all.

### Does it slow down my site?

It’s built to be lightweight. Visitors load one small script (about 18 KB compressed),
deferred on WordPress 6.3 and later, plus a few lines in the page head that keep
the wrong version from flashing; nothing is fetched from third-party servers, no
cookies are set, and pages stay fully cacheable. Results are read from your own 
database only in wp-admin.

### Is it GDPR-friendly? Do I need a cookie banner for it?

The plugin was designed for privacy: it sets no cookies, loads nothing from third
parties, and stores no IP addresses with your results. A random identifier saved
in the visitor’s own browser keeps their assigned version consistent, and your database
records which version that identifier saw and whether it converted, compacted into
daily totals once a test has ended and the retention period has passed. Whether 
you need visitors’ consent for this depends on the laws that apply to your site,
so review it with your own privacy policy or counsel. If you ask for consent first,
a consent tool can hold the plugin’s script back (developers can use the `improveab_enabled`
filter); visitors without consent see the original version and are not counted.

### Can I edit a test after creating it?

Yes. The name, description, notes and variant labels can be changed at any time.
The goal and pages can also be changed on a live test, after a clear warning, since
data already collected followed the old rules. Variant URLs are only editable while
a test is still a draft; to try different pages once it has started, duplicate the
test.

### How long should I run a test?

Until it reaches the sample size you planned, and always in full weeks so weekday
and weekend behaviour are both covered. The built-in calculator (in the Guide) estimates
the visitors and days you need from your traffic and conversion rate before you 
start. Until then the results page names the variant with the highest rate so far(“
Variant B leads so far.”): that is a reading, not a test of significance, so decide
at the sample size you planned and then declare the winner.

### What happens to my data if I uninstall the plugin?

By default, nothing is lost: deleting the plugin keeps your tests, results and settings,
so you can reinstall later and pick up where you left off. If you prefer a complete
clean-up, turn on “Delete all data when the plugin is removed” in Settings before
uninstalling: every table, option and user setting the plugin made is then removed,
whichever version of it made them. If ImproveAB Pro ran on the site before, deactivate
its license on its License screen before you install this plugin in its place: this
plugin cannot release a license, so a license still active stays counted against
your plan until you release it in your account.

### What happens to my pages if I deactivate the plugin?

Your tests and results stay. URL split tests stop redirecting and point-and-click
changes stop showing, so visitors see your original pages. Element tests are different:
every version you built is in the page itself, and only the plugin hides the ones
a visitor should not see, so while it is deactivated visitors see every version 
at once. Remove the versions you no longer need from your pages before deactivating,
or keep the plugin active. The Plugins screen reminds you while element tests exist.

### Can editors or other roles manage tests?

Yes. Administrators manage tests, and the plugin checks its own capability, `improveab_manage_tests`,
the standard WordPress way: any role you give it can create, run and read tests 
in this free plugin. Give it with WP-CLI (`wp cap add editor improveab_manage_tests`)
or with any role editor plugin. Settings, and a URL test’s version on another site,
stay with administrators. ImproveAB Pro only adds a settings screen for choosing
the roles; this plugin’s Settings names every role that holds the capability, each
with a button to take the access back.

### Can I share results with my team?

Yes. Every test has a one-click plain-text summary you can download, or email to
yourself and forward, including the variants, numbers, verdict and your notes.

### Does it work on WordPress multisite?

Yes, per site. Each site in the network gets its own tests, results and settings.
Network activation installs the plugin on every existing site, and a site created
later sets itself up on its first page load. You can also activate it on individual
sites only.

### Can I create a test without touching my page builder?

Yes. While logged in as an administrator, open any page of your site, click “A/B
Tests” in the admin toolbar and choose “Start a test on this page”. Click the element
you want to improve, write the alternative wording, choose a goal, and start the
test. The plugin swaps the text for visitors assigned to the variant; your page,
theme, and builder are never modified. If the element contains inline formatting,
such as “This is a heading in hero.” with a differently colored word, it opens as
editable HTML so you can keep the tags and change only the words.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“ImproveAB: A/B Testing” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ ImproveKit ](https://profiles.wordpress.org/improvekit/)

[Translate “ImproveAB: A/B Testing” into your language.](https://translate.wordpress.org/projects/wp-plugins/improveab-ab-testing)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/improveab-ab-testing/),
check out the [SVN repository](https://plugins.svn.wordpress.org/improveab-ab-testing/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/improveab-ab-testing/)
by [RSS](https://plugins.trac.wordpress.org/log/improveab-ab-testing/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

Initial release.

 * Element and section tests on any page builder or theme via a simple CSS class,
   plus full-page URL/redirect split tests – including tests that span two WordPress
   sites or subdomains.
 * Point-and-click (visual) tests: start a test from the front end via the admin
   toolbar, click an element, edit its text (or its inline HTML for formatted elements),
   and start it. A structured element opens with one field per text and per image.
   The toolbar also lists running tests and marks the ones on the current page.
 * Flicker-free, cookieless, cache- and CDN-friendly delivery with no traffic limits;
   all data stays in your own database.
 * Conversion goals: page visit (with a searchable page picker), element click, 
   link click, form submission (Contact Form 7, WPForms, Gravity Forms, Fluent Forms,
   Ninja Forms, Formidable, Forminator, or any plain form), WooCommerce add-to-cart
   and purchase with revenue, scroll depth, time on page and active time.
 * Clear per-variant results (visitors, conversions, conversion rate) with the leader
   highlighted, per-test notes, and a downloadable or emailable plain-text summary.
 * Edit tests safely after creation: names, notes and labels any time; goal and 
   pages with a clear confirmation on live tests; variant URLs while a draft.
 * A scannable dashboard: status filters, pagination, bulk pause / stop / delete,
   metric columns, and a wp-admin dashboard widget of running tests.
 * Sample-size and duration calculator with plain-language guidance, a built-in 
   plain-English guide, and a replayable one-minute intro tour.
 * SEO handling for URL tests, your way: canonical to the original (recommended),
   noindex the variants, or off entirely; the original page is never touched.
 * Privacy-first: no cookies, no third parties, no IP addresses stored with results;
   data is kept on uninstall by default with an optional clean delete.
 * Works per site on WordPress multisite and declares WooCommerce HPOS compatibility.

## Meta

 *  Version **1.0.0**
 *  Last updated **19 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [a/b testing](https://wordpress.org/plugins/tags/ab-testing/)[conversion optimization](https://wordpress.org/plugins/tags/conversion-optimization/)
   [landing page](https://wordpress.org/plugins/tags/landing-page/)[split testing](https://wordpress.org/plugins/tags/split-testing/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/improveab-ab-testing/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/improveab-ab-testing/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/improveab-ab-testing/reviews/)

## Contributors

 *   [ ImproveKit ](https://profiles.wordpress.org/improvekit/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/improveab-ab-testing/)