Affiliate Summit West - Rant…

Affiliate News 6 Comments »

As normal I started to respond to a post on wickedfire about affiliate summit west and got into a rant so I decided to post it here.

First off as I mentioned in my previous post I really like conferences and of all the conferences I’ve been to I like affilaite summit the best. Shawn Collins puts on a great conference and they seem to be getting better all the time.

However this one was a little overwhelming seems as though it had grown to about triple the size of the one last year. However felt like it didn’t grow proportionately. What I mean and what got sooooooo annoying is there were like 50 affiliate networks there. And every single one would constantly try and pitch you with the same crap.

When are these guys going to get a clue and provide a unique value proposition. This is an industry where the good people are good marketers and sales people. There’s nothing that makes me sadder then being pitched the same pitch over and over again. “I’ve never been an affiliate and made good money at it but I’m going to help you make money”.

For example, I was in the elevator with some guy going to a club and he just wanted to hard close me on being an affiliate for his shitty network I’ve never heard of. And they all say the same shit “we have the best payouts”, “we have lots of unique offers”, oh and don’t forget this one

But honestly the affiliate network space is getting more and more crowded and for those of you networks that are reading this FIND A —> UNIQUE <— VALUE PROPOSITION. Because the pushy salesman tactics isn’t going to get you anywhere in my camp And I don’t speak for all affiliates of course but if you’re looking to pull the bigger affiliates into your network give them things, that are going to make them money. As far as I’m concerned every pitch I heard was the same, they say we have unique offers and the highest payouts….. but all I heard if we want your traffic so we can make money off you.

Of course I have my people I’ve worked with for a long time and I don’t plan on changing because I have a comfort level with them and know I’m going to get paid. However if it was me and I was pitching a network I’d come up with things to offer bigger affiliates and make it about them making money and not yourself.

What tools might an affiliate use that you could help supply?

  1. emails
  2. bid data and keywords
  3. subscriptions to bid management systems
  4. use of in house coders
  5. custom built landing pages
  6. access to large networks to use for linking or discounts to paid link systems ( for example if you own a paid link network in addition to an affiliate network then give affiliates discounts )

My point is get creative people. And honestly make it about the affiliates and not about you. I know this is sales 101 but it just irked me walking through hearing the same crap over and over. My guestimation was there was about 1/3 affiliates and 2/3 products, advertisers and networks. Which is great for me but walking through I started to skip the booths that were networks and go to the technology booths because I know the technology is what makes me money.

Well enough ranting, I’ll throw up another post about some of the good stuff that happened when I get the chance but this one got started first. :)

P.S. My pitch would be if I owned a network and someone walked up to my booth I’d say

“I have a way to make you more money, are you interested in talking a little?”
“what monthly budget, volume do you do now?”
“If I could supply you with a couple things that would increase that would you be interested in running traffic to my network?” OF COURSE. < Insert Unique Value Proposition Here >

Affiliate Summit West, For those of you planning on heading out I’ll see you there.

Affiliate News, Affiliate Marketing 5 Comments »

I Know I don’t usually post crap that’s not specifically coding related but I thought I’d reach out and see who of my readers is going to Affiliate Summit West? For those of you who don’t know ASW is a small to medium sized affiliate tradeshow that really caters to the smaller affiliate crowd. When I say “smaller affiliate crowd” I don’t mean income wise. The show is filled with the guys that aren’t giant corporations with 50, 100, 1000 employees. Most of the people you’ll find at this show run their own stuff or have a small team of people but are very close to the action. The only ones this doesn’t apply to are the vendors. I suppose after being around for a while there’s nothing that bothers me more then not being able to talk with the owner or one of the founders of a company. As I’m the owner and founder of my own company. Now I know organizations have to grow and most of the time that means loss of someone that knows everything that’s going on. It also means it’s a lot harder to get in contact with that person that does know what’s going on as they move higher up the food chain. If you’re interested in meeting some of the owners/ceo’s of the companies you promote first hand this is the place to do it. Introduce yourself, shake their hand and tell them how you can make them money. Really an opportunity you’ll never get dealing with an online form for signup and an affiliate manager. I don’t care what people say…. the people at the top do know more, get to them and meet as many as you can.

