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.
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
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
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.
- Under External Domain Testing, add
yoursite.comand save. - 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:
| Extra | Where to switch it on |
|---|---|
| Auto-updates | Plugins: click Enable auto-updates next to each plugin. Dashboard → Updates: enable automatic updates for all new versions of WordPress. |
| Heatmaps, analytics and replays | AB 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:
| Setting | Choose |
|---|---|
| Operating system | Ubuntu 24.04 (plain, no extras) |
| Memory | 2 GB RAMGo for 4 GB if your site gets over 100,000 visits a month. Every visitor sends tiny tracking pings to this server. |
| Disk | 20 GB or more |
| Access | Full root access over SSH |
Hosts we like
Friendliest dashboard, with a terminal right in your browser. Great for first-timers.
Visit Hostinger →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:
| Type | Name | Value |
|---|---|---|
| A | abst | Your 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 this | For |
|---|---|
yoursite.com | The website you want to test |
abst.yoursite.com | The name you made in step 2 |
YOUR-KEY | Your 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:
| Flag | What it adds |
|---|---|
--journeys | Heatmaps, page analytics and session replays for your website, so you can see where people click and scroll |
--mcp | Lets 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
One line of code for your website
2
Point-and-click test editor, opened on your homepage
3
Your dashboard for tests, results and heatmaps
4
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:
| Platform | Where to paste it |
|---|---|
| Webflow | Site settings → Custom code → Head code |
| Shopify | Online Store → Themes → Edit code → theme.liquid, just before </head> |
| Squarespace | Settings → Advanced → Code Injection → Header |
| Wix | Settings → Custom code → Add code → Head, all pages |
| Hand-built HTML | Inside <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.
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 use | Do this |
|---|---|
| Claude Code | Copy the claude mcp add … line it prints and run it on your own computer |
| Claude Desktop, Cursor, Windsurf, Cline | Paste 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 to | Run this |
|---|---|
| See my embed snippet again | docker compose exec app abst info |
| Get a fresh Magic editor linkLinks expire after about 2 hours | docker compose exec app abst editor-link |
| Show my AI assistant setup again | docker 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 extra | Run 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 see | Do this |
|---|---|
| Path A: no embed snippet on Tracking & Privacy | Add 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 errors | Your 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 all | Your host may block ports 80 and 443. Find “Firewall” in your host’s dashboard and allow both. |
| Tests don’t show on my site | Make 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.