Home > General > Affiliate Marketing Forum

[Tutorial] Split Testing Landing Page Elements with P202 (13)


07-05-2011 06:59 PM #1 bbrock32 (Administrator)
[Tutorial] Split Testing Landing Page Elements with P202

DISCLAIMER : This post is intended for advanced users or users with some programming background. If it looks like arabic to you, don't worry. You don't need this to get a profitable campaign. Also if you want to split test the easy way just copy the same page multiple times and change only the elements you want to split test.

As you guys might have heard a million times , one of the most important things an affiliate has to do is to split test.

You will ask, what should I split test?

The answer is very simple , EVERYTHING!

You should split test the headline , call to action , hero shot , colors , adding sound , adding javascript alerts , exit pops etc etc.

If you don't do that you are definitively leaving money on the table.

Now unfortunately none of the popular tracking scripts on the market has an easy split testing module built in.

That's the reason why I have "hacked" my own solution that uses P202's c1..c4 extra tokens.

With this method you can split test as many elements as you want at the same time , but I don't suggest testing more than 2 at the same time , unless you are sending tons of traffic to your landing page.

It requires some php on your landing page , but I promise it's not impossible even for someone that has no php knowledge at all.

So here is a step by step guide how to do it :

1 – First step is to grab your links for your lp from P202.

It should look something like this

Code:
http://domain.com/lp/index.php?t202id=1234&t202kw=test
Now let's say you have a landing page that looks like this :

HTML Code:
<html>
	<head><title>Title</title></head>
	<body>
		<h1>My Headline 1</h1>
		<img scr=”pic1.jpg” />
	</bod>
</html>
and you want to split test 2 different headlines.

You will have to rotate between two links that will be :

Code:
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=0
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=1
You can use affexpert's rotator or any php script you want.

You add one variable ( c1 to c4 ) for every element you want to test.

In this case we want to test only the headline , so we will use only the c1 variable

Also , since you will split test only 2 different headlines you will use two values for c1 , 0 and 1.

If you were to split test 3 different headlines , you would use 0, 1 and 2.

So links in that case would be :
Code:
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=0
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=1
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=2
Anyway , here are the changes we should do to the landing page.

First make sure the page has the .php extension. If it ends in .html just change that to .php

The page will have to look like this :

[PHP]<?php
$c1=@$_GET['c1'];
$c2=@$_GET['c2'];
$c3=@$_GET['c3'];
$c4=@$_GET['c4'];
?>
<html>
<head><title>Title</title></head>
<body>
<?
if($c1==0){
?>
<h1>My Headline 1</h1>
<?
}
?>
<?
if($c1==1){
?>
<h1>My Headline 2</h1>
<?
}
?>
<img scr=”pic1.jpg” />
</body>
</html>
[/PHP]

Now let me explain what all this means.

First , you have to put this code on the top of every page you want to split test elements :

[PHP]<?php
$c1=@$_GET['c1'];
$c2=@$_GET['c2'];
$c3=@$_GET['c3'];
$c4=@$_GET['c4'];
?>[/PHP]

Then , for every variation of elements you want to split test you put this code before the element :

[PHP]<?
if($c1==0){
?>[/PHP]

after that you put the variation like :

HTML Code:
<h1>My Headline 1</h1>
and after that you put this code :

[PHP]<?
}
?>[/PHP]

You can repeat this for any variation you want to add , you have just to increase the c1 value.

So to split test 3 headlines , code would be :

[PHP]<html>
<head><title>Title</title></head>
<body>
<?
if($c1==0){
?>
<h1>My Headline 1</h1>
<?
}
?>
<?
if($c1==1){
?>
<h1>My Headline 2</h1>
<?
}
?>
<?
if($c1==2){
?>
<h1>My Headline 3</h1>
<?
}
?>
<img scr=”pic1.jpg” />
</body>
</html>
[/PHP]
Now , if you want to split test two headlines and two images links to rotate would be 4 , like below :

Code:
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=0&c2=0
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=0&c2=1
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=1&c2=0
http://domain.com/lp/index.php?t202id=1234&t202kw=test&c1=1&c2=1