I’ve had the opportunity to attend both Afilliate Summits last year and AdTech SF. All were worth their weight in gold for helping our affiliate marketing company ( if you could call it that ) move along.. I’ve had some people ask me what was so great about it…. well in my experience it really wasn’t the speakers or the vendors but rather the people walking around that are affiliates just like all of us. If you, like me, don’t know a single sole off line that knows the first thing about “what” affiliate/internet marketing is then your’e not alone. Here’s an opportunity to get around some like minded soles looking to achieve a similar outcome as you. I don’t care what anyone says you’re much better off sharing information and working with other people. You can just get so much more accomplished so much faster when you have 2-3 people thinking about a problem rather then just yourself sitting there. I’m no brain but I think I’m a pretty smart and a creative guy however the people I work with come up with great ideas I never would of thought of and we all benefit. In all honesty it’s hard to know who is legit online and who isn’t. And one way to advance those relationships much faster is to go sit down with people and meet them in person. It’s much easier to get a guage on someone when you’re sitting having a drink with them rather then some forum posts.

Well I’ve said my piece. I hope to see everyone who reads my blog out in Vegas. I’m the 6′5 240lbs fellow with the blackhat on . See you there.

P.S. leave a post on here if you’re going to be there or email me and we’ll see if we can connect. I leave for Brazil tonight and am flying direct to vegas but will be occasionally checking my email while I’m down there. Have a great week. Smaxor

Directtrack PHP Class to pull your stats Automatically - Copeac, CPA Empire

Affiliate Marketing, PHP Automation Coding 4 Comments »

I’ve been having a few people ask me for my class to login and pull stats automatically from the different affiliate networks that run on Directtrack’s Affiliate Solution. In one of my previous posts there’s a section of the db called conversions. Well what that section is for is to put all your conversions in from Directtrack. If you go into your directtrack account and hit advanced stats you’re going to see all your subid’s you’ve passed for conversions. This class does that automatically. You’ll need to write a little script to implement the class. But it’ll save you a bunch of time on trying to figure out how to login, grab and parse your affiliate stats. To use this you’ll also need to setup a writable dir for you cookie files. Because when this script log’s in it needs to save a cookie so that it can tell copeac or cpa empire that you’re a verified user.

