Self-Host AB Split Test on Any Website

AB Split Test has an external domain mode, so it’s built for testing on other domains. Follow the steps below to set up AB Split Test as your own private split test server that you can use anywhere.

10 min
on WordPress hosting you already have
20 min
on any server, with Docker
1 line
of code on your website
100%
open source under the hood

No per-visitor bills. No data shipped off to somebody else’s cloud. Just WordPress and other open-source software doing their thing on a server you control. Your website stays exactly where it is (Webflow, Shopify, Squarespace, plain HTML, whatever) and simply loads one script.

Pick your path

Two ways to get there

Path A · No terminal

Use WordPress hosting you already have

cPanel, Plesk, GridPane, RunCloud or any WordPress host. Make a fresh site, upload the plugin, flip one setting. All in your browser.

Start path A ↓

Path B · Docker

No WordPress? Use Docker

Don’t have WordPress? Run this on your existing server or a new one. HTTPS, updates and AI assistant access are set up for you.

Start path B ↓

Both paths end in the same place: one line of code on your website, and a private dashboard for your tests.

Before you start

Grab these three things. Then swap yoursite.com for your real domain everywhere in this guide.

  • Your AB Split Test licence key, from My Account
  • Your website’s domain, like yoursite.com
  • A login for your WordPress hosting (path A) or your domain’s DNS (path B)

Path A

Use your WordPress hosting

About 10 minutes, all in your browser. No terminal needed.

Step 1 of 4

Create a new WordPress site

In your hosting panel, add a new WordPress site on its own subdomain, like abst.yoursite.com, and switch on HTTPS (most hosts call it SSL or Let’s Encrypt). Keep it separate from your main site.

Done when https://abst.yoursite.com opens a fresh WordPress site with a padlock in the address bar.

Step 2 of 4

Install AB Split Test

Download the plugin zip from My Account → Downloads. In your new site’s admin, go to Plugins → Add New Plugin → Upload Plugin, choose the zip, then Install Now and Activate. Then add your licence key under AB Split Test → Settings.

Done when you can see AB Split Test in your admin menu.

Step 3 of 4

Switch on external domain mode

Go to AB Split Test → Settings → Tracking & Privacy.

  1. Under External Domain Testing, add yoursite.com and save.
  2. Set Primary site to An external site, pick yoursite.com, and save again.

Done when the embed snippet for yoursite.com shows on that screen. Copy it somewhere safe.

Step 4 of 4

Switch on the extras (optional)

Path B sets these up for you. Here they’re a few clicks each:

ExtraWhere to switch it on
Auto-updatesPlugins: click Enable auto-updates next to each plugin. Dashboard → Updates: enable automatic updates for all new versions of WordPress.
Heatmaps, analytics and replaysAB Split Test → Settings → Heatmaps & Replays: turn on User Journey Tracking. Then on Tracking & Privacy, tick Heatmaps, Page Analytics & Session Replays on external domains.
AI assistants (MCP)AB Split Test → Settings → Developer, then follow the MCP Integration Guide.

Done? Jump to the finish line.


Path B

No WordPress? Use Docker

Don’t have WordPress? Run this on your existing server or a new one. About 20 minutes. Copy, paste, done.

Step 1 of 5

Get a server

Already have a Linux server you can log in to as root? Use it and skip to step 2. It just needs ports 80 and 443 free (so not one that already runs a website).

Need a new one? Get a small VPS: a little computer you rent by the month. Normal shared hosting won’t cut it, because you need to install Docker. Pick these options when you order:

SettingChoose
Operating systemUbuntu 24.04 (plain, no extras)
Memory2 GB RAMGo for 4 GB if your site gets over 100,000 visits a month. Every visitor sends tiny tracking pings to this server.
Disk20 GB or more
AccessFull root access over SSH

Hosts we like

Hostinger VPS

Friendliest dashboard, with a terminal right in your browser. Great for first-timers.

Visit Hostinger →
RackNerd

