Adjet

Split Testing Ads in WordPress: A/B Tests with Adjet

Whether an ad works is decided not by your taste but by its click-through rate, and that can be measured instead of guessed. Here's how to set up a clean A/B test with Adjet's rotation groups in ten minutes, and how to read the results correctly.

Two ad variants side by side with their click-through rates Watch it instead: a complete split test in under four minutes 3:41 minutes, shown in Hafenstudios Ads 2.5.0 · One click, and only then, loads content from YouTube

There are two kinds of publishers: those who believe they know their best ad, and those who have measured it. The difference is regularly in the double digits, measured in percent of ad revenue. Which imagery, which copy, which placement gets clicked is astonishingly hard to predict; even experienced marketers barely beat chance in A/B comparisons. The good news: a clean ad split test requires neither an optimization tool with triple-digit monthly fees nor a statistics degree. An ad plugin with rotation and counting is enough.

How split testing works in Adjet

In Adjet, a split test isn't a separate module with its own learning curve, but a property every ad block has anyway: the rotation group. Every block has two fields: a freely chosen group name and a weight. All blocks with the same group name form a rotation: on every page view, Adjet serves one of them, randomly and proportionally to the weighting. Two blocks with weights 1 and 1 give a 50/50 split, and that is exactly an A/B test.

Step by step

  1. Create variant A: create a normal ad block, say your existing AdSense or house-ad banner. In the "Rotation / group" field, assign a name, for example incontent, weight 1.
  2. Create variant B: duplicate the block and change exactly one thing: a different image, a different headline, or a different format. Same group name incontent, weight 1 as well.
  3. Embed the group: instead of the individual blocks, put the group shortcode in place: [adjet_ad_group name="incontent"]. From now on the variants rotate 50/50.
  4. Let it measure: Adjet counts impressions and clicks per block, locally in your WordPress, without external services. The statistics page shows the click-through rate (CTR) per ad block.
  5. Decide: once enough impressions have accumulated (more on that in a moment), the variant with the better CTR wins. Deactivate the loser, create the next challenger variant, keep testing.

If you run AdSense, this way you're not testing the Google ad itself but the block's format and placement, which moves revenue considerably too, as our post How much does AdSense pay? shows. The basics of embedding are covered in our AdSense setup guide.

The three rules for reliable results

1. One variable per test

If variant B has a different image and different copy and a different color, in the end you only know that B performs better, but not why. The next banner starts from zero again. Change exactly one thing per test, and every result becomes knowledge that carries over to future ads.

2. Don't decide too early

After 200 impressions, one variant always looks like the clear winner, and that is noise, not a result. Hafenstudios Ads therefore draws the line at 500 impressions per variant. That is the factory setting and it can be changed; below it the plugin names no winner and says it is still collecting data. How much more you need depends on the gap: a clear lead is settled at 500, while small CTR differences (below roughly a fifth in relative terms) need four-figure numbers. Every test should run a full week anyway, so that day-of-week effects even out. Whoever checks the statistics daily and stops at the first lead is not testing, they are flipping a coin with extra steps.

3. Simultaneously, not one after the other

"Banner A ran in June, banner B in July, B did better" is not a test: between June and July lie holidays, weather, and the news cycle. That's exactly why rotation is the right mechanism: both variants see the same period, the same visitor mix, the same randomness. Only then is the difference between the variants the only difference.

What the Pro version adds

Rotation groups, weighting, and the block statistics are already in the free version, which is available as Hafenstudios Ads in the official WordPress directory. Adjet Pro takes over the evaluation: it identifies the winner by CTR, backs the difference with a statistical test including a confidence figure, shows the uplift, and lets you deactivate the losing variants at the click of a button. Since version 2.1.0, variants also rotate cache-safely in automatic placements. If you get stuck on what the next challenger should look like, Pro can draft variant suggestions from the existing block at the push of a button; that runs on your own Anthropic API key, so it happens when you ask for it, never on its own. On top come the other Pro features like overlays, triggers, and adblock messaging. That last one is a topic of its own, which we've quantified in our post on adblock statistics.

In short: Two blocks, one group name, one shortcode: that's all an ad A/B test in Adjet is. The art isn't in the tool but in the discipline: one variable, enough impressions, simultaneous delivery. Stick to that, and you stop guessing.

Ads that have to prove themselves

Adjet: ad management with rotation groups, local statistics, and scheduling, all GDPR-friendly without external services. With Pro, Adjet identifies the winner by CTR, shows the uplift, and deactivates the losers at the click of a button.

See Adjet

Frequently asked questions

Do I need a dedicated testing tool for ad A/B tests?

No. For ads, an ad plugin with rotation and click statistics is enough: the rotation provides the random, simultaneous delivery, the statistics provide the comparison. External testing suites only pay off once you want to test entire page layouts.

How many impressions does a meaningful test need?

The plugin starts calculating at 500 impressions per variant, which is the factory setting and can be changed. For clear differences that is enough; close results need more data and a second week of runtime. Every test should run a full week so that day-of-week effects even out.

Can I test three or more variants at the same time?

Yes. A rotation group in Adjet can contain any number of blocks; the weighting controls the distribution. Just keep in mind: the more variants, the longer it takes until each one has enough impressions for a reliable verdict.

Does split testing also work with AdSense?

Yes, with one caveat: what you test is the format, size, and placement of the ad block, not the creative of the Google ad, since Google picks that. But placement tests in particular move AdSense revenue considerably.

Are the click statistics GDPR-compliant?

Adjet counts impressions and clicks locally in your WordPress database, without external services, without cookies for the counting, and without profiling individual visitors. That's more data-minimal than any external tracking solution.

Back to blog A post by hafenstudios