So you give each variable ( c1 , c2 ) two different values ( 1 and 0 ) .

That makes 4 variations in total.

The landing page code would look like below :


[PHP]<?php
$c1=@$_GET['c1'];
$c2=@$_GET['c2'];
$c3=@$_GET['c3'];
$c4=@$_GET['c4'];
?>
<html>
<head><title>Title</title></head>
<body>
<?
if($c1==0){
?>
<h1>My Headline 1</h1>
<?
}
?>
<?
if($c1==1){
?>
<h1>My Headline 2</h1>
<?
}
?>

<?
if($c2==0){
?>
<img scr=”pic1.jpg” />
<?
}
?>

<?
if($c2==1){
?>
<img scr=”pic2.jpg” />
<?
}
?>

</body>
</html> [/PHP]

Now that was the hard part. The cool thing now is you can see every metric in proser broken down at variation level and even at keyword level.

You have to go to Group Overview and group by the c1..c4 variables.

If you are split testing only one element , hence using only the c1 variable , you would group by c1 only.

If you are split testing 2 elements , using c1 and c2 , you would group by c1 and by c2.

Here is how it looks like for one of my campaigns split testing only 1 element.



Feel free to post any questions here , I'm sure you will have some


07-05-2011 07:13 PM #2 2022 (Member)

damn bro. your headline number 1 killed all your headlines


07-05-2011 07:18 PM #3 bbrock32 (Administrator)

Power of split testing


07-05-2011 08:06 PM #4 strikepackage (Member)

So, if we are limited by p202 to only 4 variable testing, does that mean there is a need for a multi-variable testing platform? I loves me some code


07-05-2011 08:13 PM #5 bbrock32 (Administrator)

Well , with p202 you can split test up to 4 different page elements at the same time.

However there is no limit on how many variations of each one you can test.

Assuming the minimum ( 2 variations for each element ) you would be split testing 16 variations at the same time.

If you wanted to do more next would be split testing 32 elements , which honestly I think it's not worth doing.

Even split testing 16 elements at the same time is still unreasonable unless you are doing HUGE traffic.

More than that I feel there is a need for an easier split testing tool integrated into prosper ( think drag and drop solution ) .


07-06-2011 01:15 AM #6 vidivo (Member)

Can you show us the code to generate different pictures based on the c=2 variable for example or if we just want to split test pictures instead? Or is it as easy as just putting the image in the space where the headline went?

Thanks, this is awesome! Ive been just making different landing pages but this is going to make things a lot easier and faster!


07-06-2011 03:07 AM #7 stackman (Administrator)

Dirty proof of split testing benefits, can't ever stress it enough.


07-06-2011 08:32 AM #8 bbrock32 (Administrator)

Quote Originally Posted by vidivo View Post
Can you show us the code to generate different pictures based on the c=2 variable for example or if we just want to split test pictures instead? Or is it as easy as just putting the image in the space where the headline went?

Thanks, this is awesome! Ive been just making different landing pages but this is going to make things a lot easier and faster!
Yeah it's that easy. I posted that above too :


Code:
<?php
$c1=@$_GET['c1'];
$c2=@$_GET['c2'];
$c3=@$_GET['c3'];
$c4=@$_GET['c4'];
?>
<html>
    <head><title>Title</title></head>
    <body>
    <?
    if($c1==0){
    ?>
        <h1>My Headline 1</h1>
    <?
    }
    ?>
    <?
    if($c1==1){
    ?>
        <h1>My Headline 2</h1>
    <?
    }
    ?>    

    <?
    if($c2==0){
    ?>
        <img scr=”pic1.jpg” />
    <?
    }
    ?>

    <?
    if($c2==1){
    ?>
        <img scr=”pic2.jpg” />
    <?
    }
    ?>

    </body>
</html>


07-06-2011 04:40 PM #9 z6marketing (Member)

It's worth noting that you can use this with CPVLab too, just slightly differently. You set up extra tokens in CPVLab like this:

Name: token
URL Append: &token=
Parameter: &

and then from the page call it like this:

<?php
$token=@$_GET['token'];
?>

and insert it using:

<?=$token?>

So if your url for CPVLab was

Code:
www.trackingdomain.com/base.php?c=117&key=aaaasd3q4341324e923145b4e6e7bdcc&token=Test%20Token
and your page had "Welcome to my page, <?=$token?>!"

The user would see "Welcome to my page, Test Token!"

Big props to Besmir for showing me how to do this in Prosper cause if it weren't for that I never would have bothered to figure out the token passing in CPVLab. I'm currently using this on my new landers to pass the age and state from PoF to the lander so I can make it say "There are hot girls in (state) that ONLY date (age) year old men!" or whatever. It's pretty nifty and it takes up a LOT less space than a geoip script to display the state, plus you get the benefit of the age showing too. Not using a geoip script reduces load time (at least in my testing so far) and PoF's state tag tends to be more accurate. I say this because PoF shows what the user entered as their state, whereas the geoip goes off your IP which isn't always right. Before I got this commercial cable internet connection, my old cablemodem used to say "Edison, NJ" for my location when I'd hit a site with a Geoip script on it. Now it says "Brooklyn, NY." Neither of which are correct, I assure you (although Edison is a lot closer, for what it's worth.)

edit: to pass that info from PoF, you'd use two tokens, one for age and one for state. Then when you set up your campaigns in PoF, in your tracking url add the tokens like this:

&state={state:default}&age={age:default}

obviously replace default with something like "The USA" for state (so if there's no state it doesn't have a blank area on your lander) and an age range you're targeting for the default age. If I'm targeting 30-35 year old men I'd put {age:30-35} so it would show "Girls want to meet 30-35 year old men from The USA" instead of "girls want to meet default year old men from default" if the variable spit out the defaults for some reason.


07-06-2011 10:29 PM #10 snowverkill (Member)

I've done something similar with P202 to automatically rotate landing pages without changing the inbound links. Basically I grab a link from P202 pointing to my LP, then create "additional LPs" with the same URL and name them like "version0", "version1", etc. Then you just do something like this:

$num = rand(0,1); // for testing 2 LPs

$versions = array(
0 => ('first element to test', 'second element to test','<script> tag given to you by P202 for version 0'),
1 => ('first element to test', 'second element to test','<script> tag given to you by P202 for version 1'),
)

And then in your page code, just call the elements from the array where appropriate, using the $num variable to specify which version to pull, and then echo the last element in the array (the <script> that tells P202 which LP received the click) at the bottom. When you go to look at your LP data you'll see data broken out for each of your LP versions as if you had created totally different LPs, when really the only difference is whatever elements you want to split test on the one LP you've actually built.

The result is the ability to split test an LP on the fly without ever changing the inbound link. Granted, you won't get data for each "c" token this way, but if you just want to test one thing (e.g. an image) on an LP, this is an easy way to do it.


05-16-2012 02:10 PM #11 julien (Member)

Hey Besmir, this is simply brilliant!
Easy and quick, and everything hosted at the same place (prosper), I couldn't dream of something better.
I'm about to test 40 offers on my LP, you just made me save 1 day of landing page design and tracking!
I was about to buy LP Genius, which if I understand well works on a similar level, but I'm going to use your trick instead.

Thank you for your tutorial.

I'll add 2 easy things for my use:
1) adding 'else = default' in the loop (with a 'switch' fonction), so if someone hit my url without any C parameter filled it won't be a problem
2) using random parameters, like c1=ejd8j7, in order to prevent smart copycats that could test c1=0, c1=1, c1=2, c1=3 etc. to see what I have in mind

Perfect timing to me, I'm so glad I found this thread


05-16-2012 02:26 PM #12 bbrock32 (Administrator)

Hey Julien,

basically this is like the poor's man landing page genius :P

Only advantage it has is that you are 100% anonymous while with LP Genius you have to whitelist your domain for it to work.


05-18-2012 08:41 PM #13 lng (Member)

Lpg is totally worth the price. He may even give you a discount for being STM


Home > General > Affiliate Marketing Forum