Wouldn’t it be great if every profitable affiliate campaign you ever launched… stayed profitable?
If I could give the elixir of life to my more successful brainfarts, you wouldn’t be reading this. Because I wouldn’t be writing this.
I would be sidling along a Caribbean beach, a Pina Colada in one hand, my cock in the other. The laptop and STM a distant memory.
Sustaining your profit margins is key to affiliate success. The most volatile component of those margins? Your banner CTR.
Here's a few tips for sustaining your banner CTRs and squeaking extra life out of a winning campaign:
Run Ads in Batches
For a long time I have been championing the idea of running ads in a series of alternating batches:
Mondays, Wednesdays, Fridays, Sundays: Ad Group A
Tuesdays, Thursdays, Saturdays: Ad Group B
This is something I found effective on POF, and I have ported it across to most adult traffic sources that I work with.
It's less effective on Facebook where momentum is so integral to a successful campaign (and lowering your costs).
You have to keep your ads fresh, especially on adult. That means creating new ad batches regularly. I aim for at least 3 times per week.
All the while, increasing the number of ads is useless unless you learn something from the data. When uploading ads, do you choose the first new banner that pops up on your Spy Tool, or do you look at your existing data and attempt to distill the winning ideas from the duds?
You spend a lot of money on your data.
Use it to make smarter decisions about the shit you upload.
Avoid Exposing the Aces
Your best ad, left to run on its own, will quickly lose its mojo.
If you have a couple of ace creatives that are trumping everything else, count yourself lucky. And protect them.
Try to run batches of at least 5 ads.
Split your top performing ads evenly across each batch, then mix in a couple of proven performers, and test 2 to 3 ideas that are completely different. Outliers.
You never know when you might stumble across an ad that outperforms your top doggy creative.
But if you don't test new themes, the best you're going to salvage is another affiliate's sloppy seconds.
Cull the Weakest Days
Why are affiliates obsessed with running campaigns 24/7?
So many of us believe that we have to be earning a fixed sum every day, with no breaks in-between, or we're not doing it right.
That is flawed thinking.
You can run a campaign for 3 days a week (Friday to Sunday) and make more profit than you would with the same campaign running 24/7.
Yes, you will concede revenue. But to quote some smartarse who knew something about business:
Revenue is vanity. Profit is sanity.
At the very least, if you're going to run campaigns 24/7, be sure to batch the hell out of them.
Tip: For the worst converting days, don't be afraid to test ads that offset the usual drop with a unique appeal:
Weekday offers, "Mums Looking For A Fuck This Thursday", etc etc.
Another tip: If you find yourself stuck with a low cap, say 100 leads per day, ask your affiliate manager if you can come to an agreement where you'll only send traffic for 3 days per week, in exchange for more cap on those days.
Flip Your Images Horizontally