Budget-friendly, with regular deals on yearly plans.

Visit RackNerd →
Contabo

Loads of memory for the money. Data centres in Europe, the US and Asia.

Visit Contabo →

Some of these are affiliate links. If you sign up through them we may earn a commission, at no extra cost to you. It helps keep AB Split Test independent.

Happy with your current host?

Lots of WordPress hosts sell a VPS too. Copy this and send it to them:

“Hi! I’d like a VPS running plain Ubuntu 24.04 with at least 2 GB RAM, 20 GB disk and root SSH access, so I can install Docker. Ports 80 and 443 need to be open. Do you offer this, and how much is it?”

Done when you have your server’s IP address (like 203.0.113.10) and its root password.

Step 2 of 5

Give your server a name

Your split-testing server gets its own address, like abst.yoursite.com. Log in to wherever your domain’s DNS lives and add one record:

TypeNameValue
AabstYour server’s IP address

On Cloudflare? Set the cloud icon to grey (“DNS only”). Your server gets its own free HTTPS certificate in step 5.

Done when dnschecker.org shows your server’s IP for abst.yoursite.com. It usually takes 5 to 30 minutes, so carry on with step 3 while you wait.

Step 3 of 5

Log in to your server

Open Terminal on a Mac or PowerShell on Windows. Type this with your server’s IP and press Enter:

ssh [email protected]

Type yes if it asks about a fingerprint, then paste your root password. It stays invisible while you type. That’s normal.

Rather not use a terminal app? Most hosts have a Browser terminal or Console button in their dashboard. Click it and you’re in.

Done when the last line looks like root@yourserver:~#

Step 4 of 5

Install Docker

Docker runs your platform in a neat, sealed box, so it never clashes with anything else. Paste these one at a time:

apt update && apt install -y git curl unzip
curl -fsSL https://get.docker.com | sh

Give it 1 to 3 minutes, then check:

docker --version

Done when you see something like Docker version 28.x.

Step 5 of 5

Install AB Split Test

This is the big one. Two commands build your whole split-testing platform. First, download the installer:

git clone https://github.com/SiteSpot/abst-docker.git && cd abst-docker

Then run it with your own details swapped in:

./install.sh \
  --domain yoursite.com \
  --hostname abst.yoursite.com \
  --licence YOUR-KEY \
  --journeys \
  --mcp
Swap thisFor
yoursite.comThe website you want to test
abst.yoursite.comThe name you made in step 2
YOUR-KEYYour AB Split Test licence key

The last two lines are optional extras. They’re switched on in the command above because they’re worth having, but you don’t need either one:

FlagWhat it adds
--journeysHeatmaps, page analytics and session replays for your website, so you can see where people click and scroll
--mcpLets AI assistants like Claude and Cursor create tests and check results for youHow it works

Don’t want one? Delete its line before you run the command. If you delete the last line, also delete the \ at the end of the line above it. You can always add a flag later by running the command again with it on the end.

Grab a coffee. In 2 to 5 minutes it prints what you’ll want to keep:

1

Embed snippet

One line of code for your website

2

Magic editor link

Point-and-click test editor, opened on your homepage

3

Admin login

Your dashboard for tests, results and heatmaps

4

AI assistant setup

Ready to paste into Claude or Cursor, if you kept --mcp

HTTPS is handled for you with a free Let’s Encrypt certificate. Your licence gets activated for this server, and it doesn’t use up an extra site.

It keeps itself up to date, too. WordPress, AB Split Test and every other plugin update automatically, so there’s nothing to babysit. Rather handle updates yourself? Add --no-auto-updates to the command.

Done when the installer prints your embed snippet. Copy everything it prints into a note somewhere safe, then head to the finish line.


Both paths

The finish line

Two last steps, whichever path you took.

Step 1 of 2

Add the snippet to your website

Paste your embed snippet into the <head> of every page. Here’s where that lives:

PlatformWhere to paste it
WebflowSite settings → Custom code → Head code
ShopifyOnline Store → Themes → Edit code → theme.liquid, just before </head>
SquarespaceSettings → Advanced → Code Injection → Header
WixSettings → Custom code → Add code → Head, all pages
Hand-built HTMLInside <head> on every page, or your shared header file

Done when your site is saved and republished with the snippet in place.

Step 2 of 2

Launch your first test

Open the Magic editor: on path B, use the link the installer printed. On path A, create a new test in your AB Split Test dashboard and pick the Magic (point-and-click) option. Your homepage loads with the editor on top. Click any headline, button or image, write a new version, pick a goal and save.

Check results any time in your dashboard at https://abst.yoursite.com/wp-admin/.

You did it

You’re now running your own split-testing platform.

Your tests, results and visitor data all live on your server. Every page on your site is now fair game for a better headline. Not sure what to test first? Watch how a cross-domain test comes together.

Watch the walkthrough

Bonus: AI assistants

Let your AI assistant run your tests

Your server can talk to Claude, Cursor, Windsurf and other AI assistants over MCP, the standard way AI tools connect to apps. Once it’s connected, you set up tests and check results just by asking.

On path B with --mcp? You’re already set up: the installer printed your AI assistant setup. Took it out? Run the step 5 command again with --mcp on the end. Nothing else changes.

./install.sh \
  --domain yoursite.com \
  --hostname abst.yoursite.com \
  --licence YOUR-KEY \
  --mcp

It installs the open-source WordPress MCP Adapter, creates a separate abst-mcp login for your assistant, and prints a ready-made setup for your AI tool:

If you useDo this
Claude CodeCopy the claude mcp add … line it prints and run it on your own computer
Claude Desktop, Cursor, Windsurf, ClinePaste the mcpServers block into your tool’s MCP settings, then restart itThese need Node.js on your computer

Then just ask:

Create

“Test three new headlines on my pricing page. Count a click on Buy Now as a conversion.”

Check

“How are my tests doing? Is anything close to a winner?”

Repeat

“Duplicate my best test and run it on the homepage.”

Keep the password safe. It can manage all your tests, just like your admin login. Lost it? docker compose exec app abst mcp shows it again, and abst mcp --reset swaps it for a new one. MCP needs HTTPS, so it won’t run on a local localhost trial.

On path A? Go to AB Split Test → Settings → Developer: it links to the MCP Adapter download and copies the setup for your AI tool. The MCP Integration Guide walks through it and lists every tool your assistant can use.


Path B · Keep for later

Handy commands

For the Docker path. Log in to your server (path B, step 3) and run cd abst-docker first.

I want toRun this
See my embed snippet againdocker compose exec app abst info
Get a fresh Magic editor linkLinks expire after about 2 hoursdocker compose exec app abst editor-link
Show my AI assistant setup againdocker compose exec app abst mcp
Refresh the server softwarePHP, database and HTTPS. WordPress and plugins already update themselves.git pull && ./install.sh --upgrade
Change my domain, or add an extraRun the path B step 5 command again with the new options

Back up your tests and results:

docker compose exec db sh -c 'mariadb-dump -uroot -p"$MARIADB_ROOT_PASSWORD" wordpress' > backup.sql

Troubleshooting

Something not working?

If you seeDo this
Path A: no embed snippet on Tracking & PrivacyAdd yoursite.com under External Domain Testing and save first. The snippet appears after that.
“Docker is not installed”Path B step 4 didn’t finish. Run it again and check docker --version.
HTTPS or certificate errorsYour DNS record isn’t pointing at the server yet. Check dnschecker.org (path B, step 2), wait a few minutes, then re-run the step 5 command.
The page won’t load at allYour host may block ports 80 and 443. Find “Firewall” in your host’s dashboard and allow both.
Tests don’t show on my siteMake sure the snippet is in the <head> of every page, republish, and clear your site’s cache.

Still stuck? Contact support and paste in what the installer printed. We’ll get you running.

Leave a Comment

You must be logged in to post a comment.