© 2018


Iterating on a popular feature that is used almost everyday until it fits the needs


One of the main ways for Mobile App Developers (publishers) to monetize their apps, is ads. Avocarrot Exchange offered a great pool of potential advertisers, who wanted to buy mobile in-app traffic. Publishers only had to integrate Avocarrot Exchange inside their app and they are immidiately available to sell their traffic to advertisers.

In order for publishers to have guaranteed rates on how much dollars they sell their traffic for, Avocarrot Exchange introduced eCPM Floors. eCPM Floors, is a feature that allows publishers to set a minimum amount of dollars (floor) that they sell their traffic for.

Publisher should provide two required values in order to set up a floor:

  • a) Country

  • b) Floor (USD price)

This task could be fairly repetitive since the publisher had the ability to apply different floors for different countries. It made sense from a business perspective too, since each country has a different relevancy to advertisers.

Moreover, this was not an one time off task. Publishers could come back a bunch of times per week to update their floors. For example, a beting app, should apply higher floors (and therefore sell the traffic more dollars) on weekends, where sports are taking place.


We wanted to give an understandable and repetitive-friendly interface. In addition, we wanted to have all the information about the floors available at a glance. We didn’t want to hide any information in a deeper level, because we would potentially add friction points and make the repetitiveness hard to achieve.

Project Avocarrot eCPM Floors


I’ve worked closely with engineers and we’ve implemented and tested out in production this solution. Turns out, it solved our problem. At least partly. Publishers were adding eCPM Floors for countries they wish and they also had a view at a glance on what’s happening.

However, some qualitative feedback came in, especially from support tickets. Publishers were complaining that in most cases, they’ve set up a floor for 10-15 countries at max. Every other country, was irrelevant to them because they had a small amount of traffic - or no traffic at all. So, having all the countries available at a glance was not working the way we thought it would, because it was overwhelming and provided to real value. We checked our analytics and we saw that the average number of countries that have a floor was 11.

Publishers also had comments on the flexibility of the feature. Most of publishers, had more than one placements inside their app. Placement is the place inside the app where the ad is showing. So, they requested the ability to apply different floors to different placements for further control over their traffic.

Iterated solution

We went back to the whiteboard, the whole team, and reflect on our solution and the problem again. Overall, the conceptual steps a publisher had to take in order to create a floor made sense, but the interface had useless information in it. Plus, publishers needed to set up placements too besides the country, before they apply the floor price. So, we thought that we should only show the relevant information to the publisher. Not only that, we should let the publisher decide what information (countries & placements) are relevant to them.

We iterated on another solution which the publisher could add a country, then a placement (or all placements), apply the floor and then.. it’s done. If he set up 1 floor - that’s it. He only sees 1 floor. If he wanted a second country and placement, he’d add another country and placement, set the floor and done. This way, everything would be much more organized and the screen wouldn’t be overwhelming because it would show only relevant information.

I’ve worked closely with the engineer who was working on this feature at the time. We wanted to spec from the start rules, on how this conceptual steps work. The flow for floor creation looked something like this:

  • 1. Clicks “New eCPM Floor” button

  • 2. Chooses country

  • 3. Moves to the next step automatically

  • 4. Chooses placement(s) (the ad inside the app)

  • 5. Moves to the next step automatically

  • 6. Inserts the floor value and clicks enter or “submit”

  • 7. Floor is saved

By default, we decided to apply a minimum floor as a default value for every country and for every placement just to avoid selling traffic for free.

Project Avocarrot eCPM Floors

Iterated impact

We rolled out an iterated version, based on the feedback we had received. The reaction this time was better and the support tickets about this topic stopped. In addition we made the feature much more powerful. We asked some publishers we had an established relationship about the new changes, via intercom messages. The feedback was great there too - it made it easier to process, apply and maintain eCPM Floors. We had also setup a micro-funnel with the 3 steps process that a publisher had to take in order to set up a floor. We didn’t saw any major drop-offs there too.


Multi-dimensional Reporting

Designing the experience for a full-fledged reporting interface


Let's create a loop - and become friends