This trick gets you two converting ads for the price of one.
To the user with one eye on his balls, a horizontally flipped banner registers as a different image.
It is particularly effective when used with a different colour background, or a slight headline tweak.
Mix Up Your Terminology
How many ways can you describe a shag, a mother, and a dick?
Variations of these three simple nouns make up, Christ, at least 60% of my vocabulary.
Mix up your terminology, flip your banners and change the colour schemes.
By doing so, you can turn 1 profitable ad in to 6 or 7 with relative ease (and minimal time spent grazing Bing Images for titty with your apartment on lockdown).
Finally…
Create and Maintain PSD Pictureboards
I run a lot of banners that are required to be 300×250.
Given that banners are so frequently divided horizontally, I find it helpful to store click-and-draggable 'halves' in large PSD files.
In one file, I have 150×250 images. The meat of a good ad.
In another file, I have 300×250 colour canvases with proven headlines and ad copy. The potatoes.
Instead of wasting forever searching for images, resizing them, and then realising that - shit - I didn’t save my original file as a PSD, so I can’t edit the text and now need to completely recreate it – yeah, you know how it feels – pictureboard PSDs allow me to churn out fresh creatives by the bucketload.
It’s one of the very rare occasions in affiliate marketing where you can actually put that quadruple-screen to good use.
I keep a stack of them in My Documents and spend Sundays praying to Lucifer that nobody ever finds them. Probably a terrible idea.
Nice post man!
Using different terminology is a big one I use a lot. You can say the same idea but with completely different tones, which is all you need to keep small text ads fresh.
It's strange to say, but I can't remember the last time I have day parted. I'm talking years. Mind you I haven't run dating for years. But you have pushed me to know go and check out my hour stats, gonna see if there are any dead hours. Churr churr!
Hey Finch, this post is gold!
When you say "Cull the Weakest Days" do you mean for days that aren't profitable? Or do you mean cull the days that barely generate ROI since this will help reduce banner blindness and by the weekend (when conversions are better) you'll see even better conversions and ROI as opposed to running it daily?
Long winded question but you know what I mean 
"In one file, I have 150×250 images. The meat of a good ad.
In another file, I have 300×250 colour canvases with proven headlines and ad copy. The potatoes."
Hey Finch,
when you say file, is this all actually 1 psd file for images and 1 psd file for headlines and ad copy? or is it 1 folder for images and 1 for headlines/canvases? Please elaborate, bc i dont get how you can store more than 1 image in a psd file or more than 1 canvas?
right now i have 1 folder for images and 1 folder for psd files each psd file with a different headline/background/adcopy.... Your way sounds easier, but i dont get it, please elaborate!
Thanks!
Great post! I didn't think about flipping the ads horizontally. The tip about the PSD pictureboards isn't to clear to me either so would love if you could elaborate! I'm always looking for ways to speed things up 
#target photoshop
var debug=false;
var Layer = function(){}
var ArtLayer = function(){}
var Document = function(){}
var LayerSet = function(){}
File.prototype.partname = function()
{
var dotPosition=this.displayName.lastIndexOf(".");
if(dotPosition>0)
return this.displayName.substring(0,dotPosition);
else return this.displayName;
}
File.prototype.extension = function()
{
var result="";
var dotPosition=this.displayName.lastIndexOf(".");
if(dotPosition!=-1) result= this.displayName.substring(dotPosition+1).toLowerCase();
return result;
}
String.prototype.padZero=function(totalLength)
{
var result=this;
while(result.length<totalLength) result="0"+result;
return result;
}
Folder.prototype.extension = function()
{
return "";
}
String.prototype.trim = function() {
return this.replace(/^[\s]+|[\s]+$/g, '');
};
Document.prototype.findLayerSetByName=function(layerSetName)
{
//doesn't look into subsets!
var result;
for(var i=0;i<this.layerSets.length;i++)
{
if(this.layerSets[i].name.trim().toLowerCase().indexOf(layerSetName.toLowerCase())==0)
return this.layerSets[i];
}
return result;
}
Document.prototype.findLayerSetByNotName=function(layerSetName)
{
//doesn't look into subsets!
var result;
for(var i=0;i<this.layerSets.length;i++)
{
if(this.layerSets[i].name.trim().toLowerCase().indexOf(layerSetName.toLowerCase())==-1)
return this.layerSets[i];
}
return result;
}
var myPngSaveOptions = new PNGSaveOptions();
myPngSaveOptions.interlaced=false;
do{
if(!app.documents.length) {alert("No active document!");break;}
var visibility=[];
try{
var docRef=app.activeDocument;
//save state
var overlayGroup = docRef.findLayerSetByName("overlay");
var picturesGroup = docRef.findLayerSetByNotName("overlay");
var targetFolder = Folder(docRef.fullName.parent+"/"+picturesGroup.name);
if(!targetFolder.exists) targetFolder.create();
var executionCancelled = false;
var myProgressBarWindow = new Window('palette', 'Progress', [150, 150, 600, 300]);
var myProgressBar = myProgressBarWindow.add('progressbar', [20, 35, 410, 60], 0, picturesGroup.layers.length*2);
var progressCancelButton = myProgressBarWindow.add('button', [200, 80, 270, 100], 'Cancel');
progressCancelButton.onClick = function()
{
alert("Execution cancelled by user");
executionCancelled = true;
}
myProgressBar.value=0;
myProgressBarWindow.show();
picturesGroup.visible = true;
var visibilty = [];
log("preparing");
for(var j=0;j<picturesGroup.layers.length;j++)
{
myProgressBar.value++;
myProgressBar.hide();
myProgressBar.show();
myProgressBarWindow.update();
visibility.push(picturesGroup.layers[j].visible);
picturesGroup.layers[j].visible=false;
}
//processing
for(var j=0;j<picturesGroup.layers.length;j++)
if(!executionCancelled){
log(j);
var currentLayer=picturesGroup.layers[j];
currentLayer.visible=true;
var currName = docRef.fullName.partname() + "_" + picturesGroup.name+"_"+(j+1).toString().padZero(picturesGroup.layers.length.toString().length)+".png";
var targetFile = File(targetFolder+"/"+currName);
docRef.saveAs(targetFile, myPngSaveOptions,true,Extension.LOWERCASE);
currentLayer.visible=false;
}
for(var j=0;j<picturesGroup.layers.length;j++)
picturesGroup.layers[j].visible=visibility[j];
myProgressBarWindow.close();
}catch(e){alert(e)};
}while(false);
function log(msg)
{
if(debug)
{
$.writeln("----");
$.writeln(msg);
try{$.writeln(msg.toSource());}catch(e){}
$.writeln("----");
}
}
So, this works great for jpgs... Can anyone enlighten me how to do it for gifs? How do i keep the animation? I've tried it and when i copy over i can only get 1 frame...
Ok, i basically taught myself photoshop so im not familar with all the terms... Where is the layer panel? If you could do a screenshot or something that would be great!
Sorry, I edited my post after trying it for myself and seeing that it just opens the gif in another tab... The layer panel is the one on the bottom right where all your layers are listed.
yeah, i keep getting just one frame...
You can import GIFs as frames; file -> import -> video frames to layers. Some versions don't see the GIF format. so you need to start typing your file name in the load window and PS will show it to be imported.