This article applies to Nelio A/B testing versions prior to 5.0.

If you are looking for documentation for our newest version, please bookmark

Nelio A/B Testing has three main components:

  • The WordPress plugin. Nelio A/B Testing extends your WordPress site introducing A/B Testing functionalities. Once installed, you'll be able to A/B-test your pages, posts, themes, widgets, menus, and so on, creating alternative content and discovering which version converts the best. The plugin seamlessly integrates into WordPress user interface and offers all the tools you need from within the Dashboard.
  • The Tracking JavaScript. This script is responsible of requesting the appropriate content from your server, tracking the activity of your visitors as they browse your website, and sending any relevant information to Nelio Cloud Servers.
  • Nelio Cloud Servers. During the execution of an A/B experiment, there's a lot of tracking information to be stored and processed. This information is not sent to your WordPress server, but our Cloud. We're responsible of collecting, analyzing, and processing all tracking information and generating the results you will see in your Dashboard. This way, we take care of all the workload these tasks entail and your server can focus on its main purpose: serving your website rapidly and reliably.

What happens when a user accesses a page in my site?

Whenever a user accesses a page /foo in your site, this is what happens:

  1. The user types the address (or accesses it by clicking on a link).

  2. Your WordPress server returns the page Foo. This page includes two scripts:
    • Information about your running experiments (a script served by Nelio Cloud)
    • Nelio's Tracking JavaScript, served by your server (called tracking.min.js)

  3. As the page is being loaded, our tracking script performs a few checks. In particular, it tests whether cookies are enabled or not and whether user participates in the experiments or she's excluded from them. If everything's OK, it checks whether the page Foo is under test using the information available in the first script.

  4. If Foo is under test, then we need to load some alternative content. A page is under test is, for instance, there's a page experiment for that page, or if there's a global experiment, such as a Menu experiment, that requires an alternative menu. When that occurs, the script will redirect your visitor to the new address, which is basically the original address with some additional GET params. These GET params specify the alternative that user is supposed to see (remember that some users will see the original content, whilst others will see the alternative). Our tracking script is responsible of randomly deciding which alternative has to be shown to a particular user.

  5. Your WordPress server receives the new request with a set of GET params that tell our plugin that alternative content has to be loaded. Using the information they provide, our plugin returns one alternative or the other. Thus, for instance, if the param is nab=0 then the original content has to be returned, whereas if it's nab=2 then alternative 2 has to be returned.

  6. Again, this (alternative) page contains Nelio's scripts. Once your visitor is seeing the appropriate alternative (if any at all, as we've seen in step 4), our tracking script starts tracking your visitor's activity. This includes sending relevant information such as "this user has seen this page" (in order to compute page views and conversions), "this user has clicked on this element and there's an experiment monitoring these click actions", "this user has submitted a form", or "the heatmap of this user is the following".

  7. Also, and depending on your specific settings, our tracking script will hide the GET params added in step 4 (if any).

What are the advantages of using the previous alternative loading scheme?

We've tested different approaches for loading alternative content and this one has proven to be the most efficient:

  • Alternative assignation is performed in your visitor's browser, thus reducing the workload of your own server, who's no longer responsible of assigning alternatives to your visitors.
  • The pages returned in steps 1 and 5 can be cached by your server. Again, this reduces the workload of your server and ensures a rapid response.
  • All tracking information is sent from your visitor's browser directly to Nelio Cloud Servers, without going through your own server.

Customizing Nelio A/B Testing Behavior

You can tweak the behavior of our plugin by modifying the Plugin Behavior options in the Settings screen.

A/B GET Params (Read More)

Nelio A/B Testing loads alternative content by adding a few parameters in your URL. In principle, this parameters are visible to your visitors, but you can decide whether they should be hidden or not and, if they should, which ones.

  • Show All Params. All A/B Testing parameters will be shown.
  • Hide Context Params. If you're on a tested page (and/or if you're running a global experiment, such as a Widget or a Menu experiment), the URL will contain a parameter nab that specifies the alternative to be loaded (and/or another parameter nabx for the global experiment).
  • Hide All Params. Once the alternative content has been loaded, all A/B Testing params are removed from the URL.

Test Mode (Read More)

When running more than one experiment with multiple alternatives each one, the total number of combinations grows exponentially, which may degrade your server's performance. To overcome this issue, enable the option «Group Experiments and Divide Visitors». If enabled, the plugin creates one or more experiment groups, each of which will test a few experiments only. When a visitor accesses your website, she only participates in the experiments of one of the available groups.

Site-wide Consistency (Read More)

When a page or post experiment is created, alternative titles, contents, featured images, and excerpts may be defined. Where and when is this alternative content loaded?

  • Force Consistency. It ensures that your users see the same alternative version all along the site. If enabled, all pages will be loading the alternative information defined in your experiments. Note this setting does not consume more quota.
  • Tested Elements Only. If consistency is not forced, alternative content will only be loaded when accessing the tested page or post. Thus, for instance, it is possible that a user sees the original title and featured image of a tested post in a widget, but a different, alternative title and featured image when she accesses that very same post (which may be confusing).

External Page Actions (Read More)

When using external page conversion actions, a conversion should be counted when users access the external page. However, Nelio A/B Testing has no access to pages outside WordPress, which means it has to count a conversion when a user clicks on the link that will take the user to that page. Whenever such a click occurs, Nelio A/B Testing will detect it and send the tracking information to Nelio's servers (which takes a few miliseconds). If you want the website to be as responsive as possible, select «Force New Tab». This way, links will be opened in a new tab and the synchronization process will occur in the original tab. If, on the other hand, you don't want pages to be opened in new tabs, select «Do Not Force New Tab».

Heatmap Tracking (Read More)

By default, Nelio A/B Testing takes into account the elements that are below your users' cursor to track and build heatmaps and clickmaps. This offers a higher accuracy when Heatmaps are displayed, because hot spots are based on elements and not pages. Unfortunately, this approach may not work if, for instance, your page loads elements dynamically or HTML element IDs are randomly generated. If this is your case, track Heatmaps using the body tag.