<?
class DirectTrack {

private $loggedin;
private $login;
private $password;
private $site;
private $cookiefile;
private $start_day;
private $start_month;
private $start_year;
private $end_day;
private $end_month;
private $end_year;

/**
* logs you into the dt system of your choice
*
* @param string $login - login for directtrack
* @param string $password - password for directtrack
* @param string $site - i.e. affiliates.copeac.com or monetizeit.net
* @param string $cookie - cookie location
*/
public function __construct($login,$password,$site,$cookie){

$this->loggedin = false;
$this->login = null;
$this->password  = null;
$this->site = null;
$$this->cookiefile = null;
$this->start_day = null;
$this->start_month = null;
$this->start_year = null;
$this->end_day = null;
$this->end_month = null;
$this->end_year = null;

$this->setLogin($login);
$this->setPassword($password);
$this->setSite($site);
$this->setCookieLocation($cookie);
$this->DTLogin();

}
/**
* deletes the cookie file on destroying the object remember to unset your object
*
*/
public function __destruct(){
unlink($this->cookiefile);
}

/**
* login setter, url encodes
*
* @param string $login
*/
public function setLogin($login){ $this->login = urlencode($login); }
/**
* password setter, url encodes
*
* @param string $password
*/
public function setPassword($password){ $this->password = urlencode($password);}
/**
* Directtrack site domain setter
*
* @param string $site - i.e. affiliates.copeac.com or monetizeit.net
*/
public function setSite($site){ $this->site = $site;}
/**
* setter for the cookie directory, randomizes the cookie as well incase multi threads are running
* Please make sure your directory is writable
*
* @param string $cookie
*/
public function setCookieLocation($cookie){
$this->cookiefile = $cookie.”/cookie”.rand(11111111,99999999).”.txt”;
}
/**
* getter for the currently generated cookie file location
*
* @return string
*/
public function getCookieLocation(){return $this->cookiefile;}
/**
* Checks the status of being logged In
*
* @return array - array(’msg’=> ”,’status’=>”) 0 logged out, 1 logged in.
*/
public function LoggedInStatus(){
if($this->loggedin){
return array(”msg”=>”Logged In!”,”status”=>1);
}else{
return array(”msg”=>”Not logged in!”,”status”=>0);
}
}
/**
* sets the start date for the report you’re looking for
*
* @param int $day
* @param int $month
* @param int $year
*/
public function setStartDate($day,$month,$year){
$this->start_day = $day;
$this->start_month = $month;
$this->start_year = $year;

}
/**
* sets the ending date for the report you’re looking for
*
* @param int $day
* @param int $month
* @param int $year
*/
public function setEndDate($day,$month,$year){
$this->end_day = $day;
$this->end_month = $month;
$this->end_year = $year;

}
/**
* Combo function which gets the advanced report from direct track that has all the
* specific sub-id data then parses it into a multi dimensional array
*
* @return array - array[line][fields]
*/
public function AdvancedStats(){

if(!$this->loggedin){
$this->DTLogin();
}

$stat_page = $this->DTfetchAdvancedStats();
return $this->csv2array($stat_page);

}
/**
* extends AdvnacedStats, and then inserts the data into the db
*
* @return array - advanced stats array incase you want it for something else
*/
public function AdvancedStats2DB(){
$stats = $this->AdvancedStats();
$this->DBconversionInsert($stats);
return $stats;

}
/**
* gets totals based on account for dates set
*
*/
public function Totals(){
$csv = $this->DTfetchTotals();
return $this->csv2array($csv);
}
/**
* NOT COMPLETE
* -Needs the regex to work properly
* -paging for sites that have multiple pages of results
*
* @return array
*/
public function AllOffers(){
$campaign_page = $this->DTfetchAllCamapigns();

$regex_sections = “/<\/a><\/td>.+?program_id=(\d*)&.+?\’>(.+?)<.+?top\’>\$*(.+?)/*<*.+?’>(.+?)<.+?’>(.+?)</s”;
preg_match_all($regex_sections,$campaign_page,$matches);

foreach($matches[0] as $section){
echo “<br><br>$section<br><br>”;
//get section name
$regex_section = “/Category: (.+?)</”;
preg_match($regex_section,$section,$match);
$section_name = “<b>”.$match[1].”</b>”;

$regex_offers = “/program_id=(\d*)&/s”;
preg_match_all($regex_offers,$section,$matches);
var_dump($matches);
exit;

$offers = array();
$sets = 0;
foreach ($matches as $data){

if($sets != 0){
$i = 0;
foreach ($data as $offer_data){

$offers[$i][] = $offer_data;
$i++;
}
}
$sets++;
exit;
}
array_unshift($offers,$section_name);
var_dump($offers);
}
return $offers;
exit;

}
//// Private //////

/**
* the function that logs into your directtrack account
*
* @return string - curl output
*/
private function DTLogin(){

$url = “https://$this->site/index.html”;
$post = “DL_AUTH_USERNAME=$this->login&DL_AUTH_PASSWORD=$this->password”;

$ch = new CurlPost($url,$post);
$ch->setCookie($this->cookiefile);
$ch->SSL();
$c_out = $ch->execute();
unset($ch);
if(1){ //parse for successful login
$this->loggedin = true;
}
return $c_out;
}
/**
* gets the advanced stats once logged in
*
* @return string - curl output - csv format
*/
private function DTfetchAdvancedStats(){

$url = “https://$this->site/partners/monthly_affiliate_stats.html?program_id=0&affiliate_stats_start_month=$this->start_month&affiliate_stats_start_day=$this->start_day&affiliate_stats_start_year=$this->start_year&affiliate_stats_end_month=$this->end_month&affiliate_stats_end_day=$this->end_day&affiliate_stats_end_year=$this->end_year&breakdown=cumulative&get_lead_info=Download+Optional+Info”;

$ch = new CurlGet($url);
$ch->useCookie($this->cookiefile);
$ch->SSL();
$curl_stats = $ch->execute();
unset($ch);
return $curl_stats;
}
/**
* breaks csv data into a multi-dim array with array[line][fields]
*
* @param string $curl_data - csv from advanced page
* @return array - multi-dim array[line][fields]
*/
private function csv2array($curl_data){

$return = array();
//lines to array
$stats = explode(”\n”,trim($curl_data));

foreach($stats as $line){
//fields to array
$fields = explode(”,”,trim($line));
$record = array();
foreach($fields as $field){
$record[] = trim($field);
}
$return[] = $record;
}
return $return;
}
/**
* takes the multi-dim array from DTparseAdvancedStats and inserts it into a db
*
* @param array $stats
*/
private function DBconversionInsert($stats){

$count = 0;
foreach($stats as $row){
if($count != 0){

//assignments
$click_id        = trim($row[2]);
$source         = $this->site;
$date             = $this->_ChangeDateFormat($row[0]);
$campaign        = addslashes(trim($row[1]));
$campaignID     = trim($row[3]);
$transactionID    = trim($row[4]);
$lineitemID        = trim($row[5]);
$commission     = $this->_CleanCommission($row[6]);

$sql = “INSERT INTO `conversions` (`click_id`,`source`,`date`,`campaign`,`campiagnID`,`transactionID`,`lineitemID`,`commission`) VALUES (’$click_id’,'$source’,'$date’,'$campaign’,'$campaignID’,'$transactionID’,'$lineitemID’,'$commission’)”;

//echo “$sql<br>”;
if(!strpos($click_id,”blogs”))
{
mysql_query($sql);
}
//if(mysql_error()){ echo mysql_error().”\n”; }

}
$count ++;
}
}
/**
* gets the totals for all sales by campaign
*
* @return string - curl output
*/
private function DTfetchTotals(){

$url = “https://$this->site/partners/monthly_affiliate_stats.html?program_id=0&affiliate_stats_start_month=$this->start_month&affiliate_stats_start_day=$this->start_day&affiliate_stats_start_year=$this->start_year&affiliate_stats_end_month=$this->end_month&affiliate_stats_end_day=$this->end_day&affiliate_stats_end_year=$this->end_year&breakdown=cumulative&get_csv=1″;

$ch = new CurlGet($url);
$ch->useCookie($this->cookiefile);
$ch->SSL();
$curl_stats = $ch->execute();
unset($ch);
return $curl_stats;
}
/**
* once logged in curl to get the campaigns
*
* @return string - curl page
*/
private function DTfetchAllCamapigns(){
$url = “https://$this->site/partners/search_program_categories.html”;

$ch = new CurlGet($url);
$ch->useCookie($this->cookiefile);
$ch->SSL();
$curl_stats = $ch->execute();
unset($ch);
return $curl_stats;
}

// private functions
private function _ChangeDateFormat($date)
{
$parts = explode(”/”,$date);
$date = $parts[2].”-”.$parts[1].”-”.$parts[0];
//echo $date.”<br>”;
return $date;
}
private function _CleanCommission($dollar)
{
return str_ireplace(”$”,”",$dollar);
}
}

// THIS IS HOW YOU USE THE CLASS

//$cookieDir = “cookies”;
//$dt = new DirectTrack(’my@email.com’,'password’,'copec.com’,$cookieDir);
//$dt->setStartDate(1,6,2007);
//$dt->setEndDate(18,6,2007);
//var_dump($dt->LoggedInStatus());
//echo $dt->getCookieLocation();
//var_dump($dt->AdvancedStats());
//var_dump($dt->Stats2DB());
//var_dump($dt->Totals());
//var_dump($dt->AllOffers());
//unset($dt);

?>

P.S. Sorry for the crappy display of the code. Unlike Uberaffiliate I don’t make money from my blog so it doesn’t get that much attention. :D