Xander
Javascript multivariant and AB testing using Google Analytics and Math.rand()
Install / Use
/learn @255BITS/XanderREADME
Xander
Multivariate Testing in JavaScript made easy. Also see xander.io, the pro version of xander.
Principles:
- Multivariate testing should be simple for developers and designers
- Variants should be cheap to add and simple to view
- Analytics should be useful and available for review
- If you are using xander.io, your website should get better over time without manual intervention.
Library Requirements
- xander.io (optional)
- Google Analytics
- jQuery
Browser support:
- Internet Explorer 6 and above
- Firefox 2 and above
- All modern browsers
Installation
- Include xander-client javascript file
CDN
<script src='http://cdn.xander.io/xander-1.0.js'></script>
Usage
Multivariate testing for HTML elements
-
Defining a variant
<div id="callToAction"> <div data-variant="logic" class='red hide'> If you have a website with users, you should be multivariate testing. It's the only way to ensure your changes are actually what users want. </div> <div data-variant="google" class='blue hide'> Multivariate testing is used by Google to optimize their search results. </div> <div data-variant='silly' class='green hide'> You can't multivariate test your life... yet - but now you can easily multivariate test your websites! </div> </div> -
This variant sets up a three way test between logic, google, and silly calls to action variants so we can see which phrasing works best.
-
The data will be available in Google Analytics (or xander.io if you chose to use it)
-
We have a simple hide class that sets 'display: none'. This avoids flicker after the page loads.
Multivariate testing for CSS classes
-
Defining testable CSS classes
<section id='signup' data-css-variants="green blue" /> -
One of the two green or blue classes will be added to your #signup button.
-
Variation reports are based on ids
Goals
Goals are a simple way to track conversions. In Google Analytics they correlate specifically to _trackPageview's.
Defining a goal
<form data-goal="New User" onsubmit='processInfo(); return false'>
<!-- Here's where you could multivariate test the form. -->
<h1> Sign up for our amazing product </h1>
<input type='submit'> Sign up </input>
</form>
Potential Pitfall
Be careful when using cross-domain links that redirect the browser, xander may not get a chance to
fire the goal reached event. This is not a concern if the goal targets a new window.
Technical Details of Goals
Goals in Xander work by binding to an element's jquery click event (or submit event in the case of a form).
If you can't get the goal to trigger - console.log is your friend. Open up your console and you will see some messages from xander when your page is setup and again when a goal is pressed.
If all else fails, you can call:
xander.goalReached("New User");
Verifying your variant test is setup
<!-- #### Step 1 - Verify Goals * use ?showVariants=true in your test URL. * the current variant selected and goals completed this session are shown at the top of the page. * click your goal * watch your goal count increase --- #### Step 2 - verify with Google Analytics -->- Setup your variants and page goal
- Click your page goal
- Log in to Google Analytics
- If you are using Google Analytics and not xander.io, you will likely face a problem where Google Analytics will reflect your test data. This can be filtered in google analytics, or just use http://xander.io.
Rerolling a page
You can now call a rerollVariants method to get a whole new version of your site.
xander.reroll(); // reroll all CSS and content variants
xander.reroll($("#choices")); // reroll the #choices variant
Event Handlers
onVariantChosen(callback)
variant is an object that looks like:
{
'section id' : 'chosen variant'
}
Usage
This allows you to execute custom javascript for specific variants
xander.onVariantChosen(function(variant) {
if (variant.signup === 'red-button') {
// Execute custom javascript for the red button variant of signup
}
});
Commercial offerings
If you like xander, but don't like the sample distribution using Math.rand() - or don't like having to review your variant's performance, check out xander.io . It's a SAAS that uses 90/10 testing to figure out your best performing variant (with a friendly UI).
Note, xander inserts a tracking pixel on your site in the event that you would like to upgrade. To disable this, add this after your script include.
<script>
xander.disableTrackingPixel()
</script>
Related Work
- ABalytics
- Send us a message if there's anything else that should be listed.
Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
