So this is a cleaned up version of my follow along that I posted on Afflift that details my journey using Zeropark’s Native traffic to run a weight loss offer in Turkey. I thought I would reshare it here for anyone that didn’t see it on Afflift.
Update: This post also got featured by Zeropark here: https://zeropark.com/blog/native-in-app-ads-case-study/
Post #1 – May 12, 2020
Step #1 – Research The Traffic Source
I knew what I was working with Zeropark Native so the best plan was to research and understand the traffic source. Therefore I started by asking my Zeropark account manager for some basic information on their native traffic.
She revealed that currently all their native traffic essentially comes from an app called “letgo” (https://www.letgo.com/). Ads are shown like this:
Naturally the next thing I did was Google this app since I had no idea what it does. The first result I got when I Google them was:
Okay looking at the title and glancing through reviews it is clearly a site for people to buy and sell used items (duh!). So we are slowly building out a profile of our potential visitors.
Next I wanted to know what type of traffic they have. So I cheated a bit here by looking at Voluum DSP (which is of course associated with Zeropark) and saw that they have Letgo on there too and filtered out by geo:
Clearly most of their traffic comes from Turkey and the US. Given that this is a mobile app the traffic should be 100% mobile. And a bit more digging revealed that there were more Android than iOS users.
Next I also glanced through Zeropark’s guidelines: https://doc.zeropark.com/en/inapp_native_guidelines.html which was pretty generic stuff but good for me to know before I choose my offer (in the next step).
In summary in this step we found out:
- Traffic comes from Letgo and so is In App Native Traffic
- Users mostly looking to buy/sell second hand things
- Turkey and US traffic
- 100% Mobile
Step #2 – Finding An Offer
So we know a bit about our potential visitors at this point. Hence I started brainstorming potential offers that could match the traffic since we know that if…
They were a seller they:
- Could be in need of money
- Don’t want to waste things
- Will have some money (assuming they successfully sell things)
They were a buyer they:
- Could be looking to buy things
- Are looking for bargains (second hand)
I also asked my ZP account manager what verticals they see people run and she said that people run “ecomm, diet, gaming, antivirus, dating” (sounds like pretty much anything). So with all the above in mind I put together verticals I wanted to work on and felt made sense with the traffic:
Next I messaged a few of my affiliate managers to see what offers they got in Turkey and the US in these verticals and whether there was anything that was interesting i.e. popular. This took a while as there were tons of offers for the US but none for Turkey in most places.
In the end I chose an offer for Nutra in Turkey to start off with because:
- Turkey is the #1 geo for this traffic source
- Traffic for Turkey was a lot cheaper than US, I could get a lot of data for less money
- The nutra offer was the only thing I could find for Turkey that made sense and was within Zeropark’s ad guidelines.
So with the geo + offer decided, I will now take a break before I update for the next installment where I talk about creatives (I also need to renew my spy tools).
Post #2 – May 13, 2020
Step #3 – Creative Creation
Okay so I’ve renewed my license at Anstrex (which if you can you can get here with my referral link ). Reason why I use Anstrex is:
- Cheaper than Adplexity
- Has native + push which is primarily what I work on
Finding Banners with Anstrex
Normally when I spin up spy tools I start by filtering it out for the geo I want (in this case Turkey) afterwards I will have a browse and look at what the most popular ads are in the last year. You can do this by filtering:
- 5 – 365 Days (I don’t want anything running less than 5 days since those are just new ads)
- Decreasing ad strength (this is Anstrex’ term for historical popularity, so I want the most popular first)
I usually have a look to see what people are running here. In this case it is the usual stuff: nutra, dating, ecommerce, getting rich (guessing crypto).
Afterwards I also want to check what is “trending” which in Anstrex translates to their “ad gravity” so I usually sort by decreasing ad gravity. Currently the most popular ads seem to be dating + ecomm (with some nutra).
Whilst I’m doing all this I pick out around 10 weight loss ads I can find and download them with their tool which gives me an organized folder and I can now review it like this:
Okay so we got banners but now we need landers.
Side Note: I sometimes also check the most popular global ads in the vertical I’m running just to get a sense of what is working globally. I didn’t do this here because I’ve run weight loss before.
Spying on Landers
Going back to the list just now I click through some of the ads to see what people are running. Keep in mind that some of these landers are cloaked and since I’m too lazy to turn on my VPN at this point I just browse through screenshots within Anstrex just to get a sense of what people are running. For example I saw this:
This is a pretty standard nutra page that I’ve seen around in other languages so am not surprised it is in Turkish as well. Anyways I continue browsing and confirm that pretty much everyone is running advertorials and just to be sure I turn my VPN on to check a few (so that I’m not just seeing the cloaked versions) but by the end I’m convinced that I need to get an advertorial style lander.
Normally at this point I would have compiled a list of all the landers I like. Generally I try to get different style of landers such as:
- Male vs Female
- Authority Experts (people in lab coats etc.) vs Average Person Blog Type
So that you have a variety. Then I would get this cleaned up myself (though admittedly nowadays I just send it off to my “web guy”) and add some of my own custom snippets to the page to improve it slightly or track it better.
However because I need to start running traffic soon for this follow along (since it is already mid May) I will use the ready made landers (they have a few) that were provided by the offer which I know are pretty similar to what other people are running. Anyways on to set up.
Side Note: I always recommend building out your own landers (unless you are running direct linking) because you have more control. At minimum you can put your own push collection code on the lander because a lot of the time networks will put their own code in the lander they provide you and not pay you for the push subscriptions.
Step #4 – Setting It All Up
I’m going to skip the boring steps of setting it up into the tracker etc. since I’m sure someone else has covered it on this forum. But I would note this is a COD offer which means that there are at minimum 2 stages we want to track:
- When someone leaves their phone number on the offer page aka HOLD
- When someone actually confirms their order via phone aka LEAD
I have run COD before so my Voluum tracker is set up to track this already. If people really want to know how to do this I can probably discuss it in a separate post. Anyways I’ve set it all up and it is ready to go:
But as I am on Zeropark setting it up I run into this issue:
Bit of an odd dimension size so what I’ll do is get my VA to make the changes and I’ll update again once I have it all set up with traffic running.
Post #3 — May 17, 2020
So since I didn’t update for a few days I had enough data to do 2 rounds of updates, here is what I did:
Step #5 – Running Camp + First Look
Okay so my VA sent me back the ads and I set them up in Zeropark. Honestly there isn’t much to set since most of the features were not available at this point. For example:
You can see in the above most of it is greyed out (because they only have 1 source and it doesn’t allow a lot of these options). So I went ahead and set up fairly broad settings with frequency at 12 hour, a daily budget of $30 and used their recommended bid as I wanted to make sure everything was correct first before increasing spend.
After running traffic on my first 2 days I learnt:
- Zeropark’s Native platform does not integrate with Voluum (like how its pop and push does). My solution was to treat it like another traffic source and integrate the tokens manually. This meant the first day’s data was slightly off.
- Their daily budget spend was not evenly distributed, so what I got was a very lumpy spend (i.e. I’d spend all my money in the first few hours once budgets reset)
- I got quite a few hold conversions which meant that at least things were working but I’ll need to wait a few days to see whether these actually end up becoming real conversions (lead).
- I’m paying CPV. It meant that my ads needed to have high iCTR (impression CTR).
- There is no widget/placement targeting on their platform at the moment.
- Cost updating needed to be done mainly (because CPV platforms can’t integrate with trackers most of the time)
First Look on 13/14 May:
- Revenue: $10
- Cost: $38
- ROI: -75%
- Hold: 26
- Lead: 2
- Approval Rate: 7.7% (this is the number of lead vs hold)
So after getting results for 2 days (think it was mainly one until my camp stopped due to the daily limit), I’m confident everything is working properly, results may feel uninspiring (-75% ROI) but actually there are positives and actionable observations:
Conversion Rates For Holds Are Decent
Given that I haven’t optimized anything (lander or banners), this means people are leaving their numbers so the funnel is working. So I expect optimization on lander/banners would see a noticeable improvement.
Approval Rate Below Average
Issue here is that approval rates are much lower than the network average (which is 20-25%). I suspect that we could see delayed conversions (which is typical for COD) later on and in which case even if we can hit 15% that would be a significant improvement already.
In addition the time you run COD offers is important because call centers don’t work 24 hours. Hence my current issue with lumpy spend could be affecting this (as well as which day of the week etc.). This can be improved once I get more data and increase my daily spend.
So at the current recommended bid I was already using up my whole budget within a few hours. So it proves there is sufficient traffic in this source which means that there is room to scale if I can figure out the best funnel + targeting.
Based upon all the observations above I made the following improvements:
- Cut out the bottom 50% iCTR creatives and added new ones similar to the top performers (since I’m bidding CPV, so this is important)
- Increased my daily budget gradually and dropped my bid in order to try and utilize 100% of my budget spread across all hours of the day.
- Cut out the bottom 33% of the landers I was using (based upon hold conversion rate and lander CTR) since I don’t have enough lead conversion data.
Step #6 – Second Glance
Okay so based upon my initial changes, performance saw an uptick:
- Revenue: $160
- Cost: $191
- ROI: -16%
- Hold: 173
- Lead: 32
- Approval Rate: 18%
Given results are as of 17th May, I expect more conversions to come in for the 16th May once call centers are able to make those phone calls (also a Saturday/Sunday probably means there are more delays in conversions). I was also finally able to get 1 full day (24 hour) of ad spend without any hiccups though I’ve still gone ahead to increase my budget to $150 just to make sure I don’t get throttled anywhere.
For now there isn’t any quick changes I can make for further improvements. Instead I want to layout my action plan for this campaign:
- Replicate the pre-landing pages I’m running so I can track it in more detail (remember I’m just using my network’s pre-landing pages) and make minor adjustments.
- Build out a working pipeline with my team to continually update banner/creatives (to avoid banner blindness).
- Figure out which hours are the best to target
- Start split testing OS and OS versions in different campaigns.
The goal would ideally be to reach profitability by end of the month once I’ve done all the above steps and then look to expand outside zeropark (since I can’t scale this much more on just Zeropark and I don’t think it can do much better than high double digit to low triple digits a day).
Also I think I need to set a hard loss on this (so I don’t over commit) and given that each payout is $5 and I’m already seeing conversions I think a $200 loss (40x payout) would be a good place to pause traffic and re-evaluate whether to continue or not.
Anyways given that there isn’t much more I can do in the meanwhile I probably won’t update until I have sufficient data to make meaningful changes.
Post #4 — May 24, 2020
Okay so due to the end of Ramadan the call centers will not be working on 23 – 26 May so I’ve had to pause my campaigns so I thought it would be a good time to provide an update on things.
Latest results 13 – 24 May:
- Revenue: $829
- Cost: $813.73
- Profit: +$15.27
- Hold: 581
- Lead: 152
- Approval Rate: 26% (this is the number of lead vs hold)
Day by day breakdown:
As you can see my results have seen a dip after the success I had initially. Think this is a common problem that everyone has and I am no exception. I mean we all hope that we can just scale things to $xxx a day with consistent ROI and profits but things never work out as hoped. Normally newer affiliates would be frustrated at this point (which is normal) but given that this has happened countless times to me by now then I’m a bit more immune to it and instead try to focus on how to fix the issue. So let us dive into the diagnostics.
Step #7 – Diagnostics Of The Campaign
Note: I’m writing this as I go it is literally a step by step of my thoughts hence it can be a bit convoluted at times.
So looking at the data I see two glaring issues:
- CPV is the same throughout
- CV is dropping over time
Let us tackle the easy one first:
Why is CPV the same throughout?
This is likely attributed to the fact that I had to do a manual cost update (because ZP Native does not integrate with Voluum yet) and being the lazy person that I am, I just added the overall cost since inception in everytime to do the cost update (instead of day by day update). As a result the overall cost was divided by the views which meant the number was always the same.
However this means my CPV data is inaccurate because I am paying for impressions not views and looking at the formula:
CPV in Voluum = Cost Per Impression (this is my bid) x Ad CTR
Okay so that explains the weird numbers but I still need to have an idea of what my CPV is or at least whether it has been going up or down so what I did was compare the first half of my spend’s data with the second half my spend’s data on Zeropark (because it is a difficult to pull the data day by day for some reason):
13 – 18 May:
19 – 24 May:
Ah… so my CTR dropped from 0.87% to 0.59% which means I’m actually paying more for my CPV (assuming my bid hasn’t changed). Some of the reasons that I think could have caused this:
- Banner blindness
- Day of the week impact (it is only a 5 day period for each)
- Holiday impact (Remember it was reaching the end of Ramadan and I am not sure what kind of impact this has)
But out of the above I can only really control one thing which is banner blindness. So it means that I need to:
Add new creatives
Why is CV Dropping Over Time?
This is probably the million dollar question at this point. Since it is clear that my CV has been dropping over time and honestly most of the time you can only guess as to what is the cause of it and try to implement improvements to see if it helps. So far my guesses are:
Self explanatory; only so many people will buy the product. But given that there are 30M impressions daily on this app I don’t think it should hit this point yet that early (I’ve run around 7-8M impressions).
Ripping/Copying My Ads
People running the same ads/offer as me. I mean I did show my results on Afflift and it isn’t hard to backward engineer what I am doing. However given that this is the nature of the business I won’t spend time thinking about this.
Again not sure how this impacts exactly but I assume call center workers won’t be as motivated to work ahead of a long holiday or maybe people they are calling or not as readily available. So results could be a bit skewed. Also need to note that delayed conversions are now less likely to convert (because sometimes you have people trying to
Again my focus is on what I can control and at this moment in time I can only try to avoid offer saturation by building more landing pages or running different offer pages (but same offer). As a result what I will do is:
Build my own landing pages and look for different offer pages (but same offer)
Few More Observations
Okay so I’m getting lazy explaining everything at this point but there are a few more things I noticed as I continued through:
- Approval rates are back to the network average of around 25% or so. Which could have meant that I was just running hot on my first few days.
- Day parting probably makes sense given that call centers only work certain hours of the day. Though I prefer to make this decision at the final optimization stage so as not to limit my traffic.
No real action plan based upon the above (since I intend to do day parting at the end) so lets skip along to what I need to do.
My To Do List
Okay so to summarize I will:
- Create new banners for this ad
- Put together new landing pages based upon what I know works
- Find new offer pages to cycle through
After completing the above, I will then restart my traffic again (as call centers reopen) to see if there is improvement and then provide my final update for this follow along which will fit nicely with the end of the month (and end of the contest). I intend to provide my closing thoughts, some insight into scaling this campaign (on Zeropark and outside of Zeropark).
Post #5 — May 31, 2020
Step #FINAL – Last Update
Seeing as today is the last day of the month I thought it would be the perfect time to wrap things up. Firstly let us look at the overall stats so far since inception:
Latest results 13 – 31 May:
- Revenue: $1,188.78
- Cost: $1,099.39
- Profit: $19.39
- Hold: 798
- Lead: 199
- Approval Rate: 25%
I will start off with an update based upon my to do list last time:
- I found out different ad images can have very different CTRs which means if you are paying for CPV you need to be on top of running the best ads for sure. A snapshot of data (I’ve been optimizing it based upon CTR and eCPA):
- I am still working on optimizing the best landers at the moment but so far there is no noticeable difference in my bottom line.
- I didn’t implement different offer pages because I was already cycling through landing pages so I did not want to further increase the variables I was testing for.
Okay, so with over $1,000 spend (which is 150x the offer payout) I need to ask myself: Will I continue running this campaign?
Given that I am already profitable (barely), then yes, of course I will!
In which case my current plan of action for this campaign on Zeropark is digging into the details and seeing whether:
- I can improve landing page and ad creatives
- Day parting or weekday parting can work
- OS version targeting
If you look carefully at the screenshot I shared, 1-2 of the new ads show promise as they are hitting a CTR of 2%+ (compared to an average of 0.7%). This could be an anomaly but if not this could be significant to my bottomline.
More importantly I think this campaign shows a lot of promise because I am only running this on 1 traffic source (which only has 1 placement) and with minimal optimization done initially and it was able to do slightly better than break even.
Hence I think if I give it another month or two and test it across different traffic sources, I would expect this campaign to bring in a healthy return. But as with testing new things we would need to expect to sustain short term losses, which I am okay to do.
For now I don’t have too much to share beyond this as I have been busy setting up infrastructure to run native traffic (as this will be a new focus of mine).
Extra Insight: Zeropark Native vs Voluum DSP
For those of you that have a Voluum DSP account. You will realize that you can actually bid for traffic on “Letgo” which is the source that Zeropark Native offers.
Being the self proclaimed savvy affiliate that I am, I duplicated my campaiang to run on Voluum DSP because they operated using CPM pricing whereas Zeropark used CPV pricing. What this meant was that I could place a bid of $0.11 CPM on Voluum which was equivalent to $0.00011 on Zeropark (this isn’t possible on Zeropark because minimum increment was $0.0001) and so should in theory outbid everyone bidding $0.0001.
But before you get excited, what happened was that I actually got very little traffic on Voluum DSP compared to Zeropark Native even though my bid was effectively higher (I even used $0.13 CPM to be safe).
My guess is because Voluum DSP buys their traffic from Zeropark and since they are effectively different services, I assume there are probably rebrokering or tech factors that go on which affect the amount of traffic you can get from “Letgo”.
Final Closing Remark
Overall I am happy with the result of my follow along as it hopefully showed a realistic outcome (though probably one of the better examples) of how affiliate marketing campaigns can look. All too often people are fixated on the great examples of how someone started a campaign and it quickly made them $xxx/day when in fact that is the exception and not the norm. Even if you search around the follow alongs on this forum you’ll more likely find neglected follow alongs than the amazing success stories. Often it takes a lot of trial and error before your campaign can reach that consistent $xxx/day dollar mark.
Also I started the follow along with the intention to share the thought behind each step I took for running and optimizing my campaign as all too often I was seeing newer affiliates look for the holy grail answer of “test offer for 3x payout on each placement then keep optimizing for 7 days and you will reach $xxx/day” when I think you need to understand the reason behind these “rule of thumbs”. Hopefully I have managed to do this and given people some food for thought.
Happy to answer any questions or engage in a friendly discussion in the following comments or feel free to provide any feedback you have for my follow along (or even my writing). For now this will be my final official update for the follow along.